<?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>70898</bug_id>
          
          <creation_ts>2011-10-26 02:53:27 -0700</creation_ts>
          <short_desc>Range sliders and spin buttons don&apos;t work with multi-columns</short_desc>
          <delta_ts>2011-12-06 19:55:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsfiddle.net/estelle/5wNxR/1/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73660</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490710</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2011-10-26 02:53:27 -0700</bug_when>
    <thetext>This bug is imported from Chromium http://crbug.com/90128
== Steps ==
1. Create a form with number, range, date, etc input types by using http://jsfiddle.net/
2. Use CSS3 columns to layout the form
3. Try to use the up and down arrows to change the value

== Expected result ==
Form elements should work with the new UI

== Current result ==
Up and down arrows are not clickable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491374</commentid>
    <comment_count>1</comment_count>
      <attachid>112644</attachid>
    <who name="">yosin</who>
    <bug_when>2011-10-27 00:18:15 -0700</bug_when>
    <thetext>Created attachment 112644
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491625</commentid>
    <comment_count>2</comment_count>
      <attachid>112644</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 08:59:37 -0700</bug_when>
    <thetext>Comment on attachment 112644
Patch 1

Attachment 112644 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10226737

New failing tests:
fast/forms/number/spin-in-multi-column.html
fast/events/document-elementFromPoint.html
fast/events/offsetX-offsetY.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492260</commentid>
    <comment_count>3</comment_count>
      <attachid>112818</attachid>
    <who name="">yosin</who>
    <bug_when>2011-10-27 23:16:20 -0700</bug_when>
    <thetext>Created attachment 112818
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492275</commentid>
    <comment_count>4</comment_count>
      <attachid>112818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 23:54:37 -0700</bug_when>
    <thetext>Comment on attachment 112818
Patch 2

Attachment 112818 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10227944

New failing tests:
fast/events/offsetX-offsetY.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492362</commentid>
    <comment_count>5</comment_count>
      <attachid>112842</attachid>
    <who name="">yosin</who>
    <bug_when>2011-10-28 03:17:38 -0700</bug_when>
    <thetext>Created attachment 112842
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492456</commentid>
    <comment_count>6</comment_count>
      <attachid>112842</attachid>
    <who name="">mitz</who>
    <bug_when>2011-10-28 07:56:40 -0700</bug_when>
    <thetext>Comment on attachment 112842
Patch 3

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

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:2596
&gt; +    LayoutSize containerOffset = offsetFromContainer(o, LayoutPoint());

offsetFromContainer() already calls adjustForColumns(). You should just pass the actual point instead of the zero point so that it does the right thing, instead of replicating adjustForColumns() below (your replicated code is also missing the check for the progression axis). All you probably need to do is move the offsetFromContainer() override from RenderBox to RenderBoxModelObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493234</commentid>
    <comment_count>7</comment_count>
    <who name="">yosin</who>
    <bug_when>2011-10-31 03:52:55 -0700</bug_when>
    <thetext>adjustColumns expects logical column coordinate rather than physical column coordinate, terminology may not be common, see below for logical/physical column coordinate:

Physical column Coordinate
+-------+-------+-------+
|       |       |   x   |
+-------+-------+-------+

Logical Column Coordinate
+-------+
|       |
+-------+
|       |
+-------+
|   x   |
+-------+

So, we can&apos;t pass actual point to offsetFromContainer and this patch doesn&apos;t replicate code of adjustColumns.
// I guess this was reason why original code pass LayoutPoint() instead of passing actual point in mapLocalToContainer.

Pass (0, 0) to offsetFromContainer calculates offset with considering progressive axis.

So, I think this patch does right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495827</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-11-03 15:38:34 -0700</bug_when>
    <thetext>I am sorry, my suggestion was wrong! I will take another look at the patch. At the very least, it is missing support for inline-axis column progression, but I will review it again anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495883</commentid>
    <comment_count>9</comment_count>
      <attachid>112842</attachid>
    <who name="">mitz</who>
    <bug_when>2011-11-03 16:46:07 -0700</bug_when>
    <thetext>Comment on attachment 112842
Patch 3

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

It might be better to make this change in two steps, first moving the functions up to RenderBoxModelObject, and then actually fixing the bug.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:2616
&gt; +        ColumnInfo* colInfo = block-&gt;columnInfo();
&gt; +        LayoutPoint point(roundedLayoutPoint(transformState.mappedPoint()));
&gt; +        point -= containerOffset;
&gt; +        size_t colCount = block-&gt;columnCount(colInfo);
&gt; +        for (size_t i = 0; i &lt; colCount; i++) {
&gt; +            LayoutRect colRect = block-&gt;columnRectAt(colInfo, i);
&gt; +            if (colRect.contains(point)) {
&gt; +                if (i) {
&gt; +                    LayoutRect colRect0 = block-&gt;columnRectAt(colInfo, 0);
&gt; +                    if (block-&gt;isHorizontalWritingMode())
&gt; +                        containerOffset.expand(colRect.location().x() - colRect0.location().x(), -colInfo-&gt;columnHeight() * i);
&gt; +                    else
&gt; +                        containerOffset.expand(-colInfo-&gt;desiredColumnWidth() * i, colRect.location().y() - colRect0.location().y());
&gt; +                }
&gt; +                break;
&gt; +            }
&gt; +        }

This logic belongs in a new function in RenderBlock, where hitTestColumns() can share it. In fact, you should factor out the version in hitTestColumns(), because that version correctly accounts for flipped blocks writing modes and for block-axis column progression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496135</commentid>
    <comment_count>10</comment_count>
      <attachid>113642</attachid>
    <who name="">yosin</who>
    <bug_when>2011-11-04 03:55:55 -0700</bug_when>
    <thetext>Created attachment 113642
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509934</commentid>
    <comment_count>11</comment_count>
      <attachid>113642</attachid>
    <who name="">mitz</who>
    <bug_when>2011-11-28 10:31:03 -0800</bug_when>
    <thetext>Comment on attachment 113642
Patch 4

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

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:29
&gt; +#include &quot;ColumnInfo.h&quot;

Is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510529</commentid>
    <comment_count>12</comment_count>
      <attachid>116904</attachid>
    <who name="">yosin</who>
    <bug_when>2011-11-28 23:29:15 -0800</bug_when>
    <thetext>Created attachment 116904
Patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510530</commentid>
    <comment_count>13</comment_count>
    <who name="">yosin</who>
    <bug_when>2011-11-28 23:30:25 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 113642 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113642&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:29
&gt; &gt; +#include &quot;ColumnInfo.h&quot;
&gt; 
&gt; Is this needed?

No, we don&apos;t need to have ColumnInfo.h. I forgot to remove it, old change required it.

Thanks for catching this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513446</commentid>
    <comment_count>14</comment_count>
      <attachid>117557</attachid>
    <who name="">yosin</who>
    <bug_when>2011-12-01 20:38:17 -0800</bug_when>
    <thetext>Created attachment 117557
Patch 6 - Update GTK test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513583</commentid>
    <comment_count>15</comment_count>
      <attachid>117557</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 00:26:21 -0800</bug_when>
    <thetext>Comment on attachment 117557
Patch 6 - Update GTK test

Clearing flags on attachment: 117557

Committed r101755: &lt;http://trac.webkit.org/changeset/101755&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513584</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 00:26:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516459</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 19:55:48 -0800</bug_when>
    <thetext>fast/events/offsetX-offsetY.html has been failing ever since it was added in this patch:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r102205%20(35254)/fast/events/offsetX-offsetY-pretty-diff.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112644</attachid>
            <date>2011-10-27 00:18:15 -0700</date>
            <delta_ts>2011-10-27 23:16:13 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-70898-20111027161814.patch</filename>
            <type>text/plain</type>
            <size>24537</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg1MzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZTJlMjE0OGNiODE5ZGEz
NzM0MzhiYTk3NTlhMzNjOGMzOTZmNzhjLi4zMGU5ZWQ0OWNiYTQ4Y2RjMGRlMDgyMGI3ZjAyYTFj
Y2IwMWUzMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMTAtMjYgIFlvc2lm
dW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJhbmdlIHNsaWRlcnMg
YW5kIHNwaW4gYnV0dG9ucyBkb24ndCB3b3JrIHdpdGggbXVsdGktY29sdW1ucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMv
bGlzdGJveC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1pbi1tdWx0aS1jb2x1bW4uaHRtbAorCisgICAgICAgIElu
IG11bHRpLWNvbHVtbiwgY29vcmRpbmF0ZSBvZiBib3ggbW9kZWwgcmVuZGVyaW5nIG9iamVjdCBp
cyBkaWZmZXJlbnQKKyAgICAgICAgZnJvbSBhYnNvbHV0ZSBjb29yZGluYXRlLi4gQ29sdW1ucyBp
biBib3ggbW9kZWwgcmVuZGVyaW5nIG9iamVjdCBzcGFucworICAgICAgICB2ZXJ0aWNhbGx5IHJh
dGhlciB0aGFuIGhvcml6b250YWxseS4KKworICAgICAgICBXaGVuIGFic29sdXRlIHBvaW50IGlz
IHJlcHJlc2VudGVkIGluIChjb2x1bW5baV0rZHgsIGNvbHVtblswXStkeSksCisgICAgICAgIGl0
IGlzIChjb2x1bW5bMF0rZHgsIGNvbHVtblswXSArIGNvbHVtbkhlaWdodCArIGR5KSBpbiBib3gg
bW9kZWwKKyAgICAgICAgcmVuZGVyaW5nIG9iamVjdCBjb29yZGluYXRlLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGNhbGN1bGF0ZXMgY29udGFpbmVyIG9mZnNldCB3aXRoIGNvbnNpZGVyaW5nIHRo
aXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQpOiBDYWxsIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KTogTW92ZSBmcm9tIFJlbmRlcklubGlu
ZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0Lmg6IGFkZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDogTW92ZSBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCB0
byBSZW5kZXJCb3hNb2RlbE9iamVjdC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5l
Lmg6IHJlbW92ZSBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludC4KKwogMjAxMS0xMC0yNiAgU3RldmUg
RmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlRXJyb3Ig
ZG9lc24ndCBzdXBwb3J0IGN1c3RvbSBkb21haW5zIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOTk2MjkzMzg2YjhlMDFlYzUwMjFmYzM2NzI3MThl
NWI0NjQ5YzI2Zi4uMDY3NmE1M2VlYzRhMDVjMjI1M2Q2MTA5MDM5ZjJhYTRmODMwNTQ5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEzOTUsMjIgKzEzOTUsOCBA
QCB2b2lkIFJlbmRlckJveDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2ZvcgogICAgICAgICBmaXhlZCAmPSBpc0ZpeGVkUG9zOwog
ICAgIH0gZWxzZQogICAgICAgICBmaXhlZCB8PSBpc0ZpeGVkUG9zOwotICAgIAotICAgIFJlbmRl
ck9iamVjdCogbyA9IGNvbnRhaW5lcigpOwotICAgIGlmICghbykKLSAgICAgICAgcmV0dXJuOwog
Ci0gICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRy
YW5zZm9ybVN0YXRlKTsKLQotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0
RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKLQotICAgIGJvb2wgcHJlc2VydmUzRCA9
IHVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+
cHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNm
b3JtRnJvbUNvbnRhaW5lcihvKSkgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0Owot
ICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8sIGNvbnRhaW5lck9mZnNldCwgdCk7
Ci0gICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZlM0QgPyBU
cmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0
dGVuVHJhbnNmb3JtKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShj
b250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2
ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0
ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29s
dXRlVG9Mb2NhbFBvaW50KGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CiB9
CiAKIExheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVj
dCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNTE2ZjFiZTE3OTRk
MjkwMDE3OWY1OGJkZTA5ZTJkNGY2NjY3NDc1ZS4uODk4NTdmMDgyNmIzZDFhMzVkNmZkMzhlZWNl
MDY3ZWNiZmNkMWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkNvbHVtbklu
Zm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTM2LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMjU4MCw0
ICsyNTgyLDQ0IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZEFudGlhbGlhc0xp
bmVzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gIWNvbnRleHQtPmdldENU
TSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCk7CiB9CiAKK3ZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAorewor
ICAgIC8vIFdlIGRvbid0IGV4cGVjdCBhYnNvbHV0ZVRvTG9jYWwoKSB0byBiZSBjYWxsZWQgZHVy
aW5nIGxheW91dCAoeWV0KQorICAgIEFTU0VSVCghdmlldygpIHx8ICF2aWV3KCktPmxheW91dFN0
YXRlRW5hYmxlZCgpKTsKKworICAgIFJlbmRlck9iamVjdCogbyA9IGNvbnRhaW5lcigpOworICAg
IGlmICghbykKKyAgICAgICAgcmV0dXJuOworCisgICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9p
bnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKKworICAgIExheW91dFNp
emUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgp
KTsKKworICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigpICE9IEFic29sdXRlUG9zaXRpb24gJiYg
c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uICYmIG8tPmhhc0NvbHVtbnMoKSkg
eworICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBzdGF0aWNfY2FzdDxSZW5kZXJCbG9jayo+
KG8pOworICAgICAgICBDb2x1bW5JbmZvKiBjb2xJbmZvID0gYmxvY2stPmNvbHVtbkluZm8oKTsK
KyAgICAgICAgTGF5b3V0UG9pbnQgcG9pbnQocm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0
YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICAgICAgcG9pbnQgLT0gY29udGFpbmVyT2Zmc2V0Owor
ICAgICAgICBzaXplX3QgY29sQ291bnQgPSBibG9jay0+Y29sdW1uQ291bnQoY29sSW5mbyk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sQ291bnQ7IGkrKykgeworICAgICAgICAg
ICAgTGF5b3V0UmVjdCBjb2xSZWN0ID0gYmxvY2stPmNvbHVtblJlY3RBdChjb2xJbmZvLCBpKTsK
KyAgICAgICAgICAgIGlmIChjb2xSZWN0LmNvbnRhaW5zKHBvaW50KSkgeworICAgICAgICAgICAg
ICAgIGlmIChibG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGFpbmVyT2Zmc2V0LmV4cGFuZChjb2xSZWN0LmxvY2F0aW9uKCkueCgpLCAtY29s
SW5mby0+Y29sdW1uSGVpZ2h0KCkgKiBpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRhaW5lck9mZnNldC5leHBhbmQoLWNvbEluZm8tPmRlc2lyZWRDb2x1
bW5XaWR0aCgpICogaSwgY29sUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHByZXNl
cnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0
eWxlKCktPnByZXNlcnZlczNEKCkpOworICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVz
ZVRyYW5zZm9ybUZyb21Db250YWluZXIobykpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdDsKKyAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZz
ZXQsIHQpOworICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2
ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0
ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRl
Lm1vdmUoY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIGNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwg
cHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNm
b3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmlu
ZGV4IGU2YWI3MGFlOGI4NzY1MjgwOGQ1ODRhMDI5OTQ2OGMwODY5YWE3NDEuLjhjOWRhYzZjZWJi
ZTMzYzJmZTliMTdkMGRmZjlhNmEyMTVkNzkwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xMjUsNiArMTI1LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IE9WRVJSSURFOworCiAgICAgLy8gQ2FsbGVk
IGJ5IFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBs
YXllcnMgc2hvdWxkIGV2ZXIgYmUgZGVzdHJveWVkCiAgICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAzZjA5NjMz
YjAwOGQ5NTZmYTFmN2UyMTgyZTMwYzRkZDIwNWFjM2EzLi5iMGIwY2I3ZWU3NDIyYzdjYWFiN2Uy
ZmZhM2UzNDIzNzJkMDBlNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcApAQCAtMTE2MSwyOCArMTE2MSw2IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBiCiAg
ICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJh
bnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxp
bmU6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAotewotICAgIC8vIFdlIGRv
bid0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBkdXJpbmcgbGF5b3V0LgotICAg
IEFTU0VSVCghdmlldygpIHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKLQotICAg
IFJlbmRlck9iamVjdCogbyA9IGNvbnRhaW5lcigpOwotICAgIGlmICghbykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9y
bXMsIHRyYW5zZm9ybVN0YXRlKTsKLQotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0g
b2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKLQotICAgIGJvb2wgcHJlc2Vy
dmUzRCA9IHVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5
bGUoKS0+cHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNl
VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvKSkgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0OwotICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8sIGNvbnRhaW5lck9mZnNl
dCwgdCk7Ci0gICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZl
M0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRl
OjpGbGF0dGVuVHJhbnNmb3JtKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtU3RhdGUu
bW92ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBw
cmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zv
cm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7Ci19Ci0KIHZvaWQgUmVuZGVySW5saW5lOjp1cGRh
dGVEcmFnU3RhdGUoYm9vbCBkcmFnT24pCiB7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVw
ZGF0ZURyYWdTdGF0ZShkcmFnT24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oCmluZGV4IGZlOTVhZjFmZTE4NzU0MjY1YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkuLjA0OTA1
YzJiMzg0NjIwNDA2NzliNmQ0Mjk4MzEwYjJiNGViOTdhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTEzMSw3ICsxMzEsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0
YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFwQWJz
b2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDhlODMxMzJlNDcxZDc5NWE1
OGIyOWUyMGU4ZDQ1NjU1M2M4NjEzZi4uZTBkODVjNDFkZjFiYTI2OGU4NWViNzRkZjIxYWQwNWYw
OWIzZjdmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTI2ICBZb3NpZnVtaSBJbm91
ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBSYW5nZSBzbGlkZXJzIGFuZCBzcGlu
IGJ1dHRvbnMgZG9uJ3Qgd29yayB3aXRoIG11bHRpLWNvbHVtbnMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDg5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgc2xpZGVycywgY2xpY2sgc3BpbiBi
dXR0b25zLCBhbmQgY2xpY2sgaXRlbXMgaW4gbGlzdCBib3ggaW4gbXVsdGktY29sdW1uIGZvcm1z
LgorCisgICAgICAgICogZmFzdC9mb3Jtcy9saXN0Ym94L2xpc3Rib3gtaW4tbXVsdGktY29sdW1u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9saXN0Ym94L2xpc3Ri
b3gtaW4tbXVsdGktY29sdW1uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbnVt
YmVyL3NwaW4taW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29s
dW1uLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBDaHJvbWl1bSB0ZXN0
X2V4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJv
eC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2xpc3Rib3gvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQyOWE3ZjUxMGY2NDZjMzM5YjFlNTdkY2Q3OTczM2I5NDJlYTJhNWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gvbGlzdGJveC1pbi1tdWx0
aS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK0xpc3RCb3ggSW4gTXVsdGkt
Q291bHVtbgorCitUaGlzIGlzIHRlc3QgY2FzZXMgZm9yIEJVRyA3ODk4LgorTm8gb3V0ZXIKKwor
CisKKworRElWIG91dGVyCisKKworCisKK1NQQU4gb3V0ZXIKKworIAorCisKK1RBQkxFIG91dGVy
CisKKworCisKK1Jlc3VsdHMKKworUEFTU0VEIGMwMAorUEFTU0VEIGMwMQorUEFTU0VEIGMwMgor
UEFTU0VEIGMxMAorUEFTU0VEIGMxMQorUEFTU0VEIGMxMgorUEFTU0VEIGMyMAorUEFTU0VEIGMy
MQorUEFTU0VEIGMyMgorUEFTU0VEIGMzMAorUEFTU0VEIGMzMQorUEFTU0VEIGMzMgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gvbGlzdGJveC1pbi1tdWx0aS1j
b2x1bW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC9saXN0Ym94LWluLW11
bHRpLWNvbHVtbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MmNkYmM4Zjk4MGU5ZDU3NDUzNjMzZDFjNzFm
ZWVhOWRlYTVkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xp
c3Rib3gvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4uaHRtbApAQCAtMCwwICsxLDEzMyBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Citib2R5
IHsKKyAgICBmb250LXNpemU6IDEzcHg7Cit9Citmb3JtIHsKKyAgICAtd2Via2l0LWNvbHVtbi1j
b3VudDogMzsKKyAgICAtd2Via2l0LWNvbHVtbi1nYXA6IDBweDsKKyAgICBiYWNrZ3JvdW5kOiAj
Y2NjY2ZmOworICAgIG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsKKyAgICBib3JkZXI6
IHNvbGlkIDFweCByZWQ7Cit9CisKK2lucHV0W3R5cGU9Im51bWJlciJdIHsKKyAgICB3aWR0aDog
MjAwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworfQorCit0ZCB7CisgICAgYmFja2dyb3VuZDogcmVk
OworfQorPC9zdHlsZT4KKzxzY3JpcHQ+Citjb25zdCBudW1Gb3JtcyA9IDQ7Citjb25zdCBudW1D
b2xzID0gMzsKKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB2YXIgcmVzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3JlcycpOworICAgIHJlcy5pbm5lckhUTUwgPSByZXMuaW5uZXJIVE1M
ICsgbXNnICsgIjxicj4iOworfQorCitmdW5jdGlvbiBwYWdlWChydW5uZXIpIHsKKyAgICB2YXIg
YWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zm
c2V0TGVmdDsKKyAgICAgICAgcnVubmVyID0gcnVubmVyLm9mZnNldFBhcmVudDsKKyAgICB9Cisg
ICAgcmV0dXJuIGFjYzsKK30KKworZnVuY3Rpb24gcGFnZVkocnVubmVyKSB7CisgICAgdmFyIGFj
YyA9IDA7CisgICAgd2hpbGUgKHJ1bm5lcikgeworICAgICAgICBhY2MgKz0gcnVubmVyLm9mZnNl
dFRvcDsKKyAgICAgICAgcnVubmVyID0gcnVubmVyLm9mZnNldFBhcmVudDsKKyAgICB9CisgICAg
cmV0dXJuIGFjYzsKK30KKworZnVuY3Rpb24gdGVzdEl0KGZvcm1JbmRleCwgY29sSW5kZXgsIG9m
c1gsIGV4cGVjdGVkKQoreworICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZiIgKyBmb3JtSW5kZXgpOworICAgIGNvbnN0IGNvbHVtbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjIiArIGZvcm1JbmRleCArICIwIik7CisgICAgY29uc3QgY29sV2lkdGggPSBNYXRo
LmZsb29yKGZvcm0ub2Zmc2V0V2lkdGggLyBudW1Db2xzKTsKKworICAgIGNvbnN0IHNwaW5JZCA9
ICJjIiArIGZvcm1JbmRleCArIGNvbEluZGV4OworICAgIGNvbnN0IHNwaW4gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChzcGluSWQpOworCisgICAgY29uc3QgY2xpY2tYID0gcGFnZVgoY29sdW1u
KSArIGNvbFdpZHRoICogY29sSW5kZXggKyBvZnNYOworICAgIGNvbnN0IGNsaWNrWSA9IHBhZ2VZ
KGNvbHVtbikgKyBNYXRoLmZsb29yKHNwaW4ub2Zmc2V0SGVpZ2h0IC8gMyk7CisKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhjbGlja1gsIGNsaWNrWSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDAsIDApOworCisgICAgaWYgKHNwaW4udmFsdWUgPT0gZXhwZWN0ZWQpCisgICAg
ICAgIGxvZygiUEFTU0VEICIgKyBzcGluSWQpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJGQUlM
RUQgIiArIHNwaW5JZCArICIgZXhwZWN0ZWQ9IiArIGV4cGVjdGVkICsgIiBnb3Q9IiArIHNwaW4u
dmFsdWUgKyAiICIgKyBjbGlja1ggKyAiQCIgKyBjbGlja1kpOworfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZm9y
ICh2YXIgZm9ybUluZGV4ID0gMDsgZm9ybUluZGV4IDwgbnVtRm9ybXM7IGZvcm1JbmRleCsrKSB7
CisgICAgICAgIGZvciAodmFyIGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCBudW1Db2xzOyBjb2xJ
bmRleCsrKSB7CisgICAgICAgICAgdGVzdEl0KGZvcm1JbmRleCwgY29sSW5kZXgsIDEwLCAiYiIp
OworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8aDE+TGlzdEJveCBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMgdGVz
dCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3ODk4
PC9hPi4KKworPGgyPk5vIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMCI+Cis8c2VsZWN0IGlkPSJj
MDAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1
ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9w
dGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9
ImMwMSIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZh
bHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48
b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPHNlbGVjdCBp
ZD0iYzAyIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24g
dmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9u
PjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8L2Zvcm0+
CisKKzxoMj5ESVYgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYxIj4KKzxkaXY+Cis8c2VsZWN0IGlk
PSJjMTAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2
YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+
PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3Qg
aWQ9ImMxMSIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9u
IHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlv
bj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPHNlbGVj
dCBpZD0iYzEyIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRp
b24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0
aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8L2Rp
dj4KKzwvZm9ybT4KKworPGgyPlNQQU4gb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYyIj4KKzxzcGFu
PgorPHNlbGVjdCBpZD0iYzIwIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0
aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hh
cmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJy
IC8+Cis8c2VsZWN0IGlkPSJjMjEiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9v
cHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5D
aGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48
YnIgLz4KKzxzZWxlY3QgaWQ9ImMyMiIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8
L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMi
PkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0
PjxiciAvPgorPC9zcGFuPgorPC9mb3JtPgorCis8aDI+VEFCTEUgb3V0ZXI8L2gyPgorPGZvcm0g
aWQ9ImYzIj4KKzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0i
MCI+Cis8dHI+PHRkPjxzZWxlY3QgaWQ9ImMzMCIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+
QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFs
dWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwv
c2VsZWN0PjwvdGQ+PC90cj4KKzx0cj48dGQ+PHNlbGVjdCBpZD0iYzMxIiBzaXplPSI0Ij48b3B0
aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRp
b24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRl
bHRhPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48L3RyPgorPHRyPjx0ZD48c2VsZWN0IGlkPSJjMzIi
IHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0i
YiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlv
biB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48L3RkPjwvdHI+Cis8L3RhYmxlPgor
PC9mb3JtPgorCis8aDI+UmVzdWx0czwvaDI+Cis8ZGl2IGlkPSJyZXMiPgorPC9kaXY+CisKKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4t
bXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVy
L3NwaW4taW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTNmMGNlZjli
OGU0ZDc4NTkxYTJhMWM4NDE3NDE1ZGVlMWJiMmZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzggQEAKK1NwaW4gSW4gTXVsdGktQ291bHVtbgorCitUaGlzIGlzIHRlc3Qg
Y2FzZXMgZm9yIEJVRyA3ODk4LgorTm8gb3V0ZXIKKworCisKKworRElWIG91dGVyCisKKworCisK
K1NQQU4gb3V0ZXIKKworIAorCisKK1RBQkxFIG91dGVyCisKKworCisKK1Jlc3VsdHMKKworUEFT
U0VEIGMwMAorUEFTU0VEIGMwMQorUEFTU0VEIGMwMgorUEFTU0VEIGMxMAorUEFTU0VEIGMxMQor
UEFTU0VEIGMxMgorUEFTU0VEIGMyMAorUEFTU0VEIGMyMQorUEFTU0VEIGMyMgorUEFTU0VEIGMz
MAorUEFTU0VEIGMzMQorUEFTU0VEIGMzMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzMx
YjE2OTNjZGRmZTdjYjIzZWNiOGVlNzg0NmVhY2Y5YjkzZDE3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRtbApA
QCAtMCwwICsxLDEzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIg
bWVkaWE9InNjcmVlbiI+Citmb3JtIHsKKyAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMzsKKyAg
ICAtd2Via2l0LWNvbHVtbi1nYXA6IDBweDsKKyAgICBiYWNrZ3JvdW5kOiAjY2NjY2ZmOworICAg
IG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsKKyAgICBib3JkZXI6IHNvbGlkIDFweCBy
ZWQ7Cit9CisKK3NlbGVjdCB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogNTBweDsK
K30KKwordGQgeworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0Pgor
Y29uc3QgbnVtRm9ybXMgPSA0OworY29uc3QgbnVtQ29scyA9IDM7CisKK2Z1bmN0aW9uIGxvZyht
c2cpCit7CisgICAgdmFyIHJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMnKTsKKyAg
ICByZXMuaW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArIG1zZyArICI8YnI+IjsKK30KKworZnVu
Y3Rpb24gcGFnZVgocnVubmVyKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgd2hpbGUgKHJ1bm5l
cikgeworICAgICAgICBhY2MgKz0gcnVubmVyLm9mZnNldExlZnQ7CisgICAgICAgIHJ1bm5lciA9
IHJ1bm5lci5vZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0
aW9uIHBhZ2VZKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIp
IHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRUb3A7CisgICAgICAgIHJ1bm5lciA9IHJ1
bm5lci5vZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0aW9u
IHRlc3RJdChmb3JtSW5kZXgsIGNvbEluZGV4LCBvZnNYLCBleHBlY3RlZCkKK3sKKyAgICBjb25z
dCBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiICsgZm9ybUluZGV4KTsKKyAgICBj
b25zdCBjb2x1bW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIgKyBmb3JtSW5kZXggKyAi
MCIpOworICAgIGNvbnN0IGNvbFdpZHRoID0gTWF0aC5mbG9vcihmb3JtLm9mZnNldFdpZHRoIC8g
bnVtQ29scyk7CisKKyAgICBjb25zdCBzcGluSWQgPSAiYyIgKyBmb3JtSW5kZXggKyBjb2xJbmRl
eDsKKyAgICBjb25zdCBzcGluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3BpbklkKTsKKwor
ICAgIGNvbnN0IGNsaWNrWCA9IHBhZ2VYKGNvbHVtbikgKyBjb2xXaWR0aCAqIGNvbEluZGV4ICsg
b2ZzWDsKKyAgICBjb25zdCBjbGlja1kgPSBwYWdlWShjb2x1bW4pICsgTWF0aC5mbG9vcihzcGlu
Lm9mZnNldEhlaWdodCAvIDMpOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2xpY2tY
LCBjbGlja1kpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygwLCAwKTsKKworICAgIGlm
IChzcGluLnZhbHVlID09IGV4cGVjdGVkKQorICAgICAgICBsb2coIlBBU1NFRCAiICsgc3Bpbklk
KTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTEVEICIgKyBzcGluSWQgKyAiIGV4cGVjdGVk
PSIgKyBleHBlY3RlZCArICIgZ290PSIgKyBzcGluLnZhbHVlICsgIiAiICsgY2xpY2tYICsgIkAi
ICsgY2xpY2tZKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZvciAodmFyIGZvcm1JbmRleCA9IDA7IGZvcm1J
bmRleCA8IG51bUZvcm1zOyBmb3JtSW5kZXgrKykgeworICAgICAgICBmb3IgKHZhciBjb2xJbmRl
eCA9IDA7IGNvbEluZGV4IDwgbnVtQ29sczsgY29sSW5kZXgrKykgeworICAgICAgICAgIHRlc3RJ
dChmb3JtSW5kZXgsIGNvbEluZGV4LCA5MywgMTApOworICAgICAgICB9CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aDE+U3BpbiBJbiBNdWx0
aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93
ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3ODk4PC9hPi4KKworPGgyPk5vIG91dGVyPC9oMj4KKzxm
b3JtIGlkPSJmMCI+Cis8aW5wdXQgaWQ9ImMwMCIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0i
MTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzAxIiB0eXBlPSJudW1iZXIiIG1p
bj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMDIiIHR5cGU9
Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8L2Zvcm0+CisK
KzxoMj5ESVYgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYxIj4KKzxkaXY+Cis8aW5wdXQgaWQ9ImMx
MCIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxp
bnB1dCBpZD0iYzExIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAv
PjxiciAvPgorPGlucHV0IGlkPSJjMTIiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIg
c3RlcD0iMTAiIC8+PGJyIC8+Cis8L2Rpdj4KKzwvZm9ybT4KKworPGgyPlNQQU4gb3V0ZXI8L2gy
PgorPGZvcm0gaWQ9ImYyIj4KKzxzcGFuPgorPGlucHV0IGlkPSJjMjAiIHR5cGU9Im51bWJlciIg
bWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMyMSIgdHlw
ZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBp
ZD0iYzIyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAv
PgorPC9zcGFuPgorPC9mb3JtPgorCis8aDI+VEFCTEUgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYz
Ij4KKzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8
dHI+PHRkPjxpbnB1dCBpZD0iYzMwIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0
ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlucHV0IGlkPSJjMzEiIHR5cGU9Im51bWJl
ciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPHRyPjx0ZD48aW5w
dXQgaWQ9ImMzMiIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48
L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9mb3JtPgorCis8aDI+UmVzdWx0czwvaDI+Cis8ZGl2IGlk
PSJyZXMiPgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJjMTNhYzg3M2VhYjQwOGZjMTBjYzRiNTg4NGE3YzM5NTA2NDdhYTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1pbi1t
dWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK1NsaWRlciBJbiBNdWx0
aS1Db3VsdW1uCisKK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgQlVHIDc4OTguCitObyBvdXRlcgor
CisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBvdXRlcgorCisgCisKKworVEFCTEUgb3V0
ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAwCitQQVNTRUQgYzAxCitQQVNTRUQgYzAy
CitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQgYzEyCitQQVNTRUQgYzIwCitQQVNTRUQg
YzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNTRUQgYzMxCitQQVNTRUQgYzMyCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNv
bHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGkt
Y29sdW1uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFlMGQ1YjY2MWM4OGU0NTZmZmI3YWQ1ZjMwNGNkYTAy
MDJiOTdjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uv
c2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0wLDAgKzEsMTI5IEBACis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KK2Zvcm0geworICAg
IC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJraXQtY29sdW1uLWdhcDogMHB4Owor
ICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzog
MHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKworaW5wdXRbdHlwZT0icmFuZ2Ui
XSB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogNTBweDsKK30KKwordGQgeworICAg
IGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorY29uc3QgbnVtRm9ybXMg
PSA0OworY29uc3QgbnVtQ29scyA9IDM7CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgdmFy
IHJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMnKTsKKyAgICByZXMuaW5uZXJIVE1M
ID0gcmVzLmlubmVySFRNTCArIG1zZyArICI8YnI+IjsKK30KKworZnVuY3Rpb24gcGFnZVgocnVu
bmVyKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgd2hpbGUgKHJ1bm5lcikgeworICAgICAgICBh
Y2MgKz0gcnVubmVyLm9mZnNldExlZnQ7CisgICAgICAgIHJ1bm5lciA9IHJ1bm5lci5vZmZzZXRQ
YXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZKHJ1bm5l
cikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAgICAgICAgYWNj
ICs9IHJ1bm5lci5vZmZzZXRUb3A7CisgICAgICAgIHJ1bm5lciA9IHJ1bm5lci5vZmZzZXRQYXJl
bnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0aW9uIHRlc3RJdChmb3JtSW5k
ZXgsIGNvbEluZGV4LCBvZnNYLCBleHBlY3RlZCkKK3sKKyAgICBjb25zdCBmb3JtID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImYiICsgZm9ybUluZGV4KTsKKyAgICBjb25zdCBjb2x1bW4gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIgKyBmb3JtSW5kZXggKyAiMCIpOworICAgIGNvbnN0
IGNvbFdpZHRoID0gTWF0aC5mbG9vcihmb3JtLm9mZnNldFdpZHRoIC8gbnVtQ29scyk7CisKKyAg
ICBjb25zdCBzbGlkZXJJZCA9ICJjIiArIGZvcm1JbmRleCArIGNvbEluZGV4OworICAgIGNvbnN0
IHNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNsaWRlcklkKTsKKworICAgIGNvbnN0
IGNsaWNrWCA9IHBhZ2VYKGNvbHVtbikgKyBjb2xXaWR0aCAqIGNvbEluZGV4ICsgb2ZzWDsKKyAg
ICBjb25zdCBjbGlja1kgPSBwYWdlWShjb2x1bW4pICsgc2xpZGVyLm9mZnNldEhlaWdodCAvIDI7
CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjbGlja1gsIGNsaWNrWSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAg
aWYgKHNsaWRlci52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQgIiArIHNs
aWRlcklkKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTEVEICIgKyBzbGlkZXJJZCArICIg
ZXhwZWN0ZWQ9IiArIGV4cGVjdGVkICsgIiBnb3Q9IiArIHNsaWRlci52YWx1ZSArICIgIiArIGNs
aWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICgh
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmb3IgKHZhciBmb3JtSW5kZXgg
PSAwOyBmb3JtSW5kZXggPCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsKKyAgICAgICAgZm9yICh2
YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbEluZGV4KyspIHsKKyAgICAg
ICAgICB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgMjMsIDIwKTsKKyAgICAgICAgfQorICAg
IH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGgxPlNs
aWRlciBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgPGEgaHJl
Zj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3ODk4PC9hPi4KKworPGgyPk5vIG91
dGVyPC9oMj4KKzxmb3JtIGlkPSJmMCI+Cis8aW5wdXQgaWQ9ImMwMCIgdHlwZT0icmFuZ2UiIG1p
bj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMDEiIHR5cGU9
InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0i
YzAyIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8
L2Zvcm0+CisKKzxoMj5ESVYgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYxIj4KKzxkaXY+Cis8aW5w
dXQgaWQ9ImMxMCIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxi
ciAvPgorPGlucHV0IGlkPSJjMTEiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVw
PSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzEyIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9
IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8L2Rpdj4KKzwvZm9ybT4KKworPGgyPlNQQU4gb3V0
ZXI8L2gyPgorPGZvcm0gaWQ9ImYyIj4KKzxzcGFuPgorPGlucHV0IGlkPSJjMjAiIHR5cGU9InJh
bmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzIx
IiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5w
dXQgaWQ9ImMyMiIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxi
ciAvPgorPC9zcGFuPgorPC9mb3JtPgorCis8aDI+VEFCTEUgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9
ImYzIj4KKzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+
Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMwIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIg
c3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPHRyPjx0ZD48aW5wdXQgaWQ9ImMzMSIgdHlwZT0icmFu
Z2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlu
cHV0IGlkPSJjMzIiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48
L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9mb3JtPgorCis8aDI+UmVzdWx0czwvaDI+Cis8ZGl2IGlk
PSJyZXMiPgorPC9kaXY+CisKKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112818</attachid>
            <date>2011-10-27 23:16:20 -0700</date>
            <delta_ts>2011-10-28 03:17:30 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-70898-20111028151619.patch</filename>
            <type>text/plain</type>
            <size>28939</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg2ODQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1v
ZGUgMTAwNjQ0CmluZGV4IDU1ODdlMjE5ZWUyNzViOWNlYTg3Yjg4MzEyMDFjY2IwYjRiZjY2Mjcu
LjEzOTE5Zjk3NmFkMjJjZGZhNzRmYjU2ZWEwOTliNTJmNzEyNmVhYjYKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDExLTEwLTI3ICBZb3NpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4K
KyAgICAgICAgUmFuZ2Ugc2xpZGVycyBhbmQgc3BpbiBidXR0b25zIGRvbid0IHdvcmsgd2l0aCBt
dWx0aS1jb2x1bW5zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA4OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiBtdWx0aS1jb2x1bW4sIGNvb3JkaW5hdGUgb2YgYm94IG1vZGVsIHJlbmRlcmluZyBv
YmplY3QgaXMgZGlmZmVyZW50CisgICAgICAgIGZyb20gYWJzb2x1dGUgY29vcmRpbmF0ZS4uIENv
bHVtbnMgaW4gYm94IG1vZGVsIHJlbmRlcmluZyBvYmplY3Qgc3BhbnMKKyAgICAgICAgdmVydGlj
YWxseSByYXRoZXIgdGhhbiBob3Jpem9udGFsbHkuCisKKyAgICAgICAgV2hlbiBhYnNvbHV0ZSBw
b2ludCBpcyByZXByZXNlbnRlZCBpbiAoY29sdW1uW2ldK2R4LCBjb2x1bW5bMF0rZHkpLAorICAg
ICAgICBpdCBpcyAoY29sdW1uWzBdK2R4LCBjb2x1bW5bMF0gKyBjb2x1bW5IZWlnaHQgKyBkeSkg
aW4gYm94IG1vZGVsCisgICAgICAgIHJlbmRlcmluZyBvYmplY3QgY29vcmRpbmF0ZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGNhbGN1bGF0ZXMgY29udGFpbmVyIG9mZnNldCB3aXRoIGNvbnNpZGVy
aW5nIHRoaXMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVs
dGktY29sdW1uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWlu
LW11bHRpLWNvbHVtbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3NlbGVjdC9saXN0
Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9p
bnQpOiBDYWxsIFJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KTog
TW92ZSBmcm9tIFJlbmRlcklubGluZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IGFkZCBtYXBBYnNvbHV0ZVRvTG9j
YWxQb2ludC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDogTW92ZSBtYXBB
YnNvbHV0ZVRvTG9jYWxQb2ludCB0byBSZW5kZXJCb3hNb2RlbE9iamVjdC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6IHJlbW92ZSBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludC4K
KwogMjAxMS0xMC0yNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgR2VuZXJhdGUgV2ViS2l0Q1NTTWF0cml4IGNvbnN0cnVjdG9yIGZvciBKU0MgYnkgW0Nv
bnN0cnVjdG9yXSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXgg
OTk2MjkzMzg2YjhlMDFlYzUwMjFmYzM2NzI3MThlNWI0NjQ5YzI2Zi4uMDY3NmE1M2VlYzRhMDVj
MjI1M2Q2MTA5MDM5ZjJhYTRmODMwNTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKQEAgLTEzOTUsMjIgKzEzOTUsOCBAQCB2b2lkIFJlbmRlckJveDo6bWFwQWJzb2x1
dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcgog
ICAgICAgICBmaXhlZCAmPSBpc0ZpeGVkUG9zOwogICAgIH0gZWxzZQogICAgICAgICBmaXhlZCB8
PSBpc0ZpeGVkUG9zOwotICAgIAotICAgIFJlbmRlck9iamVjdCogbyA9IGNvbnRhaW5lcigpOwot
ICAgIGlmICghbykKLSAgICAgICAgcmV0dXJuOwogCi0gICAgby0+bWFwQWJzb2x1dGVUb0xvY2Fs
UG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKLQotICAgIExheW91
dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2lu
dCgpKTsKLQotICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxl
KCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKHVz
ZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvKSkgewotICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKG8sIGNvbnRhaW5lck9mZnNldCwgdCk7Ci0gICAgICAgIHRyYW5zZm9ybVN0YXRlLmFw
cGx5VHJhbnNmb3JtKHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRy
YW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29u
dGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3Vt
dWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAg
UmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGZpeGVkLCB1c2VU
cmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CiB9CiAKIExheW91dFNpemUgUmVuZGVyQm94Ojpv
ZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKaW5kZXggNTE2ZjFiZTE3OTRkMjkwMDE3OWY1OGJkZTA5ZTJkNGY2NjY3NDc1
ZS4uY2YwYzAzNjY1Y2I4MmUyOTE5NmIxZWEwNWE3YmNmMjQ1NGIyYzNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxP
YmplY3QuaCIKIAorI2luY2x1ZGUgIkNvbHVtbkluZm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIK
ICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMjU4MCw0ICsyNTgyLDQ3IEBAIGJvb2wgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKICAgICByZXR1cm4gIWNvbnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9u
T3JGbGlwcGVkKCk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAoreworICAgIC8vIFdlIGRvbid0IGV4cGVjdCBhYnNv
bHV0ZVRvTG9jYWwoKSB0byBiZSBjYWxsZWQgZHVyaW5nIGxheW91dCAoeWV0KQorICAgIEFTU0VS
VCghdmlldygpIHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKKworICAgIFJlbmRl
ck9iamVjdCogbyA9IGNvbnRhaW5lcigpOworICAgIGlmICghbykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRy
YW5zZm9ybVN0YXRlKTsKKworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0
RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKKworICAgIGlmIChzdHlsZSgpLT5wb3Np
dGlvbigpICE9IEFic29sdXRlUG9zaXRpb24gJiYgc3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhl
ZFBvc2l0aW9uICYmIG8tPmhhc0NvbHVtbnMoKSkgeworICAgICAgICBSZW5kZXJCbG9jayogYmxv
Y2sgPSBzdGF0aWNfY2FzdDxSZW5kZXJCbG9jayo+KG8pOworICAgICAgICBDb2x1bW5JbmZvKiBj
b2xJbmZvID0gYmxvY2stPmNvbHVtbkluZm8oKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgcG9pbnQo
cm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICAg
ICAgcG9pbnQgLT0gY29udGFpbmVyT2Zmc2V0OworICAgICAgICBzaXplX3QgY29sQ291bnQgPSBi
bG9jay0+Y29sdW1uQ291bnQoY29sSW5mbyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY29sQ291bnQ7IGkrKykgeworICAgICAgICAgICAgTGF5b3V0UmVjdCBjb2xSZWN0ID0gYmxv
Y2stPmNvbHVtblJlY3RBdChjb2xJbmZvLCBpKTsKKyAgICAgICAgICAgIGlmIChjb2xSZWN0LmNv
bnRhaW5zKHBvaW50KSkgeworICAgICAgICAgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgICAg
ICAgICAgIExheW91dFJlY3QgY29sUmVjdDAgPSBibG9jay0+Y29sdW1uUmVjdEF0KGNvbEluZm8s
IDApOworICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJPZmZzZXQuZXhwYW5kKGNv
bFJlY3QubG9jYXRpb24oKS54KCkgLSBjb2xSZWN0MC5sb2NhdGlvbigpLngoKSwgLWNvbEluZm8t
PmNvbHVtbkhlaWdodCgpICogaSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRhaW5lck9mZnNldC5leHBhbmQoLWNvbEluZm8tPmRlc2lyZWRD
b2x1bW5XaWR0aCgpICogaSwgY29sUmVjdC5sb2NhdGlvbigpLnkoKSAtIGNvbFJlY3QwLmxvY2F0
aW9uKCkueSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHByZXNlcnZlM0QgPSB1
c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnBy
ZXNlcnZlczNEKCkpOworICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9y
bUZyb21Db250YWluZXIobykpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKKyAg
ICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQpOwor
ICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJh
bnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRl
blRyYW5zZm9ybSk7CisgICAgfSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoY29u
dGFpbmVyT2Zmc2V0LndpZHRoKCksIGNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUz
RCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6
OkZsYXR0ZW5UcmFuc2Zvcm0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGU2YWI3
MGFlOGI4NzY1MjgwOGQ1ODRhMDI5OTQ2OGMwODY5YWE3NDEuLjhjOWRhYzZjZWJiZTMzYzJmZTli
MTdkMGRmZjlhNmEyMTVkNzkwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xMjUsNiArMTI1LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBU
cmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IE9WRVJSSURFOworCiAgICAgLy8gQ2FsbGVkIGJ5IFJlbmRl
ck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hv
dWxkIGV2ZXIgYmUgZGVzdHJveWVkCiAgICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAzZjA5NjMzYjAwOGQ5NTZm
YTFmN2UyMTgyZTMwYzRkZDIwNWFjM2EzLi5iMGIwY2I3ZWU3NDIyYzdjYWFiN2UyZmZhM2UzNDIz
NzJkMDBlNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApA
QCAtMTE2MSwyOCArMTE2MSw2IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBiCiAgICAgby0+bWFw
TG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3Jtcywg
dHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcEFi
c29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNm
b3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAotewotICAgIC8vIFdlIGRvbid0IGV4cGVj
dCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBkdXJpbmcgbGF5b3V0LgotICAgIEFTU0VSVCgh
dmlldygpIHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKLQotICAgIFJlbmRlck9i
amVjdCogbyA9IGNvbnRhaW5lcigpOwotICAgIGlmICghbykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5z
Zm9ybVN0YXRlKTsKLQotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJv
bUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKLQotICAgIGJvb2wgcHJlc2VydmUzRCA9IHVz
ZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJl
c2VydmVzM0QoKSk7Ci0gICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcihvKSkgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAg
ICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8sIGNvbnRhaW5lck9mZnNldCwgdCk7Ci0g
ICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZlM0QgPyBUcmFu
c2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVu
VHJhbnNmb3JtKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShjb250
YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNE
ID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6
RmxhdHRlblRyYW5zZm9ybSk7Ci19Ci0KIHZvaWQgUmVuZGVySW5saW5lOjp1cGRhdGVEcmFnU3Rh
dGUoYm9vbCBkcmFnT24pCiB7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZURyYWdT
dGF0ZShkcmFnT24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4
IGZlOTVhZjFmZTE4NzU0MjY1YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkuLjA0OTA1YzJiMzg0NjIw
NDA2NzliNmQ0Mjk4MzEwYjJiNGViOTdhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmgKQEAgLTEzMSw3ICsxMzEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgYm9v
bCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xv
Y2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChj
b25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApp
bmRleCBmOTM1NzQ0NWI4Yjk1OWMzYmVmZjY1OTI5ZTIyNzJkYWEzNmIwZmZlLi40MDBlMTVlMWNj
MWUyMzZhZWFkN2Q4MWVhODlkNTYyYzkyNWQ2YjE1Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMC0y
NyAgWW9zaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmFuZ2Ug
c2xpZGVycyBhbmQgc3BpbiBidXR0b25zIGRvbid0IHdvcmsgd2l0aCBtdWx0aS1jb2x1bW5zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvbGlzdGJveC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvbGlzdGJveC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVt
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4t
aW4tbXVsdGktY29sdW1uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2Uv
c2xpZGVyLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sOiBBZGRlZC4KKwogMjAx
MS0xMC0yNyAgSm9obiBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVcGRh
dGUgY2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dAppbmRleCAwNTAyNGNmZmFlNDAy
MThiZThmZmQ0ZDcxYTVlZDFiOWJmOTIwNjEyLi42MmM2YTNjY2E2ODRjNmIxOTQ3OWQ4Y2M1ODMw
ZTYyNTliNjhlYjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRY
LW9mZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29mZnNl
dFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUzogZXZlbnQgYXQg
KDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAoMzIsIDM3KQogUEFTUzogZXZlbnQgYXQg
KDE1NywgMzIpIGhpdCByZWwtYm94IGF0IG9mZnNldCAoMjIsIDI0KQogUEFTUzogZXZlbnQgYXQg
KDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBQQVNTOiBldmVudCBh
dCAoMzYsIDI3MikgaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgb2Zmc2V0ICg0LCA0KQotUEFT
UzogZXZlbnQgYXQgKDYzOSwgMjA3KSBoaXQgaW4tY29sdW1ucyBhdCBvZmZzZXQgKDE3MywgLTE4
OSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGluLWNvbHVtbnMgYXQgb2Zmc2V0ICgz
MywgNSkKIFBBU1M6IGV2ZW50IGF0ICg1NjMsIDQxMCkgaGl0IGluc2lkZS1vdmVyZmxvdyBhdCBv
ZmZzZXQgKDcsIDYpCiBQQVNTOiBldmVudCBhdCAoMTEyLCAzNjkpIGhpdCB0cmFuc2Zvcm1lZCBh
dCBvZmZzZXQgKDExLCAxNikKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
b2Zmc2V0WC1vZmZzZXRZLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9m
ZnNldFkuaHRtbAppbmRleCBiZjM4ZTA0ZTM1YzgxOWQyYjUxM2NjNjM5NDFiMDEyNzljYmEwMjQ4
Li44M2MwZjMzZmJhZWZkMWNjMWY3N2IxY2U3YTE4Njg5YTZlNmYxZmJhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbApAQCAtMzcsNyArMzcsNyBAQAog
ICAgICAgZGlzcGF0Y2hFdmVudCgxNTcsIDMyLCAncmVsLWJveCcsIDIyLCAyNCk7CiAgICAgICBk
aXNwYXRjaEV2ZW50KDQxMCwgMzAsICdmaXhlZC1ib3gnLCAxMCwgMTApOwogICAgICAgZGlzcGF0
Y2hFdmVudCgzNiwgMjcyLCAnd2l0aC1ib3JkZXJ0b3BleHRyYScsIDQsIDQpOwotICAgICAgZGlz
cGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAxNzMsIC0xODkpOworICAgICAgZGlz
cGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAzMywgNSk7CiAgICAgICBkaXNwYXRj
aEV2ZW50KDU2MywgNDEwLCAnaW5zaWRlLW92ZXJmbG93JywgNywgNik7CiAgICAgICBkaXNwYXRj
aEV2ZW50KDExMiwgMzY5LCAndHJhbnNmb3JtZWQnLCAxMSwgMTYpOwogICAgICAgICAgICAgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNv
bHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWlu
LW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNkY2UzYjdmZGNiNGRhYjEy
OGUyOWVkYzQ2OTQ0ZWE4ZGMyNTE2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDM4IEBACitTcGluIEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNhc2VzIGZv
ciBCVUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBv
dXRlcgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAw
CitQQVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQg
YzEyCitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNT
RUQgYzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
bnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YmY2MmRhNWI2
NzRkZTE2ODVkOTQyMjg0Nzc5NWYxNTFlNzg1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0wLDAg
KzEsMTQzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KK2Zvcm0geworICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJr
aXQtY29sdW1uLWdhcDogMHB4OworICAgIC1tb3otY29sdW1uLWNvdW50OiAzOworICAgIC1tb3ot
Y29sdW1uLWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAw
cHg7CisgICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKwor
aW5wdXRbdHlwZT0ibnVtYmVyIl0geworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDUw
cHg7Cit9CisKK3RkIHsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlw
dD4KK2NvbnN0IG51bUZvcm1zID0gNDsKK2NvbnN0IG51bUNvbHMgPSAzOworCitmdW5jdGlvbiBs
b2cobXNnKQoreworICAgIHZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzJyk7
CisgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7Cit9CisK
K2Z1bmN0aW9uIHBhZ2VYKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChy
dW5uZXIpIHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRMZWZ0OworICAgICAgICBydW5u
ZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitm
dW5jdGlvbiBwYWdlWShydW5uZXIpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVu
bmVyKSB7CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zmc2V0VG9wOworICAgICAgICBydW5uZXIg
PSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5j
dGlvbiB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgb2ZzWCwgZXhwZWN0ZWQpCit7CisgICAg
Y29uc3QgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmIiArIGZvcm1JbmRleCk7Cisg
ICAgY29uc3QgY29sdW1uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiICsgZm9ybUluZGV4
ICsgIjAiKTsKKyAgICBjb25zdCBjb2xXaWR0aCA9IE1hdGguZmxvb3IoZm9ybS5vZmZzZXRXaWR0
aCAvIG51bUNvbHMpOworCisgICAgY29uc3Qgc3BpbklkID0gImMiICsgZm9ybUluZGV4ICsgY29s
SW5kZXg7CisgICAgY29uc3Qgc3BpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwaW5JZCk7
CisKKyAgICBjb25zdCBjbGlja1ggPSBwYWdlWChjb2x1bW4pICsgY29sV2lkdGggKiBjb2xJbmRl
eCArIG9mc1g7CisgICAgY29uc3QgY2xpY2tZID0gcGFnZVkoY29sdW1uKSArIE1hdGguZmxvb3Io
c3Bpbi5vZmZzZXRIZWlnaHQgLyAzKTsKKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNs
aWNrWCwgY2xpY2tZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CisKKyAg
ICBpZiAoc3Bpbi52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQgIiArIHNw
aW5JZCk7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUxFRCAiICsgc3BpbklkICsgIiBleHBl
Y3RlZD0iICsgZXhwZWN0ZWQgKyAiIGdvdD0iICsgc3Bpbi52YWx1ZSArICIgIiArIGNsaWNrWCAr
ICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIGluc3RhbGxNb3VzZVRyYWNrZXIoKSB7Cisg
ICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlbW92ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdmFy
IHJlc3VsdEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb3VzZXBvcyIpOworICAgICAg
ICB2YXIgb2Zmc2V0cyA9ICJlbGVtZW50IGlkOiAiICsgZS50YXJnZXQuaWQgKyAiPGJyPiBjbGll
bnRYOiAiICsgZS5jbGllbnRYICsgIiBjbGllbnRZOiAiICsgZS5jbGllbnRZICsgIjxicj4iOwor
ICAgICAgICBvZmZzZXRzICs9ICJvZmZzZXRYOiAiICsgZS5vZmZzZXRYICsgIiBvZmZzZXRZOiAi
ICsgZS5vZmZzZXRZOworICAgICAgICByZXN1bHRCb3guaW5uZXJIVE1MID0gb2Zmc2V0czsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgIGluc3RhbGxNb3VzZVRyYWNrZXIoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgIGZvciAodmFyIGZvcm1JbmRleCA9IDA7IGZvcm1JbmRleCA8IG51bUZvcm1zOyBmb3JtSW5k
ZXgrKykgeworICAgICAgICBmb3IgKHZhciBjb2xJbmRleCA9IDA7IGNvbEluZGV4IDwgbnVtQ29s
czsgY29sSW5kZXgrKykgeworICAgICAgICAgIHRlc3RJdChmb3JtSW5kZXgsIGNvbEluZGV4LCA5
MywgMTApOworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+Cis8aDE+U3BpbiBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMg
dGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3
MDg5ODwvYT4uCisKKzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjAiPgorPGlucHV0IGlk
PSJjMDAiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+
Cis8aW5wdXQgaWQ9ImMwMSIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIx
MCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzAyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIx
MDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9mb3JtPgorCis8aDI+RElWIG91dGVyPC9oMj4KKzxm
b3JtIGlkPSJmMSI+Cis8ZGl2PgorPGlucHV0IGlkPSJjMTAiIHR5cGU9Im51bWJlciIgbWluPSIw
IiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMxMSIgdHlwZT0ibnVt
YmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzEy
IiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9k
aXY+Cis8L2Zvcm0+CisKKzxoMj5TUEFOIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMiI+Cis8c3Bh
bj4KKzxpbnB1dCBpZD0iYzIwIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9
IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjEiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9
IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMyMiIgdHlwZT0ibnVtYmVyIiBt
aW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzwvc3Bhbj4KKzwvZm9ybT4KKwor
PGgyPlRBQkxFIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMyI+Cis8dGFibGUgYm9yZGVyPSIwIiBj
ZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48aW5wdXQgaWQ9ImMzMCIg
dHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48L3RkPjwvdHI+Cis8
dHI+PHRkPjxpbnB1dCBpZD0iYzMxIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0
ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlucHV0IGlkPSJjMzIiIHR5cGU9Im51bWJl
ciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPC90YWJsZT4KKzwv
Zm9ybT4KKworPGgyPlJlc3VsdHM8L2gyPgorPGRpdiBpZD0ibW91c2Vwb3MiPjwvZGl2PgorPGRp
diBpZD0icmVzIj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2ZjZDMzMDgyMmU4MWI0YTVmMjQ4MWI0NjE5MGE0OGQzZjdjZjM5Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWlu
LW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorU2xpZGVyIEluIE11
bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciBCVUcgNzA4OTguCitObyBvdXRl
cgorCisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBvdXRlcgorCisgCisKKworVEFCTEUg
b3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAwCitQQVNTRUQgYzAxCitQQVNTRUQg
YzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQgYzEyCitQQVNTRUQgYzIwCitQQVNT
RUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNTRUQgYzMxCitQQVNTRUQgYzMyCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRp
LWNvbHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVs
dGktY29sdW1uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMwYzNiMjMxODhmNjEzNDM2YTRiNzJhZGU4MWU3
YTlkYjAwYzMyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFu
Z2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0wLDAgKzEsMTI5IEBACis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KK2Zvcm0gewor
ICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJraXQtY29sdW1uLWdhcDogMHB4
OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGlu
ZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKworaW5wdXRbdHlwZT0icmFu
Z2UiXSB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogNTBweDsKK30KKwordGQgewor
ICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorY29uc3QgbnVtRm9y
bXMgPSA0OworY29uc3QgbnVtQ29scyA9IDM7CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAg
dmFyIHJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMnKTsKKyAgICByZXMuaW5uZXJI
VE1MID0gcmVzLmlubmVySFRNTCArIG1zZyArICI8YnI+IjsKK30KKworZnVuY3Rpb24gcGFnZVgo
cnVubmVyKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgd2hpbGUgKHJ1bm5lcikgeworICAgICAg
ICBhY2MgKz0gcnVubmVyLm9mZnNldExlZnQ7CisgICAgICAgIHJ1bm5lciA9IHJ1bm5lci5vZmZz
ZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZKHJ1
bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAgICAgICAg
YWNjICs9IHJ1bm5lci5vZmZzZXRUb3A7CisgICAgICAgIHJ1bm5lciA9IHJ1bm5lci5vZmZzZXRQ
YXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0aW9uIHRlc3RJdChmb3Jt
SW5kZXgsIGNvbEluZGV4LCBvZnNYLCBleHBlY3RlZCkKK3sKKyAgICBjb25zdCBmb3JtID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiICsgZm9ybUluZGV4KTsKKyAgICBjb25zdCBjb2x1bW4g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIgKyBmb3JtSW5kZXggKyAiMCIpOworICAgIGNv
bnN0IGNvbFdpZHRoID0gTWF0aC5mbG9vcihmb3JtLm9mZnNldFdpZHRoIC8gbnVtQ29scyk7CisK
KyAgICBjb25zdCBzbGlkZXJJZCA9ICJjIiArIGZvcm1JbmRleCArIGNvbEluZGV4OworICAgIGNv
bnN0IHNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNsaWRlcklkKTsKKworICAgIGNv
bnN0IGNsaWNrWCA9IHBhZ2VYKGNvbHVtbikgKyBjb2xXaWR0aCAqIGNvbEluZGV4ICsgb2ZzWDsK
KyAgICBjb25zdCBjbGlja1kgPSBwYWdlWShjb2x1bW4pICsgc2xpZGVyLm9mZnNldEhlaWdodCAv
IDI7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjbGlja1gsIGNsaWNrWSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisg
ICAgaWYgKHNsaWRlci52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQgIiAr
IHNsaWRlcklkKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTEVEICIgKyBzbGlkZXJJZCAr
ICIgZXhwZWN0ZWQ9IiArIGV4cGVjdGVkICsgIiBnb3Q9IiArIHNsaWRlci52YWx1ZSArICIgIiAr
IGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmb3IgKHZhciBmb3JtSW5k
ZXggPSAwOyBmb3JtSW5kZXggPCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsKKyAgICAgICAgZm9y
ICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbEluZGV4KyspIHsKKyAg
ICAgICAgICB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgMjMsIDIwKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGgx
PlNsaWRlciBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgPGEg
aHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3MDg5ODwvYT4uCisKKzxoMj5O
byBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjAiPgorPGlucHV0IGlkPSJjMDAiIHR5cGU9InJhbmdl
IiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzAxIiB0
eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQg
aWQ9ImMwMiIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAv
PgorPC9mb3JtPgorCis8aDI+RElWIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMSI+Cis8ZGl2Pgor
PGlucHV0IGlkPSJjMTAiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIg
Lz48YnIgLz4KKzxpbnB1dCBpZD0iYzExIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIg
c3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMxMiIgdHlwZT0icmFuZ2UiIG1pbj0iMCIg
bWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9kaXY+Cis8L2Zvcm0+CisKKzxoMj5TUEFO
IG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMiI+Cis8c3Bhbj4KKzxpbnB1dCBpZD0iYzIwIiB0eXBl
PSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9
ImMyMSIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgor
PGlucHV0IGlkPSJjMjIiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIg
Lz48YnIgLz4KKzwvc3Bhbj4KKzwvZm9ybT4KKworPGgyPlRBQkxFIG91dGVyPC9oMj4KKzxmb3Jt
IGlkPSJmMyI+Cis8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9
IjAiPgorPHRyPjx0ZD48aW5wdXQgaWQ9ImMzMCIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIx
MDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlucHV0IGlkPSJjMzEiIHR5cGU9
InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48L3RkPjwvdHI+Cis8dHI+PHRk
PjxpbnB1dCBpZD0iYzMyIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAi
IC8+PC90ZD48L3RyPgorPC90YWJsZT4KKzwvZm9ybT4KKworPGgyPlJlc3VsdHM8L2gyPgorPGRp
diBpZD0icmVzIj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDExM2NlNzU0YmRlNTg5MWNjNjRjZDRkNzg1MTAwZDJjYTNi
ZjJiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0L2xp
c3Rib3gtaW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBACitMaXN0
Qm94IEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciBCVUcgNzA4OTgu
CitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBvdXRlcgorCisgCisK
KworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAwCitQQVNTRUQgYzAx
CitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQgYzEyCitQQVNTRUQg
YzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNTRUQgYzMxCitQQVNT
RUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0L2xpc3Ri
b3gtaW4tbXVsdGktY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9s
aXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYzYzNTg0MTFjNGVhNDE2
YmI4YWE3N2YyNTFmNWYxNDE0N2FhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0wLDAgKzEs
MTMzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2Ny
ZWVuIj4KK2JvZHkgeworICAgIGZvbnQtc2l6ZTogMTNweDsKK30KK2Zvcm0geworICAgIC13ZWJr
aXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJraXQtY29sdW1uLWdhcDogMHB4OworICAgIGJh
Y2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4Owor
ICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0gewor
ICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9CisKK3RkIHsKKyAgICBiYWNr
Z3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2NvbnN0IG51bUZvcm1zID0gNDsK
K2NvbnN0IG51bUNvbHMgPSAzOworCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHZhciByZXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzJyk7CisgICAgcmVzLmlubmVySFRNTCA9IHJl
cy5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VYKHJ1bm5lcikg
eworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAgICAgICAgYWNjICs9
IHJ1bm5lci5vZmZzZXRMZWZ0OworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50
OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiBwYWdlWShydW5uZXIpIHsK
KyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7CisgICAgICAgIGFjYyArPSBy
dW5uZXIub2Zmc2V0VG9wOworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50Owor
ICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiB0ZXN0SXQoZm9ybUluZGV4LCBj
b2xJbmRleCwgb2ZzWCwgZXhwZWN0ZWQpCit7CisgICAgY29uc3QgZm9ybSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmIiArIGZvcm1JbmRleCk7CisgICAgY29uc3QgY29sdW1uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImMiICsgZm9ybUluZGV4ICsgIjAiKTsKKyAgICBjb25zdCBjb2xX
aWR0aCA9IE1hdGguZmxvb3IoZm9ybS5vZmZzZXRXaWR0aCAvIG51bUNvbHMpOworCisgICAgY29u
c3Qgc3BpbklkID0gImMiICsgZm9ybUluZGV4ICsgY29sSW5kZXg7CisgICAgY29uc3Qgc3BpbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwaW5JZCk7CisKKyAgICBjb25zdCBjbGlja1ggPSBw
YWdlWChjb2x1bW4pICsgY29sV2lkdGggKiBjb2xJbmRleCArIG9mc1g7CisgICAgY29uc3QgY2xp
Y2tZID0gcGFnZVkoY29sdW1uKSArIE1hdGguZmxvb3Ioc3Bpbi5vZmZzZXRIZWlnaHQgLyAzKTsK
KworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNsaWNrWCwgY2xpY2tZKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CisKKyAgICBpZiAoc3Bpbi52YWx1ZSA9PSBleHBl
Y3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQgIiArIHNwaW5JZCk7CisgICAgZWxzZQorICAgICAg
ICBsb2coIkZBSUxFRCAiICsgc3BpbklkICsgIiBleHBlY3RlZD0iICsgZXhwZWN0ZWQgKyAiIGdv
dD0iICsgc3Bpbi52YWx1ZSArICIgIiArIGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBmb3JtSW5kZXggPCBudW1Gb3JtczsgZm9y
bUluZGV4KyspIHsKKyAgICAgICAgZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51
bUNvbHM7IGNvbEluZGV4KyspIHsKKyAgICAgICAgICB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRl
eCwgMTAsICJiIik7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxoMT5MaXN0Qm94IEluIE11bHRpLUNvdWx1bW48L2gxPgor
VGhpcyBpcyB0ZXN0IGNhc2VzIGZvciA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcvYi83MDg5
OCI+QlVHIDcwODk4PC9hPi4KKworPGgyPk5vIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMCI+Cis8
c2VsZWN0IGlkPSJjMDAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+
PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGll
PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIgLz4K
KzxzZWxlY3QgaWQ9ImMwMSIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlv
bj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJs
aWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAv
PgorPHNlbGVjdCBpZD0iYzAyIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0
aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hh
cmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJy
IC8+Cis8L2Zvcm0+CisKKzxoMj5ESVYgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYxIj4KKzxkaXY+
Cis8c2VsZWN0IGlkPSJjMTAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRp
b24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFy
bGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIg
Lz4KKzxzZWxlY3QgaWQ9ImMxMSIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29w
dGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNo
YXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0Pjxi
ciAvPgorPHNlbGVjdCBpZD0iYzEyIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwv
b3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+
Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+
PGJyIC8+Cis8L2Rpdj4KKzwvZm9ybT4KKworPGgyPlNQQU4gb3V0ZXI8L2gyPgorPGZvcm0gaWQ9
ImYyIj4KKzxzcGFuPgorPHNlbGVjdCBpZD0iYzIwIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJh
Ij5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2
YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+
PC9zZWxlY3Q+PGJyIC8+Cis8c2VsZWN0IGlkPSJjMjEiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9
ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9u
IHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlv
bj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMyMiIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1
ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRp
b24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0
aW9uPjwvc2VsZWN0PjxiciAvPgorPC9zcGFuPgorPC9mb3JtPgorCis8aDI+VEFCTEUgb3V0ZXI8
L2gyPgorPGZvcm0gaWQ9ImYzIj4KKzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBj
ZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjxzZWxlY3QgaWQ9ImMzMCIgc2l6ZT0iNCI+PG9wdGlv
biB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9u
PjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0
YTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PC90cj4KKzx0cj48dGQ+PHNlbGVjdCBpZD0iYzMxIiBz
aXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIi
PkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24g
dmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48L3RyPgorPHRyPjx0ZD48c2Vs
ZWN0IGlkPSJjMzIiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9w
dGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9v
cHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48L3RkPjwvdHI+
Cis8L3RhYmxlPgorPC9mb3JtPgorCis8aDI+UmVzdWx0czwvaDI+Cis8ZGl2IGlkPSJyZXMiPgor
PC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLXdpbi9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1l
eHBlY3RlZC50eHQKaW5kZXggNTliZTE3ZTVkNTFkOGM2N2M4MjY2MmZiOWRjMDM5YzdjYzAzZWRk
MC4uOWVjMDhjNzdiZjEyNTkzZjBmMjEwNDE4YjQzZjI4ZjU0NGFhNzdlNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zm
c2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2lu
L2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcg
QEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAoMzIsIDM3
KQogRkFJTDogZXZlbnQgYXQgKDE1NywgMzIpIGV4cGVjdGVkIHRvIGhpdCByZWwtYm94IGF0ICgy
MiwgMjQpIGJ1dCBoaXQgcmVsLWJveCBhdCAoMjIsIDIyKQogUEFTUzogZXZlbnQgYXQgKDQxMCwg
MzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBGQUlMOiBldmVudCBhdCAoMzYs
IDI3MikgZXhwZWN0ZWQgdG8gaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgKDQsIDQpIGJ1dCBo
aXQgZmlsbGVyIGF0ICg1NiwgMzcyKQotRkFJTDogZXZlbnQgYXQgKDYzOSwgMjA3KSBleHBlY3Rl
ZCB0byBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMTg5KSBidXQgaGl0IGluLWNvbHVtbnMgYXQg
KDE3MywgLTIwNSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGluLWNvbHVtbnMgYXQg
KDMzLCA1KQogRkFJTDogZXZlbnQgYXQgKDU2MywgNDEwKSBleHBlY3RlZCB0byBoaXQgaW5zaWRl
LW92ZXJmbG93IGF0ICg3LCA2KSBidXQgaGl0IG92ZXJmbG93LWNvbnRlbnRzIGF0ICgxNzgsIDEx
MikKIEZBSUw6IGV2ZW50IGF0ICgxMTIsIDM2OSkgZXhwZWN0ZWQgdG8gaGl0IHRyYW5zZm9ybWVk
IGF0ICgxMSwgMTYpIGJ1dCBoaXQgdHJhbnNmb3JtZWQgYXQgKDcsIDIpCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL29mZnNldFgt
b2Zmc2V0WS1leHBlY3RlZC50eHQKaW5kZXggMzQ0MGY1Y2RiN2I0MTZkMzNiMmI1OGRlZWM4YzZl
NmJiMDc1YTRiZC4uOGRjZGU5OWRjZWM4Yzg4YmM4NjhhYzNhMjVhMDZjYmExMjMxNjViYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zm
c2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZl
bnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUzog
ZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAoMzIsIDM3KQogRkFJTDog
ZXZlbnQgYXQgKDE1NywgMzIpIGV4cGVjdGVkIHRvIGhpdCByZWwtYm94IGF0ICgyMiwgMjQpIGJ1
dCBoaXQgcmVsLWJveCBhdCAoMjIsIDIzKQogUEFTUzogZXZlbnQgYXQgKDQxMCwgMzApIGhpdCBm
aXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBGQUlMOiBldmVudCBhdCAoMzYsIDI3MikgZXhw
ZWN0ZWQgdG8gaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgKDQsIDQpIGJ1dCBoaXQgd2l0aC1i
b3JkZXJ0b3BleHRyYSBhdCAoNCwgMCkKLUZBSUw6IGV2ZW50IGF0ICg2MzksIDIwNykgZXhwZWN0
ZWQgdG8gaGl0IGluLWNvbHVtbnMgYXQgKDE3MywgLTE4OSkgYnV0IGhpdCBpbi1jb2x1bW5zIGF0
ICgxNzMsIC0yMTApCitQQVNTOiBldmVudCBhdCAoNjM5LCAyMDcpIGhpdCBpbi1jb2x1bW5zIGF0
ICgzMywgNSkKIEZBSUw6IGV2ZW50IGF0ICg1NjMsIDQxMCkgZXhwZWN0ZWQgdG8gaGl0IGluc2lk
ZS1vdmVyZmxvdyBhdCAoNywgNikgYnV0IGhpdCBpbnNpZGUtb3ZlcmZsb3cgYXQgKDcsIDEpCiBG
QUlMOiBldmVudCBhdCAoMTEyLCAzNjkpIGV4cGVjdGVkIHRvIGhpdCB0cmFuc2Zvcm1lZCBhdCAo
MTEsIDE2KSBidXQgaGl0IHRyYW5zZm9ybWVkIGF0ICg5LCA5KQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112842</attachid>
            <date>2011-10-28 03:17:38 -0700</date>
            <delta_ts>2011-11-04 03:55:46 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-70898-20111028191736.patch</filename>
            <type>text/plain</type>
            <size>30059</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg3MDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1v
ZGUgMTAwNjQ0CmluZGV4IDNjNTdlYzAyZjljNDFkNDM0ZWM1MWUzNjNmODk5ZWE5YWNmNmNkM2Uu
LmQzMDhlNzY2N2NmMzZiNTEzN2U4NmRhNGJjZDQ5N2E2YjhlOGViYWUKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDExLTEwLTI4ICBZb3NpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSYW5nZSBzbGlkZXJzIGFuZCBzcGluIGJ1dHRvbnMgZG9uJ3Qgd29yayB3aXRo
IG11bHRpLWNvbHVtbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MDg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluIG11bHRpLWNvbHVtbiwgY29vcmRpbmF0ZSBvZiBib3ggbW9kZWwgcmVuZGVyaW5n
IG9iamVjdCBpcyBkaWZmZXJlbnQKKyAgICAgICAgZnJvbSBhYnNvbHV0ZSBjb29yZGluYXRlLi4g
Q29sdW1ucyBpbiBib3ggbW9kZWwgcmVuZGVyaW5nIG9iamVjdCBzcGFucworICAgICAgICB2ZXJ0
aWNhbGx5IHJhdGhlciB0aGFuIGhvcml6b250YWxseS4KKworICAgICAgICBXaGVuIGFic29sdXRl
IHBvaW50IGlzIHJlcHJlc2VudGVkIGluIChjb2x1bW5baV0rZHgsIGNvbHVtblswXStkeSksCisg
ICAgICAgIGl0IGlzIChjb2x1bW5bMF0rZHgsIGNvbHVtblswXSArIGNvbHVtbkhlaWdodCArIGR5
KSBpbiBib3ggbW9kZWwKKyAgICAgICAgcmVuZGVyaW5nIG9iamVjdCBjb29yZGluYXRlLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggY2FsY3VsYXRlcyBjb250YWluZXIgb2Zmc2V0IHdpdGggY29uc2lk
ZXJpbmcgdGhpcy4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1t
dWx0aS1jb2x1bW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXIt
aW4tbXVsdGktY29sdW1uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc2VsZWN0L2xp
c3Rib3gtaW4tbXVsdGktY29sdW1uLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQ
b2ludCk6IENhbGwgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQp
OiBNb3ZlIGZyb20gUmVuZGVySW5saW5lOjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDogYWRkIG1hcEFic29sdXRlVG9M
b2NhbFBvaW50LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOiBNb3ZlIG1h
cEFic29sdXRlVG9Mb2NhbFBvaW50IHRvIFJlbmRlckJveE1vZGVsT2JqZWN0LgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDogcmVtb3ZlIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50
LgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEFkZCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UgY2FsbGJhY2sgdG8gRnJhbWVMb2Fk
ZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOTk2Mjkz
Mzg2YjhlMDFlYzUwMjFmYzM2NzI3MThlNWI0NjQ5YzI2Zi4uMDY3NmE1M2VlYzRhMDVjMjI1M2Q2
MTA5MDM5ZjJhYTRmODMwNTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKQEAgLTEzOTUsMjIgKzEzOTUsOCBAQCB2b2lkIFJlbmRlckJveDo6bWFwQWJzb2x1dGVUb0xv
Y2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2ZvcgogICAgICAg
ICBmaXhlZCAmPSBpc0ZpeGVkUG9zOwogICAgIH0gZWxzZQogICAgICAgICBmaXhlZCB8PSBpc0Zp
eGVkUG9zOwotICAgIAotICAgIFJlbmRlck9iamVjdCogbyA9IGNvbnRhaW5lcigpOwotICAgIGlm
ICghbykKLSAgICAgICAgcmV0dXJuOwogCi0gICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
Zml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKLQotICAgIExheW91dFNpemUg
Y29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsK
LQotICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnBy
ZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKHVzZVRyYW5z
Zm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvKSkgewotICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KG8sIGNvbnRhaW5lck9mZnNldCwgdCk7Ci0gICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJh
bnNmb3JtKHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9y
bSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgdHJhbnNmb3JtU3RhdGUubW92ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVy
T2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVU
cmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGZpeGVkLCB1c2VUcmFuc2Zv
cm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CiB9CiAKIExheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKaW5kZXggNTE2ZjFiZTE3OTRkMjkwMDE3OWY1OGJkZTA5ZTJkNGY2NjY3NDc1ZS4uY2Yw
YzAzNjY1Y2I4MmUyOTE5NmIxZWEwNWE3YmNmMjQ1NGIyYzNlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCIKIAorI2luY2x1ZGUgIkNvbHVtbkluZm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJU
cmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwpAQCAtMjU4MCw0ICsyNTgyLDQ3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAg
ICByZXR1cm4gIWNvbnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlw
cGVkKCk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRy
YW5zZm9ybVN0YXRlKSBjb25zdAoreworICAgIC8vIFdlIGRvbid0IGV4cGVjdCBhYnNvbHV0ZVRv
TG9jYWwoKSB0byBiZSBjYWxsZWQgZHVyaW5nIGxheW91dCAoeWV0KQorICAgIEFTU0VSVCghdmll
dygpIHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKKworICAgIFJlbmRlck9iamVj
dCogbyA9IGNvbnRhaW5lcigpOworICAgIGlmICghbykKKyAgICAgICAgcmV0dXJuOworCisgICAg
by0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9y
bVN0YXRlKTsKKworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNv
bnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKKworICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigp
ICE9IEFic29sdXRlUG9zaXRpb24gJiYgc3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0
aW9uICYmIG8tPmhhc0NvbHVtbnMoKSkgeworICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBz
dGF0aWNfY2FzdDxSZW5kZXJCbG9jayo+KG8pOworICAgICAgICBDb2x1bW5JbmZvKiBjb2xJbmZv
ID0gYmxvY2stPmNvbHVtbkluZm8oKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgcG9pbnQocm91bmRl
ZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICAgICAgcG9p
bnQgLT0gY29udGFpbmVyT2Zmc2V0OworICAgICAgICBzaXplX3QgY29sQ291bnQgPSBibG9jay0+
Y29sdW1uQ291bnQoY29sSW5mbyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29s
Q291bnQ7IGkrKykgeworICAgICAgICAgICAgTGF5b3V0UmVjdCBjb2xSZWN0ID0gYmxvY2stPmNv
bHVtblJlY3RBdChjb2xJbmZvLCBpKTsKKyAgICAgICAgICAgIGlmIChjb2xSZWN0LmNvbnRhaW5z
KHBvaW50KSkgeworICAgICAgICAgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgICAgICAgICAg
IExheW91dFJlY3QgY29sUmVjdDAgPSBibG9jay0+Y29sdW1uUmVjdEF0KGNvbEluZm8sIDApOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJPZmZzZXQuZXhwYW5kKGNvbFJlY3Qu
bG9jYXRpb24oKS54KCkgLSBjb2xSZWN0MC5sb2NhdGlvbigpLngoKSwgLWNvbEluZm8tPmNvbHVt
bkhlaWdodCgpICogaSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRhaW5lck9mZnNldC5leHBhbmQoLWNvbEluZm8tPmRlc2lyZWRDb2x1bW5X
aWR0aCgpICogaSwgY29sUmVjdC5sb2NhdGlvbigpLnkoKSAtIGNvbFJlY3QwLmxvY2F0aW9uKCku
eSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFu
c2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZl
czNEKCkpOworICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21D
b250YWluZXIobykpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKKyAgICAgICAg
Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQpOworICAgICAg
ICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3Jt
U3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5z
Zm9ybSk7CisgICAgfSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoY29udGFpbmVy
T2Zmc2V0LndpZHRoKCksIGNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRy
YW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0
ZW5UcmFuc2Zvcm0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGU2YWI3MGFlOGI4
NzY1MjgwOGQ1ODRhMDI5OTQ2OGMwODY5YWE3NDEuLjhjOWRhYzZjZWJiZTMzYzJmZTliMTdkMGRm
ZjlhNmEyMTVkNzkwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oCkBAIC0xMjUsNiArMTI1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWFwQWJz
b2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYpIGNvbnN0IE9WRVJSSURFOworCiAgICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVj
dDo6d2lsbEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hvdWxkIGV2
ZXIgYmUgZGVzdHJveWVkCiAgICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAzZjA5NjMzYjAwOGQ5NTZmYTFmN2Uy
MTgyZTMwYzRkZDIwNWFjM2EzLi5iMGIwY2I3ZWU3NDIyYzdjYWFiN2UyZmZhM2UzNDIzNzJkMDBl
NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTE2
MSwyOCArMTE2MSw2IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBiCiAgICAgby0+bWFwTG9jYWxU
b0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNm
b3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAotewotICAgIC8vIFdlIGRvbid0IGV4cGVjdCB0aGlz
IGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBkdXJpbmcgbGF5b3V0LgotICAgIEFTU0VSVCghdmlldygp
IHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKLQotICAgIFJlbmRlck9iamVjdCog
byA9IGNvbnRhaW5lcigpOwotICAgIGlmICghbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgby0+
bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0
YXRlKTsKLQotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRh
aW5lcihvLCBMYXlvdXRQb2ludCgpKTsKLQotICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRyYW5z
Zm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVz
M0QoKSk7Ci0gICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNv
bnRhaW5lcihvKSkgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgICAgICBn
ZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8sIGNvbnRhaW5lck9mZnNldCwgdCk7Ci0gICAgICAg
IHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1T
dGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNm
b3JtKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShjb250YWluZXJP
ZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJh
bnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRl
blRyYW5zZm9ybSk7Ci19Ci0KIHZvaWQgUmVuZGVySW5saW5lOjp1cGRhdGVEcmFnU3RhdGUoYm9v
bCBkcmFnT24pCiB7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZURyYWdTdGF0ZShk
cmFnT24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IGZlOTVh
ZjFmZTE4NzU0MjY1YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkuLjA0OTA1YzJiMzg0NjIwNDA2Nzli
NmQ0Mjk4MzEwYjJiNGViOTdhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmgKQEAgLTEzMSw3ICsxMzEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2Fz
Rml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9p
bnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBh
ODk5YzRhMjQxNWVkYjI4ZDQzYjU1YzAxNGE1MzNmYzM5MjUyYTdiLi4yODVmZjI5ZWE5MDU1ZGNk
N2M2NjFjMDQwMDMzMWJjNTY4ZDg3ZGUyCi0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMC0yOCAgWW9z
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmFuZ2Ugc2xpZGVy
cyBhbmQgc3BpbiBidXR0b25zIGRvbid0IHdvcmsgd2l0aCBtdWx0aS1jb2x1bW5zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvbGlz
dGJveC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvbGlzdGJveC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVs
dGktY29sdW1uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVy
LWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sOiBBZGRlZC4KKwogMjAxMS0xMC0y
OCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQg
YWxsb3dTY3JpcHRGcm9tU291cmNlIGNhbGxiYWNrIHRvIEZyYW1lTG9hZGVyQ2xpZW50CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4
dAppbmRleCAwNTAyNGNmZmFlNDAyMThiZThmZmQ0ZDcxYTVlZDFiOWJmOTIwNjEyLi43MTEyMjQx
NGE0YzE2NDJlZjMzZjU3NDlkZTc3M2FiYWU0ZGNkYzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4
LDcgQEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAoMzIs
IDM3KQogUEFTUzogZXZlbnQgYXQgKDE1NywgMzIpIGhpdCByZWwtYm94IGF0IG9mZnNldCAoMjIs
IDI0KQogUEFTUzogZXZlbnQgYXQgKDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgx
MCwgMTApCiBQQVNTOiBldmVudCBhdCAoMzYsIDI3MikgaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEg
YXQgb2Zmc2V0ICg0LCA0KQotUEFTUzogZXZlbnQgYXQgKDYzOSwgMjA3KSBoaXQgaW4tY29sdW1u
cyBhdCBvZmZzZXQgKDE3MywgLTE4OSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGlu
LWNvbHVtbnMgYXQgb2Zmc2V0ICgzNSwgNSkKIFBBU1M6IGV2ZW50IGF0ICg1NjMsIDQxMCkgaGl0
IGluc2lkZS1vdmVyZmxvdyBhdCBvZmZzZXQgKDcsIDYpCiBQQVNTOiBldmVudCBhdCAoMTEyLCAz
NjkpIGhpdCB0cmFuc2Zvcm1lZCBhdCBvZmZzZXQgKDExLCAxNikKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbAppbmRleCBiZjM4ZTA0ZTM1YzgxOWQyYjUx
M2NjNjM5NDFiMDEyNzljYmEwMjQ4Li45YzgyZjhlYjEwZGZhZGQxNDE1ODA4YmExNjYxYmMzZjhl
NGQ2NTdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNl
dFkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRt
bApAQCAtMzcsNyArMzcsNyBAQAogICAgICAgZGlzcGF0Y2hFdmVudCgxNTcsIDMyLCAncmVsLWJv
eCcsIDIyLCAyNCk7CiAgICAgICBkaXNwYXRjaEV2ZW50KDQxMCwgMzAsICdmaXhlZC1ib3gnLCAx
MCwgMTApOwogICAgICAgZGlzcGF0Y2hFdmVudCgzNiwgMjcyLCAnd2l0aC1ib3JkZXJ0b3BleHRy
YScsIDQsIDQpOwotICAgICAgZGlzcGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAx
NzMsIC0xODkpOworICAgICAgZGlzcGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAz
NSwgNSk7CiAgICAgICBkaXNwYXRjaEV2ZW50KDU2MywgNDEwLCAnaW5zaWRlLW92ZXJmbG93Jywg
NywgNik7CiAgICAgICBkaXNwYXRjaEV2ZW50KDExMiwgMzY5LCAndHJhbnNmb3JtZWQnLCAxMSwg
MTYpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251
bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjNkY2UzYjdmZGNiNGRhYjEyOGUyOWVkYzQ2OTQ0ZWE4ZGMyNTE2MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBACitTcGluIEluIE11bHRpLUNvdWx1bW4KKwor
VGhpcyBpcyB0ZXN0IGNhc2VzIGZvciBCVUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYg
b3V0ZXIKKworCisKKworU1BBTiBvdXRlcgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKwor
UmVzdWx0cworCitQQVNTRUQgYzAwCitQQVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEw
CitQQVNTRUQgYzExCitQQVNTRUQgYzEyCitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQg
YzIyCitQQVNTRUQgYzMwCitQQVNTRUQgYzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE4YmY2MmRhNWI2NzRkZTE2ODVkOTQyMjg0Nzc5NWYxNTFlNzg1YTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRp
LWNvbHVtbi5odG1sCkBAIC0wLDAgKzEsMTQzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KK2Zvcm0geworICAgIC13ZWJraXQtY29sdW1u
LWNvdW50OiAzOworICAgIC13ZWJraXQtY29sdW1uLWdhcDogMHB4OworICAgIC1tb3otY29sdW1u
LWNvdW50OiAzOworICAgIC1tb3otY29sdW1uLWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNj
Y2NjZmY7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjog
c29saWQgMXB4IHJlZDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0geworICAgIHdpZHRoOiAx
MDBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9CisKK3RkIHsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7
Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2NvbnN0IG51bUZvcm1zID0gNDsKK2NvbnN0IG51bUNv
bHMgPSAzOworCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHZhciByZXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzJyk7CisgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwg
KyBtc2cgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VYKHJ1bm5lcikgeworICAgIHZhciBh
Y2MgPSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZz
ZXRMZWZ0OworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAg
ICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiBwYWdlWShydW5uZXIpIHsKKyAgICB2YXIgYWNj
ID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zmc2V0
VG9wOworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICBy
ZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgb2Zz
WCwgZXhwZWN0ZWQpCit7CisgICAgY29uc3QgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmIiArIGZvcm1JbmRleCk7CisgICAgY29uc3QgY29sdW1uID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImMiICsgZm9ybUluZGV4ICsgIjAiKTsKKyAgICBjb25zdCBjb2xXaWR0aCA9IE1hdGgu
Zmxvb3IoZm9ybS5vZmZzZXRXaWR0aCAvIG51bUNvbHMpOworCisgICAgY29uc3Qgc3BpbklkID0g
ImMiICsgZm9ybUluZGV4ICsgY29sSW5kZXg7CisgICAgY29uc3Qgc3BpbiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHNwaW5JZCk7CisKKyAgICBjb25zdCBjbGlja1ggPSBwYWdlWChjb2x1bW4p
ICsgY29sV2lkdGggKiBjb2xJbmRleCArIG9mc1g7CisgICAgY29uc3QgY2xpY2tZID0gcGFnZVko
Y29sdW1uKSArIE1hdGguZmxvb3Ioc3Bpbi5vZmZzZXRIZWlnaHQgLyAzKTsKKworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKGNsaWNrWCwgY2xpY2tZKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oMCwgMCk7CisKKyAgICBpZiAoc3Bpbi52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAg
ICAgbG9nKCJQQVNTRUQgIiArIHNwaW5JZCk7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUxF
RCAiICsgc3BpbklkICsgIiBleHBlY3RlZD0iICsgZXhwZWN0ZWQgKyAiIGdvdD0iICsgc3Bpbi52
YWx1ZSArICIgIiArIGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIGluc3Rh
bGxNb3VzZVRyYWNrZXIoKSB7CisgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlbW92ZSA9IGZ1bmN0
aW9uKGUpIHsKKyAgICAgICAgdmFyIHJlc3VsdEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJtb3VzZXBvcyIpOworICAgICAgICB2YXIgb2Zmc2V0cyA9ICJlbGVtZW50IGlkOiAiICsgZS50
YXJnZXQuaWQgKyAiPGJyPiBjbGllbnRYOiAiICsgZS5jbGllbnRYICsgIiBjbGllbnRZOiAiICsg
ZS5jbGllbnRZICsgIjxicj4iOworICAgICAgICBvZmZzZXRzICs9ICJvZmZzZXRYOiAiICsgZS5v
ZmZzZXRYICsgIiBvZmZzZXRZOiAiICsgZS5vZmZzZXRZOworICAgICAgICByZXN1bHRCb3guaW5u
ZXJIVE1MID0gb2Zmc2V0czsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGluc3RhbGxNb3VzZVRy
YWNrZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZvciAodmFyIGZvcm1JbmRleCA9IDA7IGZvcm1JbmRl
eCA8IG51bUZvcm1zOyBmb3JtSW5kZXgrKykgeworICAgICAgICBmb3IgKHZhciBjb2xJbmRleCA9
IDA7IGNvbEluZGV4IDwgbnVtQ29sczsgY29sSW5kZXgrKykgeworICAgICAgICAgIHRlc3RJdChm
b3JtSW5kZXgsIGNvbEluZGV4LCA5MywgMTApOworICAgICAgICB9CisgICAgfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aDE+U3BpbiBJbiBNdWx0aS1D
b3VsdW1uPC9oMT4KK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJr
aXQub3JnL2IvNzA4OTgiPkJVRyA3MDg5ODwvYT4uCisKKzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9y
bSBpZD0iZjAiPgorPGlucHV0IGlkPSJjMDAiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEw
MCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMwMSIgdHlwZT0ibnVtYmVyIiBtaW49
IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzAyIiB0eXBlPSJu
dW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9mb3JtPgorCis8
aDI+RElWIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMSI+Cis8ZGl2PgorPGlucHV0IGlkPSJjMTAi
IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5w
dXQgaWQ9ImMxMSIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48
YnIgLz4KKzxpbnB1dCBpZD0iYzEyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0
ZXA9IjEwIiAvPjxiciAvPgorPC9kaXY+Cis8L2Zvcm0+CisKKzxoMj5TUEFOIG91dGVyPC9oMj4K
Kzxmb3JtIGlkPSJmMiI+Cis8c3Bhbj4KKzxpbnB1dCBpZD0iYzIwIiB0eXBlPSJudW1iZXIiIG1p
bj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjEiIHR5cGU9
Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9
ImMyMiIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4K
Kzwvc3Bhbj4KKzwvZm9ybT4KKworPGgyPlRBQkxFIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMyI+
Cis8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRy
Pjx0ZD48aW5wdXQgaWQ9ImMzMCIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVw
PSIxMCIgLz48L3RkPjwvdHI+Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMxIiB0eXBlPSJudW1iZXIi
IG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlucHV0
IGlkPSJjMzIiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90
ZD48L3RyPgorPC90YWJsZT4KKzwvZm9ybT4KKworPGgyPlJlc3VsdHM8L2gyPgorPGRpdiBpZD0i
bW91c2Vwb3MiPjwvZGl2PgorPGRpdiBpZD0icmVzIj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29sdW1u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11
bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZjZDMzMDgyMmU4MWI0YTVmMjQ4
MWI0NjE5MGE0OGQzZjdjZjM5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzOCBAQAorU2xpZGVyIEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNhc2VzIGZv
ciBCVUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBv
dXRlcgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAw
CitQQVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQg
YzEyCitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNT
RUQgYzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29sdW1uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMwYzNiMjMx
ODhmNjEzNDM2YTRiNzJhZGU4MWU3YTlkYjAwYzMyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0w
LDAgKzEsMTI5IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIj4KK2Zvcm0geworICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13
ZWJraXQtY29sdW1uLWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFy
Z2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsK
K30KKworaW5wdXRbdHlwZT0icmFuZ2UiXSB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdo
dDogNTBweDsKK30KKwordGQgeworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8
c2NyaXB0PgorY29uc3QgbnVtRm9ybXMgPSA0OworY29uc3QgbnVtQ29scyA9IDM7CisKK2Z1bmN0
aW9uIGxvZyhtc2cpCit7CisgICAgdmFyIHJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXMnKTsKKyAgICByZXMuaW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArIG1zZyArICI8YnI+IjsK
K30KKworZnVuY3Rpb24gcGFnZVgocnVubmVyKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgd2hp
bGUgKHJ1bm5lcikgeworICAgICAgICBhY2MgKz0gcnVubmVyLm9mZnNldExlZnQ7CisgICAgICAg
IHJ1bm5lciA9IHJ1bm5lci5vZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9
CisKK2Z1bmN0aW9uIHBhZ2VZKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxl
IChydW5uZXIpIHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRUb3A7CisgICAgICAgIHJ1
bm5lciA9IHJ1bm5lci5vZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisK
K2Z1bmN0aW9uIHRlc3RJdChmb3JtSW5kZXgsIGNvbEluZGV4LCBvZnNYLCBleHBlY3RlZCkKK3sK
KyAgICBjb25zdCBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiICsgZm9ybUluZGV4
KTsKKyAgICBjb25zdCBjb2x1bW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIgKyBmb3Jt
SW5kZXggKyAiMCIpOworICAgIGNvbnN0IGNvbFdpZHRoID0gTWF0aC5mbG9vcihmb3JtLm9mZnNl
dFdpZHRoIC8gbnVtQ29scyk7CisKKyAgICBjb25zdCBzbGlkZXJJZCA9ICJjIiArIGZvcm1JbmRl
eCArIGNvbEluZGV4OworICAgIGNvbnN0IHNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHNsaWRlcklkKTsKKworICAgIGNvbnN0IGNsaWNrWCA9IHBhZ2VYKGNvbHVtbikgKyBjb2xXaWR0
aCAqIGNvbEluZGV4ICsgb2ZzWDsKKyAgICBjb25zdCBjbGlja1kgPSBwYWdlWShjb2x1bW4pICsg
c2xpZGVyLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
bGlja1gsIGNsaWNrWSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworCisgICAgaWYgKHNsaWRlci52YWx1ZSA9PSBleHBlY3RlZCkKKyAg
ICAgICAgbG9nKCJQQVNTRUQgIiArIHNsaWRlcklkKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygi
RkFJTEVEICIgKyBzbGlkZXJJZCArICIgZXhwZWN0ZWQ9IiArIGV4cGVjdGVkICsgIiBnb3Q9IiAr
IHNsaWRlci52YWx1ZSArICIgIiArIGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBmb3JtSW5kZXggPCBudW1Gb3JtczsgZm9ybUlu
ZGV4KyspIHsKKyAgICAgICAgZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNv
bHM7IGNvbEluZGV4KyspIHsKKyAgICAgICAgICB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwg
MjMsIDIwKTsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgorPGgxPlNsaWRlciBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMg
aXMgdGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJV
RyA3MDg5ODwvYT4uCisKKzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjAiPgorPGlucHV0
IGlkPSJjMDAiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIg
Lz4KKzxpbnB1dCBpZD0iYzAxIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0i
MTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMwMiIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIx
MDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9mb3JtPgorCis8aDI+RElWIG91dGVyPC9oMj4KKzxm
b3JtIGlkPSJmMSI+Cis8ZGl2PgorPGlucHV0IGlkPSJjMTAiIHR5cGU9InJhbmdlIiBtaW49IjAi
IG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzExIiB0eXBlPSJyYW5n
ZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMxMiIg
dHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9kaXY+
Cis8L2Zvcm0+CisKKzxoMj5TUEFOIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMiI+Cis8c3Bhbj4K
KzxpbnB1dCBpZD0iYzIwIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAi
IC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMyMSIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAi
IHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjIiIHR5cGU9InJhbmdlIiBtaW49IjAi
IG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzwvc3Bhbj4KKzwvZm9ybT4KKworPGgyPlRB
QkxFIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMyI+Cis8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFk
ZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48aW5wdXQgaWQ9ImMzMCIgdHlwZT0i
cmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+
PGlucHV0IGlkPSJjMzEiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIg
Lz48L3RkPjwvdHI+Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMyIiB0eXBlPSJyYW5nZSIgbWluPSIw
IiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPC90YWJsZT4KKzwvZm9ybT4KKwor
PGgyPlJlc3VsdHM8L2gyPgorPGRpdiBpZD0icmVzIj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNv
bHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94
LWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDExM2NlNzU0YmRlNTg5
MWNjNjRjZDRkNzg1MTAwZDJjYTNiZjJiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc2VsZWN0L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM4IEBACitMaXN0Qm94IEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0
IGNhc2VzIGZvciBCVUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisK
KworU1BBTiBvdXRlcgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQ
QVNTRUQgYzAwCitQQVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzEx
CitQQVNTRUQgYzEyCitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQg
YzMwCitQQVNTRUQgYzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRmYzYzNTg0MTFjNGVhNDE2YmI4YWE3N2YyNTFmNWYxNDE0N2FhYjUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNv
bHVtbi5odG1sCkBAIC0wLDAgKzEsMTMzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KK2JvZHkgeworICAgIGZvbnQtc2l6ZTogMTNweDsK
K30KK2Zvcm0geworICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJraXQtY29s
dW1uLWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAwcHg7
CisgICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKworaW5w
dXRbdHlwZT0ibnVtYmVyIl0geworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDUwcHg7
Cit9CisKK3RkIHsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4K
K2NvbnN0IG51bUZvcm1zID0gNDsKK2NvbnN0IG51bUNvbHMgPSAzOworCitmdW5jdGlvbiBsb2co
bXNnKQoreworICAgIHZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzJyk7Cisg
ICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7Cit9CisKK2Z1
bmN0aW9uIHBhZ2VYKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5u
ZXIpIHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRMZWZ0OworICAgICAgICBydW5uZXIg
PSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5j
dGlvbiBwYWdlWShydW5uZXIpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVy
KSB7CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zmc2V0VG9wOworICAgICAgICBydW5uZXIgPSBy
dW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlv
biB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgb2ZzWCwgZXhwZWN0ZWQpCit7CisgICAgY29u
c3QgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmIiArIGZvcm1JbmRleCk7CisgICAg
Y29uc3QgY29sdW1uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiICsgZm9ybUluZGV4ICsg
IjAiKTsKKyAgICBjb25zdCBjb2xXaWR0aCA9IE1hdGguZmxvb3IoZm9ybS5vZmZzZXRXaWR0aCAv
IG51bUNvbHMpOworCisgICAgY29uc3Qgc3BpbklkID0gImMiICsgZm9ybUluZGV4ICsgY29sSW5k
ZXg7CisgICAgY29uc3Qgc3BpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwaW5JZCk7CisK
KyAgICBjb25zdCBjbGlja1ggPSBwYWdlWChjb2x1bW4pICsgY29sV2lkdGggKiBjb2xJbmRleCAr
IG9mc1g7CisgICAgY29uc3QgY2xpY2tZID0gcGFnZVkoY29sdW1uKSArIE1hdGguZmxvb3Ioc3Bp
bi5vZmZzZXRIZWlnaHQgLyAzKTsKKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNsaWNr
WCwgY2xpY2tZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CisKKyAgICBp
ZiAoc3Bpbi52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQgIiArIHNwaW5J
ZCk7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUxFRCAiICsgc3BpbklkICsgIiBleHBlY3Rl
ZD0iICsgZXhwZWN0ZWQgKyAiIGdvdD0iICsgc3Bpbi52YWx1ZSArICIgIiArIGNsaWNrWCArICJA
IiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBmb3Jt
SW5kZXggPCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsKKyAgICAgICAgZm9yICh2YXIgY29sSW5k
ZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbEluZGV4KyspIHsKKyAgICAgICAgICB0ZXN0
SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgMTAsICJiIik7CisgICAgICAgIH0KKyAgICB9Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxoMT5MaXN0Qm94IElu
IE11bHRpLUNvdWx1bW48L2gxPgorVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciA8YSBocmVmPSJodHRw
czovL3dlYmtpdC5vcmcvYi83MDg5OCI+QlVHIDcwODk4PC9hPi4KKworPGgyPk5vIG91dGVyPC9o
Mj4KKzxmb3JtIGlkPSJmMCI+Cis8c2VsZWN0IGlkPSJjMDAiIHNpemU9IjQiPjxvcHRpb24gdmFs
dWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0
aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29w
dGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMwMSIgc2l6ZT0iNCI+PG9wdGlvbiB2
YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxv
cHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwv
b3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPHNlbGVjdCBpZD0iYzAyIiBzaXplPSI0Ij48b3B0aW9u
IHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+
PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRh
PC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8L2Zvcm0+CisKKzxoMj5ESVYgb3V0ZXI8L2gyPgor
PGZvcm0gaWQ9ImYxIj4KKzxkaXY+Cis8c2VsZWN0IGlkPSJjMTAiIHNpemU9IjQiPjxvcHRpb24g
dmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48
b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8
L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMxMSIgc2l6ZT0iNCI+PG9wdGlv
biB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9u
PjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0
YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPHNlbGVjdCBpZD0iYzEyIiBzaXplPSI0Ij48b3B0
aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRp
b24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRl
bHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8L2Rpdj4KKzwvZm9ybT4KKworPGgyPlNQQU4g
b3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYyIj4KKzxzcGFuPgorPHNlbGVjdCBpZD0iYzIwIiBzaXpl
PSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJy
YXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFs
dWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8c2VsZWN0IGlkPSJjMjEiIHNp
emU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+
QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2
YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMyMiIg
c2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJi
Ij5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9u
IHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPC9zcGFuPgorPC9mb3Jt
PgorCis8aDI+VEFCTEUgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYzIj4KKzx0YWJsZSBib3JkZXI9
IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjxzZWxlY3QgaWQ9
ImMzMCIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZh
bHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48
b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PC90cj4KKzx0cj48
dGQ+PHNlbGVjdCBpZD0iYzMxIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0
aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hh
cmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PC90
ZD48L3RyPgorPHRyPjx0ZD48c2VsZWN0IGlkPSJjMzIiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9
ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9u
IHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlv
bj48L3NlbGVjdD48L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9mb3JtPgorCis8aDI+UmVzdWx0czwv
aDI+Cis8ZGl2IGlkPSJyZXMiPgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZl
bnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKaW5kZXggNTliZTE3ZTVkNTFkOGM2N2M4
MjY2MmZiOWRjMDM5YzdjYzAzZWRkMC4uOTI2MWVmYmVkOGIyMjllN2ZiYzVkODAxZDYzZGJjYmM0
ZjUwYTk4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3Rl
ZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMt
Ym94IGF0IG9mZnNldCAoMzIsIDM3KQogRkFJTDogZXZlbnQgYXQgKDE1NywgMzIpIGV4cGVjdGVk
IHRvIGhpdCByZWwtYm94IGF0ICgyMiwgMjQpIGJ1dCBoaXQgcmVsLWJveCBhdCAoMjIsIDIyKQog
UEFTUzogZXZlbnQgYXQgKDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTAp
CiBGQUlMOiBldmVudCBhdCAoMzYsIDI3MikgZXhwZWN0ZWQgdG8gaGl0IHdpdGgtYm9yZGVydG9w
ZXh0cmEgYXQgKDQsIDQpIGJ1dCBoaXQgZmlsbGVyIGF0ICg1NiwgMzcyKQotRkFJTDogZXZlbnQg
YXQgKDYzOSwgMjA3KSBleHBlY3RlZCB0byBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMTg5KSBi
dXQgaGl0IGluLWNvbHVtbnMgYXQgKDE3MywgLTIwNSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIw
NykgaGl0IGluLWNvbHVtbnMgYXQgb2Zmc2V0ICgzNSwgNSkKIEZBSUw6IGV2ZW50IGF0ICg1NjMs
IDQxMCkgZXhwZWN0ZWQgdG8gaGl0IGluc2lkZS1vdmVyZmxvdyBhdCAoNywgNikgYnV0IGhpdCBv
dmVyZmxvdy1jb250ZW50cyBhdCAoMTc4LCAxMTIpCiBGQUlMOiBldmVudCBhdCAoMTEyLCAzNjkp
IGV4cGVjdGVkIHRvIGhpdCB0cmFuc2Zvcm1lZCBhdCAoMTEsIDE2KSBidXQgaGl0IHRyYW5zZm9y
bWVkIGF0ICg3LCAyKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFz
dC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CmluZGV4IDM0
NDBmNWNkYjdiNDE2ZDMzYjJiNThkZWVjOGM2ZTZiYjA3NWE0YmQuLjc4MDE2YzIxOTYxMjM1ODlm
NDAyYTEzZTk5ZTFjMWQ2YjdmM2Y0NGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQu
dHh0CkBAIC0xOCw3ICsxOCw3IEBAIFBBU1M6IGV2ZW50IGF0ICgxMTIsIDYyKSBoaXQgYWJzLWJv
eCBhdCBvZmZzZXQgKDMyLCAzNykKIEZBSUw6IGV2ZW50IGF0ICgxNTcsIDMyKSBleHBlY3RlZCB0
byBoaXQgcmVsLWJveCBhdCAoMjIsIDI0KSBidXQgaGl0IHJlbC1ib3ggYXQgKDIyLCAyMykKIFBB
U1M6IGV2ZW50IGF0ICg0MTAsIDMwKSBoaXQgZml4ZWQtYm94IGF0IG9mZnNldCAoMTAsIDEwKQog
RkFJTDogZXZlbnQgYXQgKDM2LCAyNzIpIGV4cGVjdGVkIHRvIGhpdCB3aXRoLWJvcmRlcnRvcGV4
dHJhIGF0ICg0LCA0KSBidXQgaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgKDQsIDApCi1GQUlM
OiBldmVudCBhdCAoNjM5LCAyMDcpIGV4cGVjdGVkIHRvIGhpdCBpbi1jb2x1bW5zIGF0ICgxNzMs
IC0xODkpIGJ1dCBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMjEwKQorUEFTUzogZXZlbnQgYXQg
KDYzOSwgMjA3KSBoaXQgaW4tY29sdW1ucyBhdCBvZmZzZXQgKDM1LCA1KQogRkFJTDogZXZlbnQg
YXQgKDU2MywgNDEwKSBleHBlY3RlZCB0byBoaXQgaW5zaWRlLW92ZXJmbG93IGF0ICg3LCA2KSBi
dXQgaGl0IGluc2lkZS1vdmVyZmxvdyBhdCAoNywgMSkKIEZBSUw6IGV2ZW50IGF0ICgxMTIsIDM2
OSkgZXhwZWN0ZWQgdG8gaGl0IHRyYW5zZm9ybWVkIGF0ICgxMSwgMTYpIGJ1dCBoaXQgdHJhbnNm
b3JtZWQgYXQgKDksIDkpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKaW5kZXgg
MzQ0MGY1Y2RiN2I0MTZkMzNiMmI1OGRlZWM4YzZlNmJiMDc1YTRiZC4uNzgwMTZjMjE5NjEyMzU4
OWY0MDJhMTNlOTllMWMxZDZiN2YzZjQ0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3Rl
ZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMt
Ym94IGF0IG9mZnNldCAoMzIsIDM3KQogRkFJTDogZXZlbnQgYXQgKDE1NywgMzIpIGV4cGVjdGVk
IHRvIGhpdCByZWwtYm94IGF0ICgyMiwgMjQpIGJ1dCBoaXQgcmVsLWJveCBhdCAoMjIsIDIzKQog
UEFTUzogZXZlbnQgYXQgKDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTAp
CiBGQUlMOiBldmVudCBhdCAoMzYsIDI3MikgZXhwZWN0ZWQgdG8gaGl0IHdpdGgtYm9yZGVydG9w
ZXh0cmEgYXQgKDQsIDQpIGJ1dCBoaXQgd2l0aC1ib3JkZXJ0b3BleHRyYSBhdCAoNCwgMCkKLUZB
SUw6IGV2ZW50IGF0ICg2MzksIDIwNykgZXhwZWN0ZWQgdG8gaGl0IGluLWNvbHVtbnMgYXQgKDE3
MywgLTE4OSkgYnV0IGhpdCBpbi1jb2x1bW5zIGF0ICgxNzMsIC0yMTApCitQQVNTOiBldmVudCBh
dCAoNjM5LCAyMDcpIGhpdCBpbi1jb2x1bW5zIGF0IG9mZnNldCAoMzUsIDUpCiBGQUlMOiBldmVu
dCBhdCAoNTYzLCA0MTApIGV4cGVjdGVkIHRvIGhpdCBpbnNpZGUtb3ZlcmZsb3cgYXQgKDcsIDYp
IGJ1dCBoaXQgaW5zaWRlLW92ZXJmbG93IGF0ICg3LCAxKQogRkFJTDogZXZlbnQgYXQgKDExMiwg
MzY5KSBleHBlY3RlZCB0byBoaXQgdHJhbnNmb3JtZWQgYXQgKDExLCAxNikgYnV0IGhpdCB0cmFu
c2Zvcm1lZCBhdCAoOSwgOSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113642</attachid>
            <date>2011-11-04 03:55:55 -0700</date>
            <delta_ts>2011-11-28 23:29:01 -0800</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-70898-20111104195553.patch</filename>
            <type>text/plain</type>
            <size>37226</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyNTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmOGI3NTAwOTM4YTg0ZWRj
MjE4ODk4NDIxNTQ1YmYyZDRmOTNhY2FiLi4zY2E3NjUwOGRjZTAwZGIwZjZjMGYyNThmZGE3YTgx
NGI3ODEwNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTEtMDQgIFlvc2lm
dW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJhbmdlIHNsaWRlcnMg
YW5kIHNwaW4gYnV0dG9ucyBkb24ndCB3b3JrIHdpdGggbXVsdGktY29sdW1ucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBS
ZW5kZXJCbG9jazo6aGl0VGVzdENvbHVtbnMgYW5kCisgICAgICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWwgdG8gaGFuZGxlIHBvaW50CisgICAgICAgIGluIG11bHRp
LWNvbHVtbiBzYW1lIGxvZ2ljLgorCisgICAgICAgIEluIG11bHRpLWNvbHVtbiwgY29vcmRpbmF0
ZSBvZiBib3ggbW9kZWwgcmVuZGVyaW5nIG9iamVjdCBpcyBkaWZmZXJlbnQKKyAgICAgICAgZnJv
bSBhYnNvbHV0ZSBjb29yZGluYXRlLi4gQ29sdW1ucyBpbiBib3ggbW9kZWwgcmVuZGVyaW5nIG9i
amVjdCBzcGFucworICAgICAgICB2ZXJ0aWNhbGx5IHJhdGhlciB0aGFuIGhvcml6b250YWxseS4K
KworICAgICAgICBXaGVuIGFic29sdXRlIHBvaW50IGlzIHJlcHJlc2VudGVkIGluIChjb2x1bW5b
aV0rZHgsIGNvbHVtblswXStkeSksCisgICAgICAgIGl0IGlzIChjb2x1bW5bMF0rZHgsIGNvbHVt
blswXSArIGNvbHVtbkhlaWdodCArIGR5KSBpbiBib3ggbW9kZWwKKyAgICAgICAgcmVuZGVyaW5n
IG9iamVjdCBjb29yZGluYXRlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9kb2N1bWVu
dC1lbGVtZW50RnJvbVBvaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL29mZnNl
dFgtb2Zmc2V0WS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL251bWJlci9zcGluLWlu
LW11bHRpLWNvbHVtbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3JhbmdlL3NsaWRl
ci1pbi1tdWx0aS1jb2x1bW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9zZWxlY3Qv
bGlzdGJveC1pbi1tdWx0aS1jb2x1bW4uaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbHVtblJlY3RJdGVyYXRvcjo6Q29sdW1u
UmVjdEl0ZXJhdG9yKTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OkNvbHVtblJlY3RJdGVyYXRv
cjo6YWR2YW5jZSk6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpDb2x1bW5SZWN0SXRlcmF0b3I6
OmNvbHVtblJlY3QpOiBBZGRlZAorICAgICAgICAoV2ViQ29yZTo6Q29sdW1uUmVjdEl0ZXJhdG9y
OjpoYXNNb3JlKTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OkNvbHVtblJlY3RJdGVyYXRvcjo6
YWRqdXN0KTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OkNvbHVtblJlY3RJdGVyYXRvcjo6dXBk
YXRlKTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoaXRUZXN0Q29sdW1u
cyk6IFVzZSBDb2x1bW5SZWN0SXRlcmF0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6YWRqdXN0Rm9yQ29sdW1uUmVjdCk6IEFkZGVkCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmg6IEFkZCBhZGp1c3RGb3JDb2x1bW5SZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXBBYnNvbHV0ZVRv
TG9jYWxQb2ludCk6IENhbGwgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2Fs
UG9pbnQpOiBNb3ZlIGZyb20gUmVuZGVySW5saW5lOjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCBh
bmQgY2FsbCBSZW5kZXJCbG9jazo6YWRqdXN0Rm9yQ29sdW1uUmVjdC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDogYWRkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOiBNb3ZlIG1hcEFic29sdXRl
VG9Mb2NhbFBvaW50IHRvIFJlbmRlckJveE1vZGVsT2JqZWN0LgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaDogcmVtb3ZlIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50LgorCiAyMDEx
LTExLTAzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZDU5YjIzMjRkMWVhM2I0MzkzMzU1OTc2
NWZmZTJlOTcwMzYzZTY0My4uYTg1YWU4YTY0ZDJhNmQyY2ZiN2EyNTIxNTcwMGE0NzIzNGJiYWE3
NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00MjE2LDUx
ICs0MjE2LDEwMiBAQCBib29sIFJlbmRlckJsb2NrOjpoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorY2xhc3MgQ29sdW1uUmVjdEl0ZXJhdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDb2x1bW5SZWN0SXRlcmF0b3IpOworcHVibGljOgorICAgIENvbHVtblJlY3RJdGVyYXRvcihj
b25zdCBSZW5kZXJCbG9jayYgYmxvY2spCisgICAgICAgIDogbV9ibG9jayhibG9jaykKKyAgICAg
ICAgLCBtX2NvbEluZm8oYmxvY2suY29sdW1uSW5mbygpKQorICAgICAgICAsIG1fZGlyZWN0aW9u
KG1fYmxvY2suc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IDEgOiAtMSkK
KyAgICAgICAgLCBtX2lzSG9yaXpvbnRhbChibG9jay5pc0hvcml6b250YWxXcml0aW5nTW9kZSgp
KQorICAgICAgICAsIG1fbG9naWNhbExlZnQoYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JDb250
ZW50KCkpCisgICAgeworICAgICAgICBpbnQgY29sQ291bnQgPSBtX2NvbEluZm8tPmNvbHVtbkNv
dW50KCk7CisgICAgICAgIG1fY29sSW5kZXggPSBjb2xDb3VudCAtIDE7CisgICAgICAgIG1fY3Vy
ckxvZ2ljYWxUb3BPZmZzZXQgPSBjb2xDb3VudCAqIG1fY29sSW5mby0+Y29sdW1uSGVpZ2h0KCkg
KiBtX2RpcmVjdGlvbjsKKyAgICAgICAgdXBkYXRlKCk7CisgICAgfQorCisgICAgdm9pZCBhZHZh
bmNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNNb3JlKCkpOworICAgICAgICBtX2NvbElu
ZGV4LS07CisgICAgICAgIHVwZGF0ZSgpOworICAgIH0KKworICAgIExheW91dFJlY3QgY29sdW1u
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sUmVjdDsgfQorICAgIGJvb2wgaGFzTW9yZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29sSW5kZXggPj0gMDsgfQorCisgICAgdm9pZCBhZGp1c3QoTGF5b3V0
U2l6ZSYgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgTGF5b3V0VW5pdCBjdXJyTG9naWNh
bExlZnRPZmZzZXQgPSAobV9pc0hvcml6b250YWwgPyBtX2NvbFJlY3QueCgpIDogbV9jb2xSZWN0
LnkoKSkgLSBtX2xvZ2ljYWxMZWZ0OworICAgICAgICBvZmZzZXQgKz0gbV9pc0hvcml6b250YWwg
PyBMYXlvdXRTaXplKGN1cnJMb2dpY2FsTGVmdE9mZnNldCwgbV9jdXJyTG9naWNhbFRvcE9mZnNl
dCkgOiBMYXlvdXRTaXplKG1fY3VyckxvZ2ljYWxUb3BPZmZzZXQsIGN1cnJMb2dpY2FsTGVmdE9m
ZnNldCk7CisgICAgICAgIGlmIChtX2NvbEluZm8tPnByb2dyZXNzaW9uQXhpcygpID09IENvbHVt
bkluZm86OkJsb2NrQXhpcykgeworICAgICAgICAgICAgaWYgKG1faXNIb3Jpem9udGFsKQorICAg
ICAgICAgICAgICAgIG9mZnNldC5leHBhbmQoMCwgbV9jb2xSZWN0LnkoKSAtIG1fYmxvY2suYm9y
ZGVyVG9wKCkgLSBtX2Jsb2NrLnBhZGRpbmdUb3AoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgb2Zmc2V0LmV4cGFuZChtX2NvbFJlY3QueCgpIC0gbV9ibG9jay5ib3JkZXJM
ZWZ0KCkgLSBtX2Jsb2NrLnBhZGRpbmdMZWZ0KCksIDApOworICAgICAgICB9CisgICAgfQorCitw
cml2YXRlOgorICAgIHZvaWQgdXBkYXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2NvbEluZGV4
IDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2NvbFJlY3QgPSBtX2Jsb2Nr
LmNvbHVtblJlY3RBdChjb25zdF9jYXN0PENvbHVtbkluZm8qPihtX2NvbEluZm8pLCBtX2NvbElu
ZGV4KTsKKyAgICAgICAgbV9ibG9jay5mbGlwRm9yV3JpdGluZ01vZGUobV9jb2xSZWN0KTsKKyAg
ICAgICAgbV9jdXJyTG9naWNhbFRvcE9mZnNldCAtPSAobV9pc0hvcml6b250YWwgPyBtX2NvbFJl
Y3QuaGVpZ2h0KCkgOiBtX2NvbFJlY3Qud2lkdGgoKSkgKiBtX2RpcmVjdGlvbjsKKyAgICB9CisK
KyAgICBjb25zdCBSZW5kZXJCbG9jayYgbV9ibG9jazsKKyAgICBjb25zdCBDb2x1bW5JbmZvKiBj
b25zdCBtX2NvbEluZm87CisgICAgY29uc3QgaW50IG1fZGlyZWN0aW9uOworICAgIGNvbnN0IGJv
b2wgbV9pc0hvcml6b250YWw7CisgICAgY29uc3QgTGF5b3V0VW5pdCBtX2xvZ2ljYWxMZWZ0Owor
ICAgIGludCBtX2NvbEluZGV4OworICAgIExheW91dFVuaXQgbV9jdXJyTG9naWNhbFRvcE9mZnNl
dDsKKyAgICBMYXlvdXRSZWN0IG1fY29sUmVjdDsKK307CisKIGJvb2wgUmVuZGVyQmxvY2s6Omhp
dFRlc3RDb2x1bW5zKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikK
IHsKICAgICAvLyBXZSBuZWVkIHRvIGRvIG11bHRpcGxlIHBhc3NlcywgYnJlYWtpbmcgdXAgb3Vy
IGhpdCB0ZXN0aW5nIGludG8gc3RyaXBzLgotICAgIENvbHVtbkluZm8qIGNvbEluZm8gPSBjb2x1
bW5JbmZvKCk7Ci0gICAgaW50IGNvbENvdW50ID0gY29sdW1uQ291bnQoY29sSW5mbyk7Ci0gICAg
aWYgKCFjb2xDb3VudCkKKyAgICBpZiAoIWhhc0NvbHVtbnMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckNv
bnRlbnQoKTsKLSAgICBMYXlvdXRVbml0IGN1cnJMb2dpY2FsVG9wT2Zmc2V0ID0gIXN0eWxlKCkt
PmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyAtY29sQ291bnQgKiBjb2xJbmZvLT5jb2x1
bW5IZWlnaHQoKSA6IGNvbENvdW50ICogY29sSW5mby0+Y29sdW1uSGVpZ2h0KCk7Ci0gICAgYm9v
bCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogCi0gICAgZm9yIChp
bnQgaSA9IGNvbENvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgTGF5b3V0UmVjdCBj
b2xSZWN0ID0gY29sdW1uUmVjdEF0KGNvbEluZm8sIGkpOwotICAgICAgICBmbGlwRm9yV3JpdGlu
Z01vZGUoY29sUmVjdCk7Ci0gICAgICAgIExheW91dFVuaXQgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0
ID0gKGlzSG9yaXpvbnRhbCA/IGNvbFJlY3QueCgpIDogY29sUmVjdC55KCkpIC0gbG9naWNhbExl
ZnQ7Ci0gICAgICAgIExheW91dFVuaXQgYmxvY2tEZWx0YSA9ICAoaXNIb3Jpem9udGFsID8gY29s
UmVjdC5oZWlnaHQoKSA6IGNvbFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIGlmIChzdHlsZSgpLT5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgY3VyckxvZ2ljYWxUb3BP
ZmZzZXQgLT0gYmxvY2tEZWx0YTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY3VyckxvZ2lj
YWxUb3BPZmZzZXQgKz0gYmxvY2tEZWx0YTsKKyAgICBmb3IgKENvbHVtblJlY3RJdGVyYXRvciBp
dCgqdGhpcyk7IGl0Lmhhc01vcmUoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIExheW91dFJl
Y3QgaGl0UmVjdCA9IHJlc3VsdC5yZWN0Rm9yUG9pbnQocG9pbnRJbkNvbnRhaW5lcik7CisgICAg
ICAgIExheW91dFJlY3QgY29sUmVjdCA9IGl0LmNvbHVtblJlY3QoKTsKICAgICAgICAgY29sUmVj
dC5tb3ZlQnkoYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgICAgICAKLSAgICAgICAgaWYgKGNvbFJl
Y3QuaW50ZXJzZWN0cyhyZXN1bHQucmVjdEZvclBvaW50KHBvaW50SW5Db250YWluZXIpKSkgewor
ICAgICAgICBpZiAoY29sUmVjdC5pbnRlcnNlY3RzKGhpdFJlY3QpKSB7CiAgICAgICAgICAgICAv
LyBUaGUgcG9pbnQgaXMgaW5zaWRlIHRoaXMgY29sdW1uLgogICAgICAgICAgICAgLy8gQWRqdXN0
IGFjY3VtdWxhdGVkT2Zmc2V0IHRvIGNoYW5nZSB3aGVyZSB3ZSBoaXQgdGVzdC4KLSAgICAgICAg
Ci0gICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGlzSG9yaXpvbnRhbCA/IEludFNpemUo
Y3VyckxvZ2ljYWxMZWZ0T2Zmc2V0LCBjdXJyTG9naWNhbFRvcE9mZnNldCkgOiBMYXlvdXRTaXpl
KGN1cnJMb2dpY2FsVG9wT2Zmc2V0LCBjdXJyTG9naWNhbExlZnRPZmZzZXQpOwotICAgICAgICAg
ICAgaWYgKGNvbEluZm8tPnByb2dyZXNzaW9uQXhpcygpID09IENvbHVtbkluZm86OkJsb2NrQXhp
cykgewotICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICAgICAg
ICAgIG9mZnNldC5leHBhbmQoMCwgY29sUmVjdC55KCkgLSBhY2N1bXVsYXRlZE9mZnNldC55KCkg
LSBib3JkZXJUb3AoKSAtIHBhZGRpbmdUb3AoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQuZXhwYW5kKGNvbFJlY3QueCgpIC0gYWNjdW11bGF0ZWRP
ZmZzZXQueCgpIC0gYm9yZGVyTGVmdCgpIC0gcGFkZGluZ0xlZnQoKSwgMCk7Ci0gICAgICAgICAg
ICB9Ci0KKyAgICAgICAgICAgIExheW91dFNpemUgb2Zmc2V0OworICAgICAgICAgICAgaXQuYWRq
dXN0KG9mZnNldCk7CiAgICAgICAgICAgICBMYXlvdXRQb2ludCBmaW5hbExvY2F0aW9uID0gYWNj
dW11bGF0ZWRPZmZzZXQgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJh
c2VkVGVzdCgpICYmICFjb2xSZWN0LmNvbnRhaW5zKHJlc3VsdC5yZWN0Rm9yUG9pbnQocG9pbnRJ
bkNvbnRhaW5lcikpKQotICAgICAgICAgICAgICAgIGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCBy
ZXN1bHQsIHBvaW50SW5Db250YWluZXIsIGZpbmFsTG9jYXRpb24sIGhpdFRlc3RBY3Rpb24pOwot
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNSZWN0QmFzZWRUZXN0
KCkgfHwgY29sUmVjdC5jb250YWlucyhoaXRSZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4g
aGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHJlc3VsdCwgcG9pbnRJbkNvbnRhaW5lciwgZmluYWxM
b2NhdGlvbiwgaGl0VGVzdEFjdGlvbikgfHwgKGhpdFRlc3RBY3Rpb24gPT0gSGl0VGVzdEZsb2F0
ICYmIGhpdFRlc3RGbG9hdHMocmVxdWVzdCwgcmVzdWx0LCBwb2ludEluQ29udGFpbmVyLCBmaW5h
bExvY2F0aW9uKSk7CisKKyAgICAgICAgICAgIGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCByZXN1
bHQsIHBvaW50SW5Db250YWluZXIsIGZpbmFsTG9jYXRpb24sIGhpdFRlc3RBY3Rpb24pOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFJlbmRlckJsb2Nr
OjphZGp1c3RGb3JDb2x1bW5SZWN0KExheW91dFNpemUmIG9mZnNldCwgY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50SW5Db250YWluZXIpIGNvbnN0Cit7CisgICAgZm9yIChDb2x1bW5SZWN0SXRlcmF0
b3IgaXQoKnRoaXMpOyBpdC5oYXNNb3JlKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICBMYXlv
dXRSZWN0IGNvbFJlY3QgPSBpdC5jb2x1bW5SZWN0KCk7CisgICAgICAgIGlmIChjb2xSZWN0LmNv
bnRhaW5zKHBvaW50SW5Db250YWluZXIpKSB7CisgICAgICAgICAgICBpdC5hZGp1c3Qob2Zmc2V0
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwogYm9vbCBSZW5k
ZXJCbG9jazo6aGl0VGVzdENvbnRlbnRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0
VGVzdEFjdGlvbikKIHsKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSAmJiAhaXNUYWJsZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGFiNmFlOWFjMmNjZjZh
MTEzODBhNzkxNzVmNjU2ZTM4N2U2NzgwOWUuLmU2YjE0MWIzOWU5YTg0ZjAwNmJjZTBlMDVjZDJm
ZTQ4YTg4MmQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0x
OTYsNiArMTk2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RSZWN0Rm9yQ29sdW1ucyhM
YXlvdXRSZWN0JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdEZvckNvbHVtbnMoTGF5
b3V0U2l6ZSYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RGb3JD
b2x1bW5SZWN0KExheW91dFNpemUmIG9mZnNldCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5D
b250YWluZXIpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRDb250aW51YXRpb25XaXRoT3V0bGluZShS
ZW5kZXJJbmxpbmUqKTsKICAgICBib29sIHBhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUoUmVuZGVy
SW5saW5lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDY5ZDEy
NGY3NGU4NjdkMWRmMzQwMDk5YjU3ODg5MTU2MzE3ZDg4M2IuLmQ1MGExYzM5ZDg2MjI2YjFmMTQ0
MDVlMjRhNjA0YTQ3ZTVhY2U4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0xMzk1LDIyICsxMzk1LDggQEAgdm9pZCBSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9M
b2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3IKICAgICAg
ICAgZml4ZWQgJj0gaXNGaXhlZFBvczsKICAgICB9IGVsc2UKICAgICAgICAgZml4ZWQgfD0gaXNG
aXhlZFBvczsKLSAgICAKLSAgICBSZW5kZXJPYmplY3QqIG8gPSBjb250YWluZXIoKTsKLSAgICBp
ZiAoIW8pCi0gICAgICAgIHJldHVybjsKIAotICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50
KGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7Ci0KLSAgICBMYXlvdXRTaXpl
IGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQoKSk7
Ci0KLSAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5w
cmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwotICAgIGlmICh1c2VUcmFu
c2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykpIHsKLSAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdDsKLSAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5l
cihvLCBjb250YWluZXJPZmZzZXQsIHQpOwotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRy
YW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zv
cm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIGNvbnRhaW5l
ck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRl
VHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOworICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChmaXhlZCwgdXNlVHJhbnNm
b3JtcywgdHJhbnNmb3JtU3RhdGUpOwogfQogCiBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0
RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiBwb2ludCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCmluZGV4IDE5NjBiMDRjZTg5NjE0YmJlOTRmOGNkZmZjZWI4OGEwZTQwNGI1YmQuLmVh
Zjc4MTAxZWViN2Y0YmUxNzM1N2FhMzY4M2M4NjBkZWJiZDQ0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0
LmgiCiAKKyNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCkBAIC0zNyw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJUcmFu
c2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwpAQCAtMjY5Nyw0ICsyNjk5LDMzIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICBy
ZXR1cm4gIWNvbnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVk
KCk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBv
aW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlKSBjb25zdAoreworICAgIC8vIFdlIGRvbid0IGV4cGVjdCBhYnNvbHV0ZVRvTG9j
YWwoKSB0byBiZSBjYWxsZWQgZHVyaW5nIGxheW91dCAoeWV0KQorICAgIEFTU0VSVCghdmlldygp
IHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKKworICAgIFJlbmRlck9iamVjdCog
byA9IGNvbnRhaW5lcigpOworICAgIGlmICghbykKKyAgICAgICAgcmV0dXJuOworCisgICAgby0+
bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0
YXRlKTsKKworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRh
aW5lcihvLCBMYXlvdXRQb2ludCgpKTsKKworICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigpICE9
IEFic29sdXRlUG9zaXRpb24gJiYgc3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9u
ICYmIG8tPmhhc0NvbHVtbnMoKSkgeworICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBzdGF0
aWNfY2FzdDxSZW5kZXJCbG9jayo+KG8pOworICAgICAgICBMYXlvdXRQb2ludCBwb2ludChyb3Vu
ZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOworICAgICAgICBw
b2ludCAtPSBjb250YWluZXJPZmZzZXQ7CisgICAgICAgIGJsb2NrLT5hZGp1c3RGb3JDb2x1bW5S
ZWN0KGNvbnRhaW5lck9mZnNldCwgcG9pbnQpOworICAgIH0KKworICAgIGJvb2wgcHJlc2VydmUz
RCA9IHVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUo
KS0+cHJlc2VydmVzM0QoKSk7CisgICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihvKSkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
OworICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8sIGNvbnRhaW5lck9mZnNldCwg
dCk7CisgICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZlM0Qg
PyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpG
bGF0dGVuVHJhbnNmb3JtKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92
ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBwcmVz
ZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1T
dGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXgg
MDFhNThhOTY0ZWEzNjY2MDZmMzRkZWU1MjVkZjI2MTIxMDk4YjVkNS4uMTNkZGQxOTA4YzM2YzU5
ZTJiM2EzZDc4NTEyZjEyY2E3M2VmNzBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTEyNSw2ICsxMjUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwg
dm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBDYWxsZWQgYnkg
UmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVy
cyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKICAgICB2b2lkIGRlc3Ryb3lMYXllcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDNmMDk2MzNiMDA4
ZDk1NmZhMWY3ZTIxODJlMzBjNGRkMjA1YWMzYTMuLmIwYjBjYjdlZTc0MjJjN2NhYWI3ZTJmZmEz
ZTM0MjM3MmQwMGU3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCkBAIC0xMTYxLDI4ICsxMTYxLDYgQEAgdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGIKICAgICBv
LT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zv
cm1zLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6
bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0Ci17Ci0gICAgLy8gV2UgZG9uJ3Qg
ZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGR1cmluZyBsYXlvdXQuCi0gICAgQVNT
RVJUKCF2aWV3KCkgfHwgIXZpZXcoKS0+bGF5b3V0U3RhdGVFbmFibGVkKCkpOwotCi0gICAgUmVu
ZGVyT2JqZWN0KiBvID0gY29udGFpbmVyKCk7Ci0gICAgaWYgKCFvKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBvLT5tYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChmaXhlZCwgdXNlVHJhbnNmb3Jtcywg
dHJhbnNmb3JtU3RhdGUpOwotCi0gICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZz
ZXRGcm9tQ29udGFpbmVyKG8sIExheW91dFBvaW50KCkpOwotCi0gICAgYm9vbCBwcmVzZXJ2ZTNE
ID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgp
LT5wcmVzZXJ2ZXMzRCgpKTsKLSAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7
Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVyT2Zmc2V0LCB0
KTsKLSAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCwgcHJlc2VydmUzRCA/
IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZs
YXR0ZW5UcmFuc2Zvcm0pOwotICAgIH0gZWxzZQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3Zl
KGNvbnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNl
cnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0
YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKLX0KLQogdm9pZCBSZW5kZXJJbmxpbmU6OnVwZGF0ZURy
YWdTdGF0ZShib29sIGRyYWdPbikKIHsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRl
RHJhZ1N0YXRlKGRyYWdPbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgK
aW5kZXggZmU5NWFmMWZlMTg3NTQyNjViYTk3OTA5ZjdlZGI2ZWIzZTczYWU2OS4uMDQ5MDVjMmIz
ODQ2MjA0MDY3OWI2ZDQyOTgzMTBiMmI0ZWI5N2FhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaApAQCAtMTMxLDcgKzEzMSw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUm
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0
YXRlJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzMwOTQ0NmU4ZGFhZjlmNjljOTli
OGFiZTdjZWUxN2M3ZTA4Nzg5Li5kYjk0ZGEwZTg0OGE0MTc2ZTZhMmFmMmZlNzBjMzkwNTk1OTcy
NTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTEtMDMgIFlvc2lmdW1pIElub3VlICA8
eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJhbmdlIHNsaWRlcnMgYW5kIHNwaW4gYnV0
dG9ucyBkb24ndCB3b3JrIHdpdGggbXVsdGktY29sdW1ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkt
ZXhwZWN0ZWQudHh0OiBDaGFuZ2Ugb2Zmc2V0IGZvciAiaW4tY29sdW1ucyIgdGVzdC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbDogQ2hhbmdlIG9mZnNldCBmb3Ig
ImluLWNvbHVtbnMiIHRlc3QuCisgICAgICAgICogZmFzdC9mb3Jtcy9saXN0Ym94L2xpc3Rib3gt
aW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9saXN0Ym94L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29s
dW1uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9zbGlk
ZXItaW4tbXVsdGktY29sdW1uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtLXdpbi9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0OiBDaGFuZ2Ug
b2Zmc2V0IGZvciAiaW4tY29sdW1ucyIgdGVzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFz
dC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dDogQ2hhbmdlIG9mZnNldCBmb3Ig
ImluLWNvbHVtbnMiIHRlc3QuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZXZlbnRzL29m
ZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQ6IENoYW5nZSBvZmZzZXQgZm9yICJpbi1jb2x1bW5z
IiB0ZXN0LgorCiAyMDExLTExLTAzICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIGFuIG9ic29sZXRlIGNvbW1lbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dAppbmRleCAwNTAyNGNm
ZmFlNDAyMThiZThmZmQ0ZDcxYTVlZDFiOWJmOTIwNjEyLi43MTEyMjQxNGE0YzE2NDJlZjMzZjU3
NDlkZTc3M2FiYWU0ZGNkYzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9v
ZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUzogZXZl
bnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAoMzIsIDM3KQogUEFTUzogZXZl
bnQgYXQgKDE1NywgMzIpIGhpdCByZWwtYm94IGF0IG9mZnNldCAoMjIsIDI0KQogUEFTUzogZXZl
bnQgYXQgKDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBQQVNTOiBl
dmVudCBhdCAoMzYsIDI3MikgaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgb2Zmc2V0ICg0LCA0
KQotUEFTUzogZXZlbnQgYXQgKDYzOSwgMjA3KSBoaXQgaW4tY29sdW1ucyBhdCBvZmZzZXQgKDE3
MywgLTE4OSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGluLWNvbHVtbnMgYXQgb2Zm
c2V0ICgzNSwgNSkKIFBBU1M6IGV2ZW50IGF0ICg1NjMsIDQxMCkgaGl0IGluc2lkZS1vdmVyZmxv
dyBhdCBvZmZzZXQgKDcsIDYpCiBQQVNTOiBldmVudCBhdCAoMTEyLCAzNjkpIGhpdCB0cmFuc2Zv
cm1lZCBhdCBvZmZzZXQgKDExLCAxNikKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZz
ZXRYLW9mZnNldFkuaHRtbAppbmRleCBiZjM4ZTA0ZTM1YzgxOWQyYjUxM2NjNjM5NDFiMDEyNzlj
YmEwMjQ4Li45YzgyZjhlYjEwZGZhZGQxNDE1ODA4YmExNjYxYmMzZjhlNGQ2NTdmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbApAQCAtMzcsNyArMzcs
NyBAQAogICAgICAgZGlzcGF0Y2hFdmVudCgxNTcsIDMyLCAncmVsLWJveCcsIDIyLCAyNCk7CiAg
ICAgICBkaXNwYXRjaEV2ZW50KDQxMCwgMzAsICdmaXhlZC1ib3gnLCAxMCwgMTApOwogICAgICAg
ZGlzcGF0Y2hFdmVudCgzNiwgMjcyLCAnd2l0aC1ib3JkZXJ0b3BleHRyYScsIDQsIDQpOwotICAg
ICAgZGlzcGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAxNzMsIC0xODkpOworICAg
ICAgZGlzcGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAzNSwgNSk7CiAgICAgICBk
aXNwYXRjaEV2ZW50KDU2MywgNDEwLCAnaW5zaWRlLW92ZXJmbG93JywgNywgNik7CiAgICAgICBk
aXNwYXRjaEV2ZW50KDExMiwgMzY5LCAndHJhbnNmb3JtZWQnLCAxMSwgMTYpOwogICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11
bHRpLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9z
cGluLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNkY2UzYjdmZGNi
NGRhYjEyOGUyOWVkYzQ2OTQ0ZWE4ZGMyNTE2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM4IEBACitTcGluIEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNh
c2VzIGZvciBCVUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKwor
U1BBTiBvdXRlcgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNT
RUQgYzAwCitQQVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQ
QVNTRUQgYzEyCitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMw
CitQQVNTRUQgYzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YmY2
MmRhNWI2NzRkZTE2ODVkOTQyMjg0Nzc5NWYxNTFlNzg1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sCkBA
IC0wLDAgKzEsMTQzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0ic2NyZWVuIj4KK2Zvcm0geworICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAg
IC13ZWJraXQtY29sdW1uLWdhcDogMHB4OworICAgIC1tb3otY29sdW1uLWNvdW50OiAzOworICAg
IC1tb3otY29sdW1uLWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFy
Z2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsK
K30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0geworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWln
aHQ6IDUwcHg7Cit9CisKK3RkIHsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgor
PHNjcmlwdD4KK2NvbnN0IG51bUZvcm1zID0gNDsKK2NvbnN0IG51bUNvbHMgPSAzOworCitmdW5j
dGlvbiBsb2cobXNnKQoreworICAgIHZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzJyk7CisgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7
Cit9CisKK2Z1bmN0aW9uIHBhZ2VYKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdo
aWxlIChydW5uZXIpIHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRMZWZ0OworICAgICAg
ICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOwor
fQorCitmdW5jdGlvbiBwYWdlWShydW5uZXIpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGls
ZSAocnVubmVyKSB7CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zmc2V0VG9wOworICAgICAgICBy
dW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQor
CitmdW5jdGlvbiB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgb2ZzWCwgZXhwZWN0ZWQpCit7
CisgICAgY29uc3QgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmIiArIGZvcm1JbmRl
eCk7CisgICAgY29uc3QgY29sdW1uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiICsgZm9y
bUluZGV4ICsgIjAiKTsKKyAgICBjb25zdCBjb2xXaWR0aCA9IE1hdGguZmxvb3IoZm9ybS5vZmZz
ZXRXaWR0aCAvIG51bUNvbHMpOworCisgICAgY29uc3Qgc3BpbklkID0gImMiICsgZm9ybUluZGV4
ICsgY29sSW5kZXg7CisgICAgY29uc3Qgc3BpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNw
aW5JZCk7CisKKyAgICBjb25zdCBjbGlja1ggPSBwYWdlWChjb2x1bW4pICsgY29sV2lkdGggKiBj
b2xJbmRleCArIG9mc1g7CisgICAgY29uc3QgY2xpY2tZID0gcGFnZVkoY29sdW1uKSArIE1hdGgu
Zmxvb3Ioc3Bpbi5vZmZzZXRIZWlnaHQgLyAzKTsKKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKGNsaWNrWCwgY2xpY2tZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7
CisKKyAgICBpZiAoc3Bpbi52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQg
IiArIHNwaW5JZCk7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUxFRCAiICsgc3BpbklkICsg
IiBleHBlY3RlZD0iICsgZXhwZWN0ZWQgKyAiIGdvdD0iICsgc3Bpbi52YWx1ZSArICIgIiArIGNs
aWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIGluc3RhbGxNb3VzZVRyYWNrZXIo
KSB7CisgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlbW92ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAg
ICAgdmFyIHJlc3VsdEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb3VzZXBvcyIpOwor
ICAgICAgICB2YXIgb2Zmc2V0cyA9ICJlbGVtZW50IGlkOiAiICsgZS50YXJnZXQuaWQgKyAiPGJy
PiBjbGllbnRYOiAiICsgZS5jbGllbnRYICsgIiBjbGllbnRZOiAiICsgZS5jbGllbnRZICsgIjxi
cj4iOworICAgICAgICBvZmZzZXRzICs9ICJvZmZzZXRYOiAiICsgZS5vZmZzZXRYICsgIiBvZmZz
ZXRZOiAiICsgZS5vZmZzZXRZOworICAgICAgICByZXN1bHRCb3guaW5uZXJIVE1MID0gb2Zmc2V0
czsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGluc3RhbGxNb3VzZVRyYWNrZXIoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgIGZvciAodmFyIGZvcm1JbmRleCA9IDA7IGZvcm1JbmRleCA8IG51bUZvcm1zOyBm
b3JtSW5kZXgrKykgeworICAgICAgICBmb3IgKHZhciBjb2xJbmRleCA9IDA7IGNvbEluZGV4IDwg
bnVtQ29sczsgY29sSW5kZXgrKykgeworICAgICAgICAgIHRlc3RJdChmb3JtSW5kZXgsIGNvbElu
ZGV4LCA5MywgMTApOworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aDE+U3BpbiBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1Ro
aXMgaXMgdGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgi
PkJVRyA3MDg5ODwvYT4uCisKKzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjAiPgorPGlu
cHV0IGlkPSJjMDAiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+
PGJyIC8+Cis8aW5wdXQgaWQ9ImMwMSIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBz
dGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzAyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIg
bWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9mb3JtPgorCis8aDI+RElWIG91dGVyPC9o
Mj4KKzxmb3JtIGlkPSJmMSI+Cis8ZGl2PgorPGlucHV0IGlkPSJjMTAiIHR5cGU9Im51bWJlciIg
bWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMxMSIgdHlw
ZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBp
ZD0iYzEyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAv
PgorPC9kaXY+Cis8L2Zvcm0+CisKKzxoMj5TUEFOIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMiI+
Cis8c3Bhbj4KKzxpbnB1dCBpZD0iYzIwIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAi
IHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjEiIHR5cGU9Im51bWJlciIgbWluPSIw
IiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMyMiIgdHlwZT0ibnVt
YmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzwvc3Bhbj4KKzwvZm9y
bT4KKworPGgyPlRBQkxFIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMyI+Cis8dGFibGUgYm9yZGVy
PSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48aW5wdXQgaWQ9
ImMzMCIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48L3RkPjwv
dHI+Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMxIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIx
MDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlucHV0IGlkPSJjMzIiIHR5cGU9
Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPC90YWJs
ZT4KKzwvZm9ybT4KKworPGgyPlJlc3VsdHM8L2gyPgorPGRpdiBpZD0ibW91c2Vwb3MiPjwvZGl2
PgorPGRpdiBpZD0icmVzIj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZjZDMzMDgyMmU4MWI0YTVmMjQ4MWI0NjE5MGE0OGQzZjdj
ZjM5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xp
ZGVyLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorU2xpZGVy
IEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciBCVUcgNzA4OTguCitO
byBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBvdXRlcgorCisgCisKKwor
VEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAwCitQQVNTRUQgYzAxCitQ
QVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQgYzEyCitQQVNTRUQgYzIw
CitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNTRUQgYzMxCitQQVNTRUQg
YzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWlu
LW11bHRpLWNvbHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXIt
aW4tbXVsdGktY29sdW1uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMwYzNiMjMxODhmNjEzNDM2YTRiNzJh
ZGU4MWU3YTlkYjAwYzMyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0wLDAgKzEsMTI5IEBACis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KK2Zv
cm0geworICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJraXQtY29sdW1uLWdh
cDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAwcHg7CisgICAg
cGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKworaW5wdXRbdHlw
ZT0icmFuZ2UiXSB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogNTBweDsKK30KKwor
dGQgeworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorY29uc3Qg
bnVtRm9ybXMgPSA0OworY29uc3QgbnVtQ29scyA9IDM7CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7
CisgICAgdmFyIHJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMnKTsKKyAgICByZXMu
aW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArIG1zZyArICI8YnI+IjsKK30KKworZnVuY3Rpb24g
cGFnZVgocnVubmVyKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgd2hpbGUgKHJ1bm5lcikgewor
ICAgICAgICBhY2MgKz0gcnVubmVyLm9mZnNldExlZnQ7CisgICAgICAgIHJ1bm5lciA9IHJ1bm5l
ci5vZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0aW9uIHBh
Z2VZKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAg
ICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRUb3A7CisgICAgICAgIHJ1bm5lciA9IHJ1bm5lci5v
ZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1bmN0aW9uIHRlc3RJ
dChmb3JtSW5kZXgsIGNvbEluZGV4LCBvZnNYLCBleHBlY3RlZCkKK3sKKyAgICBjb25zdCBmb3Jt
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiICsgZm9ybUluZGV4KTsKKyAgICBjb25zdCBj
b2x1bW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIgKyBmb3JtSW5kZXggKyAiMCIpOwor
ICAgIGNvbnN0IGNvbFdpZHRoID0gTWF0aC5mbG9vcihmb3JtLm9mZnNldFdpZHRoIC8gbnVtQ29s
cyk7CisKKyAgICBjb25zdCBzbGlkZXJJZCA9ICJjIiArIGZvcm1JbmRleCArIGNvbEluZGV4Owor
ICAgIGNvbnN0IHNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNsaWRlcklkKTsKKwor
ICAgIGNvbnN0IGNsaWNrWCA9IHBhZ2VYKGNvbHVtbikgKyBjb2xXaWR0aCAqIGNvbEluZGV4ICsg
b2ZzWDsKKyAgICBjb25zdCBjbGlja1kgPSBwYWdlWShjb2x1bW4pICsgc2xpZGVyLm9mZnNldEhl
aWdodCAvIDI7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjbGlja1gsIGNsaWNrWSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworCisgICAgaWYgKHNsaWRlci52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNT
RUQgIiArIHNsaWRlcklkKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTEVEICIgKyBzbGlk
ZXJJZCArICIgZXhwZWN0ZWQ9IiArIGV4cGVjdGVkICsgIiBnb3Q9IiArIHNsaWRlci52YWx1ZSAr
ICIgIiArIGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmb3IgKHZhciBm
b3JtSW5kZXggPSAwOyBmb3JtSW5kZXggPCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsKKyAgICAg
ICAgZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbEluZGV4Kysp
IHsKKyAgICAgICAgICB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgMjMsIDIwKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgorPGgxPlNsaWRlciBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMgdGVzdCBjYXNlcyBm
b3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3MDg5ODwvYT4uCisK
KzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjAiPgorPGlucHV0IGlkPSJjMDAiIHR5cGU9
InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0i
YzAxIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8
aW5wdXQgaWQ9ImMwMiIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAv
PjxiciAvPgorPC9mb3JtPgorCis8aDI+RElWIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMSI+Cis8
ZGl2PgorPGlucHV0IGlkPSJjMTAiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVw
PSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzExIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9
IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMxMiIgdHlwZT0icmFuZ2UiIG1p
bj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9kaXY+Cis8L2Zvcm0+CisKKzxo
Mj5TUEFOIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMiI+Cis8c3Bhbj4KKzxpbnB1dCBpZD0iYzIw
IiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5w
dXQgaWQ9ImMyMSIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxi
ciAvPgorPGlucHV0IGlkPSJjMjIiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVw
PSIxMCIgLz48YnIgLz4KKzwvc3Bhbj4KKzwvZm9ybT4KKworPGgyPlRBQkxFIG91dGVyPC9oMj4K
Kzxmb3JtIGlkPSJmMyI+Cis8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNw
YWNpbmc9IjAiPgorPHRyPjx0ZD48aW5wdXQgaWQ9ImMzMCIgdHlwZT0icmFuZ2UiIG1pbj0iMCIg
bWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlucHV0IGlkPSJjMzEi
IHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48L3RkPjwvdHI+Cis8
dHI+PHRkPjxpbnB1dCBpZD0iYzMyIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3Rl
cD0iMTAiIC8+PC90ZD48L3RyPgorPC90YWJsZT4KKzwvZm9ybT4KKworPGgyPlJlc3VsdHM8L2gy
PgorPGRpdiBpZD0icmVzIj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVt
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDExM2NlNzU0YmRlNTg5MWNjNjRjZDRkNzg1MTAw
ZDJjYTNiZjJiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Vs
ZWN0L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBA
CitMaXN0Qm94IEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciBCVUcg
NzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBvdXRlcgor
CisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAwCitQQVNT
RUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQgYzEyCitQ
QVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNTRUQgYzMx
CitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0
L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nl
bGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYzYzNTg0MTFj
NGVhNDE2YmI4YWE3N2YyNTFmNWYxNDE0N2FhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0w
LDAgKzEsMTMzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIj4KK2JvZHkgeworICAgIGZvbnQtc2l6ZTogMTNweDsKK30KK2Zvcm0geworICAg
IC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJraXQtY29sdW1uLWdhcDogMHB4Owor
ICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzog
MHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVy
Il0geworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9CisKK3RkIHsKKyAg
ICBiYWNrZ3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2NvbnN0IG51bUZvcm1z
ID0gNDsKK2NvbnN0IG51bUNvbHMgPSAzOworCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHZh
ciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzJyk7CisgICAgcmVzLmlubmVySFRN
TCA9IHJlcy5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VYKHJ1
bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAgICAgICAg
YWNjICs9IHJ1bm5lci5vZmZzZXRMZWZ0OworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0
UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiBwYWdlWShydW5u
ZXIpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7CisgICAgICAgIGFj
YyArPSBydW5uZXIub2Zmc2V0VG9wOworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFy
ZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiB0ZXN0SXQoZm9ybUlu
ZGV4LCBjb2xJbmRleCwgb2ZzWCwgZXhwZWN0ZWQpCit7CisgICAgY29uc3QgZm9ybSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJmIiArIGZvcm1JbmRleCk7CisgICAgY29uc3QgY29sdW1uID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiICsgZm9ybUluZGV4ICsgIjAiKTsKKyAgICBjb25z
dCBjb2xXaWR0aCA9IE1hdGguZmxvb3IoZm9ybS5vZmZzZXRXaWR0aCAvIG51bUNvbHMpOworCisg
ICAgY29uc3Qgc3BpbklkID0gImMiICsgZm9ybUluZGV4ICsgY29sSW5kZXg7CisgICAgY29uc3Qg
c3BpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwaW5JZCk7CisKKyAgICBjb25zdCBjbGlj
a1ggPSBwYWdlWChjb2x1bW4pICsgY29sV2lkdGggKiBjb2xJbmRleCArIG9mc1g7CisgICAgY29u
c3QgY2xpY2tZID0gcGFnZVkoY29sdW1uKSArIE1hdGguZmxvb3Ioc3Bpbi5vZmZzZXRIZWlnaHQg
LyAzKTsKKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNsaWNrWCwgY2xpY2tZKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CisKKyAgICBpZiAoc3Bpbi52YWx1ZSA9
PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQgIiArIHNwaW5JZCk7CisgICAgZWxzZQor
ICAgICAgICBsb2coIkZBSUxFRCAiICsgc3BpbklkICsgIiBleHBlY3RlZD0iICsgZXhwZWN0ZWQg
KyAiIGdvdD0iICsgc3Bpbi52YWx1ZSArICIgIiArIGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBmb3JtSW5kZXggPCBudW1Gb3Jt
czsgZm9ybUluZGV4KyspIHsKKyAgICAgICAgZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRl
eCA8IG51bUNvbHM7IGNvbEluZGV4KyspIHsKKyAgICAgICAgICB0ZXN0SXQoZm9ybUluZGV4LCBj
b2xJbmRleCwgMTAsICJiIik7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxoMT5MaXN0Qm94IEluIE11bHRpLUNvdWx1bW48
L2gxPgorVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcv
Yi83MDg5OCI+QlVHIDcwODk4PC9hPi4KKworPGgyPk5vIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJm
MCI+Cis8c2VsZWN0IGlkPSJjMDAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9v
cHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5D
aGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48
YnIgLz4KKzxzZWxlY3QgaWQ9ImMwMSIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8
L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMi
PkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0
PjxiciAvPgorPHNlbGVjdCBpZD0iYzAyIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBo
YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0i
YyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxl
Y3Q+PGJyIC8+Cis8L2Zvcm0+CisKKzxoMj5ESVYgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYxIj4K
KzxkaXY+Cis8c2VsZWN0IGlkPSJjMTAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhh
PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJj
Ij5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVj
dD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMxMSIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxw
aGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9
ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2Vs
ZWN0PjxiciAvPgorPHNlbGVjdCBpZD0iYzEyIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5B
bHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1
ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9z
ZWxlY3Q+PGJyIC8+Cis8L2Rpdj4KKzwvZm9ybT4KKworPGgyPlNQQU4gb3V0ZXI8L2gyPgorPGZv
cm0gaWQ9ImYyIj4KKzxzcGFuPgorPHNlbGVjdCBpZD0iYzIwIiBzaXplPSI0Ij48b3B0aW9uIHZh
bHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9w
dGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9v
cHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8c2VsZWN0IGlkPSJjMjEiIHNpemU9IjQiPjxvcHRpb24g
dmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48
b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8
L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMyMiIgc2l6ZT0iNCI+PG9wdGlv
biB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9u
PjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0
YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPC9zcGFuPgorPC9mb3JtPgorCis8aDI+VEFCTEUg
b3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYzIj4KKzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5n
PSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjxzZWxlY3QgaWQ9ImMzMCIgc2l6ZT0iNCI+
PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwv
b3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJk
Ij5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PC90cj4KKzx0cj48dGQ+PHNlbGVjdCBpZD0i
YzMxIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFs
dWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxv
cHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48L3RyPgorPHRyPjx0
ZD48c2VsZWN0IGlkPSJjMzIiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRp
b24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFy
bGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48L3Rk
PjwvdHI+Cis8L3RhYmxlPgorPC9mb3JtPgorCis8aDI+UmVzdWx0czwvaDI+Cis8ZGl2IGlkPSJy
ZXMiPgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zm
c2V0WS1leHBlY3RlZC50eHQKaW5kZXggNTliZTE3ZTVkNTFkOGM2N2M4MjY2MmZiOWRjMDM5Yzdj
YzAzZWRkMC4uOTI2MWVmYmVkOGIyMjllN2ZiYzVkODAxZDYzZGJjYmM0ZjUwYTk4YiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNl
dFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcg
KzE4LDcgQEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAo
MzIsIDM3KQogRkFJTDogZXZlbnQgYXQgKDE1NywgMzIpIGV4cGVjdGVkIHRvIGhpdCByZWwtYm94
IGF0ICgyMiwgMjQpIGJ1dCBoaXQgcmVsLWJveCBhdCAoMjIsIDIyKQogUEFTUzogZXZlbnQgYXQg
KDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBGQUlMOiBldmVudCBh
dCAoMzYsIDI3MikgZXhwZWN0ZWQgdG8gaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgKDQsIDQp
IGJ1dCBoaXQgZmlsbGVyIGF0ICg1NiwgMzcyKQotRkFJTDogZXZlbnQgYXQgKDYzOSwgMjA3KSBl
eHBlY3RlZCB0byBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMTg5KSBidXQgaGl0IGluLWNvbHVt
bnMgYXQgKDE3MywgLTIwNSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGluLWNvbHVt
bnMgYXQgb2Zmc2V0ICgzNSwgNSkKIEZBSUw6IGV2ZW50IGF0ICg1NjMsIDQxMCkgZXhwZWN0ZWQg
dG8gaGl0IGluc2lkZS1vdmVyZmxvdyBhdCAoNywgNikgYnV0IGhpdCBvdmVyZmxvdy1jb250ZW50
cyBhdCAoMTc4LCAxMTIpCiBGQUlMOiBldmVudCBhdCAoMTEyLCAzNjkpIGV4cGVjdGVkIHRvIGhp
dCB0cmFuc2Zvcm1lZCBhdCAoMTEsIDE2KSBidXQgaGl0IHRyYW5zZm9ybWVkIGF0ICg3LCAyKQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9ldmVudHMvb2Zmc2V0
WC1vZmZzZXRZLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2
ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CmluZGV4IDM0NDBmNWNkYjdiNDE2ZDMz
YjJiNThkZWVjOGM2ZTZiYjA3NWE0YmQuLjc4MDE2YzIxOTYxMjM1ODlmNDAyYTEzZTk5ZTFjMWQ2
YjdmM2Y0NGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50
cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsx
OCw3IEBAIFBBU1M6IGV2ZW50IGF0ICgxMTIsIDYyKSBoaXQgYWJzLWJveCBhdCBvZmZzZXQgKDMy
LCAzNykKIEZBSUw6IGV2ZW50IGF0ICgxNTcsIDMyKSBleHBlY3RlZCB0byBoaXQgcmVsLWJveCBh
dCAoMjIsIDI0KSBidXQgaGl0IHJlbC1ib3ggYXQgKDIyLCAyMykKIFBBU1M6IGV2ZW50IGF0ICg0
MTAsIDMwKSBoaXQgZml4ZWQtYm94IGF0IG9mZnNldCAoMTAsIDEwKQogRkFJTDogZXZlbnQgYXQg
KDM2LCAyNzIpIGV4cGVjdGVkIHRvIGhpdCB3aXRoLWJvcmRlcnRvcGV4dHJhIGF0ICg0LCA0KSBi
dXQgaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgKDQsIDApCi1GQUlMOiBldmVudCBhdCAoNjM5
LCAyMDcpIGV4cGVjdGVkIHRvIGhpdCBpbi1jb2x1bW5zIGF0ICgxNzMsIC0xODkpIGJ1dCBoaXQg
aW4tY29sdW1ucyBhdCAoMTczLCAtMjEwKQorUEFTUzogZXZlbnQgYXQgKDYzOSwgMjA3KSBoaXQg
aW4tY29sdW1ucyBhdCBvZmZzZXQgKDM1LCA1KQogRkFJTDogZXZlbnQgYXQgKDU2MywgNDEwKSBl
eHBlY3RlZCB0byBoaXQgaW5zaWRlLW92ZXJmbG93IGF0ICg3LCA2KSBidXQgaGl0IGluc2lkZS1v
dmVyZmxvdyBhdCAoNywgMSkKIEZBSUw6IGV2ZW50IGF0ICgxMTIsIDM2OSkgZXhwZWN0ZWQgdG8g
aGl0IHRyYW5zZm9ybWVkIGF0ICgxMSwgMTYpIGJ1dCBoaXQgdHJhbnNmb3JtZWQgYXQgKDksIDkp
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2V2ZW50cy9vZmZz
ZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
ZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKaW5kZXggMzQ0MGY1Y2RiN2I0MTZk
MzNiMmI1OGRlZWM4YzZlNmJiMDc1YTRiZC4uNzgwMTZjMjE5NjEyMzU4OWY0MDJhMTNlOTllMWMx
ZDZiN2YzZjQ0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZXZl
bnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcg
KzE4LDcgQEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAo
MzIsIDM3KQogRkFJTDogZXZlbnQgYXQgKDE1NywgMzIpIGV4cGVjdGVkIHRvIGhpdCByZWwtYm94
IGF0ICgyMiwgMjQpIGJ1dCBoaXQgcmVsLWJveCBhdCAoMjIsIDIzKQogUEFTUzogZXZlbnQgYXQg
KDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBGQUlMOiBldmVudCBh
dCAoMzYsIDI3MikgZXhwZWN0ZWQgdG8gaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgKDQsIDQp
IGJ1dCBoaXQgd2l0aC1ib3JkZXJ0b3BleHRyYSBhdCAoNCwgMCkKLUZBSUw6IGV2ZW50IGF0ICg2
MzksIDIwNykgZXhwZWN0ZWQgdG8gaGl0IGluLWNvbHVtbnMgYXQgKDE3MywgLTE4OSkgYnV0IGhp
dCBpbi1jb2x1bW5zIGF0ICgxNzMsIC0yMTApCitQQVNTOiBldmVudCBhdCAoNjM5LCAyMDcpIGhp
dCBpbi1jb2x1bW5zIGF0IG9mZnNldCAoMzUsIDUpCiBGQUlMOiBldmVudCBhdCAoNTYzLCA0MTAp
IGV4cGVjdGVkIHRvIGhpdCBpbnNpZGUtb3ZlcmZsb3cgYXQgKDcsIDYpIGJ1dCBoaXQgaW5zaWRl
LW92ZXJmbG93IGF0ICg3LCAxKQogRkFJTDogZXZlbnQgYXQgKDExMiwgMzY5KSBleHBlY3RlZCB0
byBoaXQgdHJhbnNmb3JtZWQgYXQgKDExLCAxNikgYnV0IGhpdCB0cmFuc2Zvcm1lZCBhdCAoOSwg
OSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116904</attachid>
            <date>2011-11-28 23:29:15 -0800</date>
            <delta_ts>2011-12-01 20:38:11 -0800</delta_ts>
            <desc>Patch 5</desc>
            <filename>bug-70898-20111129162913.patch</filename>
            <type>text/plain</type>
            <size>37155</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBt
b2RlIDEwMDY0NAppbmRleCAyYWEzYTA1MTY5OGVhMTY0MDdlMjE1ZjAzZWM5ZDE5YWQyM2EyYzZh
Li5hMGU2OTA3MDI3ZWYxNGE0YjY1ODgyMGE1Zjc4NzVkNDJiNTM0MzY3Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NiBAQAorMjAxMS0xMS0yOSAgWW9zaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmFuZ2Ugc2xpZGVycyBhbmQgc3BpbiBidXR0b25zIGRvbid0IHdvcmsgd2l0
aCBtdWx0aS1jb2x1bW5zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzA4OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIFJlbmRlckJsb2NrOjpoaXRUZXN0Q29sdW1ucyBhbmQK
KyAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbCB0byBoYW5k
bGUgcG9pbnQKKyAgICAgICAgaW4gbXVsdGktY29sdW1uIHNhbWUgbG9naWMuCisKKyAgICAgICAg
SW4gbXVsdGktY29sdW1uLCBjb29yZGluYXRlIG9mIGJveCBtb2RlbCByZW5kZXJpbmcgb2JqZWN0
IGlzIGRpZmZlcmVudAorICAgICAgICBmcm9tIGFic29sdXRlIGNvb3JkaW5hdGUuLiBDb2x1bW5z
IGluIGJveCBtb2RlbCByZW5kZXJpbmcgb2JqZWN0IHNwYW5zCisgICAgICAgIHZlcnRpY2FsbHkg
cmF0aGVyIHRoYW4gaG9yaXpvbnRhbGx5LgorCisgICAgICAgIFdoZW4gYWJzb2x1dGUgcG9pbnQg
aXMgcmVwcmVzZW50ZWQgaW4gKGNvbHVtbltpXStkeCwgY29sdW1uWzBdK2R5KSwKKyAgICAgICAg
aXQgaXMgKGNvbHVtblswXStkeCwgY29sdW1uWzBdICsgY29sdW1uSGVpZ2h0ICsgZHkpIGluIGJv
eCBtb2RlbAorICAgICAgICByZW5kZXJpbmcgb2JqZWN0IGNvb3JkaW5hdGUuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZXZlbnRzL2RvY3VtZW50LWVsZW1lbnRGcm9tUG9pbnQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sdW1uUmVjdEl0ZXJhdG9yOjpDb2x1bW5SZWN0SXRlcmF0b3IpOiBBZGRlZAorICAgICAgICAo
V2ViQ29yZTo6Q29sdW1uUmVjdEl0ZXJhdG9yOjphZHZhbmNlKTogQWRkZWQKKyAgICAgICAgKFdl
YkNvcmU6OkNvbHVtblJlY3RJdGVyYXRvcjo6Y29sdW1uUmVjdCk6IEFkZGVkCisgICAgICAgIChX
ZWJDb3JlOjpDb2x1bW5SZWN0SXRlcmF0b3I6Omhhc01vcmUpOiBBZGRlZAorICAgICAgICAoV2Vi
Q29yZTo6Q29sdW1uUmVjdEl0ZXJhdG9yOjphZGp1c3QpOiBBZGRlZAorICAgICAgICAoV2ViQ29y
ZTo6Q29sdW1uUmVjdEl0ZXJhdG9yOjp1cGRhdGUpOiBBZGRlZAorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmhpdFRlc3RDb2x1bW5zKTogVXNlIENvbHVtblJlY3RJdGVyYXRvci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1c3RGb3JDb2x1bW5SZWN0KTogQWRkZWQK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDogQWRkIGFkanVzdEZvckNvbHVtblJl
Y3QuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KTogQ2FsbCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCk6IE1vdmUgZnJvbSBSZW5kZXJJbmxpbmU6
Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50IGFuZCBjYWxsIFJlbmRlckJsb2NrOjphZGp1c3RGb3JD
b2x1bW5SZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOiBh
ZGQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHA6IE1vdmUgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQgdG8gUmVuZGVyQm94TW9kZWxP
YmplY3QuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOiByZW1vdmUgbWFwQWJz
b2x1dGVUb0xvY2FsUG9pbnQuCisKIDIwMTEtMTEtMjggIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jk
b25AZ21haWwuY29tPgogCiAgICAgICAgIEltYWdlRGVjb2RlciBzZXRTaXplKCkgc2hvdWxkIGNo
ZWNrIGZvciBiYWNraW5nIHN0b3JlIGFsbG9jYXRpb24gZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZTIxM2FhNzNlODJmNzY0MDEyODU3NzFmYjNj
NGFmOWExYTc3MjRlMS4uZjkwZDg3NWZhYzQ5OWY3MmRlM2VhMTRlNGU3MjhkYjllNTAxNTE5NiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00MjM3LDUxICs0
MjM3LDEwMiBAQCBib29sIFJlbmRlckJsb2NrOjpoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorY2xhc3MgQ29sdW1uUmVjdEl0ZXJhdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
b2x1bW5SZWN0SXRlcmF0b3IpOworcHVibGljOgorICAgIENvbHVtblJlY3RJdGVyYXRvcihjb25z
dCBSZW5kZXJCbG9jayYgYmxvY2spCisgICAgICAgIDogbV9ibG9jayhibG9jaykKKyAgICAgICAg
LCBtX2NvbEluZm8oYmxvY2suY29sdW1uSW5mbygpKQorICAgICAgICAsIG1fZGlyZWN0aW9uKG1f
YmxvY2suc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IDEgOiAtMSkKKyAg
ICAgICAgLCBtX2lzSG9yaXpvbnRhbChibG9jay5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQor
ICAgICAgICAsIG1fbG9naWNhbExlZnQoYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50
KCkpCisgICAgeworICAgICAgICBpbnQgY29sQ291bnQgPSBtX2NvbEluZm8tPmNvbHVtbkNvdW50
KCk7CisgICAgICAgIG1fY29sSW5kZXggPSBjb2xDb3VudCAtIDE7CisgICAgICAgIG1fY3Vyckxv
Z2ljYWxUb3BPZmZzZXQgPSBjb2xDb3VudCAqIG1fY29sSW5mby0+Y29sdW1uSGVpZ2h0KCkgKiBt
X2RpcmVjdGlvbjsKKyAgICAgICAgdXBkYXRlKCk7CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNNb3JlKCkpOworICAgICAgICBtX2NvbEluZGV4
LS07CisgICAgICAgIHVwZGF0ZSgpOworICAgIH0KKworICAgIExheW91dFJlY3QgY29sdW1uUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sUmVjdDsgfQorICAgIGJvb2wgaGFzTW9yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29sSW5kZXggPj0gMDsgfQorCisgICAgdm9pZCBhZGp1c3QoTGF5b3V0U2l6
ZSYgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgTGF5b3V0VW5pdCBjdXJyTG9naWNhbExl
ZnRPZmZzZXQgPSAobV9pc0hvcml6b250YWwgPyBtX2NvbFJlY3QueCgpIDogbV9jb2xSZWN0Lnko
KSkgLSBtX2xvZ2ljYWxMZWZ0OworICAgICAgICBvZmZzZXQgKz0gbV9pc0hvcml6b250YWwgPyBM
YXlvdXRTaXplKGN1cnJMb2dpY2FsTGVmdE9mZnNldCwgbV9jdXJyTG9naWNhbFRvcE9mZnNldCkg
OiBMYXlvdXRTaXplKG1fY3VyckxvZ2ljYWxUb3BPZmZzZXQsIGN1cnJMb2dpY2FsTGVmdE9mZnNl
dCk7CisgICAgICAgIGlmIChtX2NvbEluZm8tPnByb2dyZXNzaW9uQXhpcygpID09IENvbHVtbklu
Zm86OkJsb2NrQXhpcykgeworICAgICAgICAgICAgaWYgKG1faXNIb3Jpem9udGFsKQorICAgICAg
ICAgICAgICAgIG9mZnNldC5leHBhbmQoMCwgbV9jb2xSZWN0LnkoKSAtIG1fYmxvY2suYm9yZGVy
VG9wKCkgLSBtX2Jsb2NrLnBhZGRpbmdUb3AoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgb2Zmc2V0LmV4cGFuZChtX2NvbFJlY3QueCgpIC0gbV9ibG9jay5ib3JkZXJMZWZ0
KCkgLSBtX2Jsb2NrLnBhZGRpbmdMZWZ0KCksIDApOworICAgICAgICB9CisgICAgfQorCitwcml2
YXRlOgorICAgIHZvaWQgdXBkYXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2NvbEluZGV4IDwg
MCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2NvbFJlY3QgPSBtX2Jsb2NrLmNv
bHVtblJlY3RBdChjb25zdF9jYXN0PENvbHVtbkluZm8qPihtX2NvbEluZm8pLCBtX2NvbEluZGV4
KTsKKyAgICAgICAgbV9ibG9jay5mbGlwRm9yV3JpdGluZ01vZGUobV9jb2xSZWN0KTsKKyAgICAg
ICAgbV9jdXJyTG9naWNhbFRvcE9mZnNldCAtPSAobV9pc0hvcml6b250YWwgPyBtX2NvbFJlY3Qu
aGVpZ2h0KCkgOiBtX2NvbFJlY3Qud2lkdGgoKSkgKiBtX2RpcmVjdGlvbjsKKyAgICB9CisKKyAg
ICBjb25zdCBSZW5kZXJCbG9jayYgbV9ibG9jazsKKyAgICBjb25zdCBDb2x1bW5JbmZvKiBjb25z
dCBtX2NvbEluZm87CisgICAgY29uc3QgaW50IG1fZGlyZWN0aW9uOworICAgIGNvbnN0IGJvb2wg
bV9pc0hvcml6b250YWw7CisgICAgY29uc3QgTGF5b3V0VW5pdCBtX2xvZ2ljYWxMZWZ0OworICAg
IGludCBtX2NvbEluZGV4OworICAgIExheW91dFVuaXQgbV9jdXJyTG9naWNhbFRvcE9mZnNldDsK
KyAgICBMYXlvdXRSZWN0IG1fY29sUmVjdDsKK307CisKIGJvb2wgUmVuZGVyQmxvY2s6OmhpdFRl
c3RDb2x1bW5zKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKIHsK
ICAgICAvLyBXZSBuZWVkIHRvIGRvIG11bHRpcGxlIHBhc3NlcywgYnJlYWtpbmcgdXAgb3VyIGhp
dCB0ZXN0aW5nIGludG8gc3RyaXBzLgotICAgIENvbHVtbkluZm8qIGNvbEluZm8gPSBjb2x1bW5J
bmZvKCk7Ci0gICAgaW50IGNvbENvdW50ID0gY29sdW1uQ291bnQoY29sSW5mbyk7Ci0gICAgaWYg
KCFjb2xDb3VudCkKKyAgICBpZiAoIWhhc0NvbHVtbnMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRl
bnQoKTsKLSAgICBMYXlvdXRVbml0IGN1cnJMb2dpY2FsVG9wT2Zmc2V0ID0gIXN0eWxlKCktPmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyAtY29sQ291bnQgKiBjb2xJbmZvLT5jb2x1bW5I
ZWlnaHQoKSA6IGNvbENvdW50ICogY29sSW5mby0+Y29sdW1uSGVpZ2h0KCk7Ci0gICAgYm9vbCBp
c0hvcml6b250YWwgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogCi0gICAgZm9yIChpbnQg
aSA9IGNvbENvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgTGF5b3V0UmVjdCBjb2xS
ZWN0ID0gY29sdW1uUmVjdEF0KGNvbEluZm8sIGkpOwotICAgICAgICBmbGlwRm9yV3JpdGluZ01v
ZGUoY29sUmVjdCk7Ci0gICAgICAgIExheW91dFVuaXQgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0ID0g
KGlzSG9yaXpvbnRhbCA/IGNvbFJlY3QueCgpIDogY29sUmVjdC55KCkpIC0gbG9naWNhbExlZnQ7
Ci0gICAgICAgIExheW91dFVuaXQgYmxvY2tEZWx0YSA9ICAoaXNIb3Jpem9udGFsID8gY29sUmVj
dC5oZWlnaHQoKSA6IGNvbFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIGlmIChzdHlsZSgpLT5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgY3VyckxvZ2ljYWxUb3BPZmZz
ZXQgLT0gYmxvY2tEZWx0YTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY3VyckxvZ2ljYWxU
b3BPZmZzZXQgKz0gYmxvY2tEZWx0YTsKKyAgICBmb3IgKENvbHVtblJlY3RJdGVyYXRvciBpdCgq
dGhpcyk7IGl0Lmhhc01vcmUoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIExheW91dFJlY3Qg
aGl0UmVjdCA9IHJlc3VsdC5yZWN0Rm9yUG9pbnQocG9pbnRJbkNvbnRhaW5lcik7CisgICAgICAg
IExheW91dFJlY3QgY29sUmVjdCA9IGl0LmNvbHVtblJlY3QoKTsKICAgICAgICAgY29sUmVjdC5t
b3ZlQnkoYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgICAgICAKLSAgICAgICAgaWYgKGNvbFJlY3Qu
aW50ZXJzZWN0cyhyZXN1bHQucmVjdEZvclBvaW50KHBvaW50SW5Db250YWluZXIpKSkgeworICAg
ICAgICBpZiAoY29sUmVjdC5pbnRlcnNlY3RzKGhpdFJlY3QpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgcG9pbnQgaXMgaW5zaWRlIHRoaXMgY29sdW1uLgogICAgICAgICAgICAgLy8gQWRqdXN0IGFj
Y3VtdWxhdGVkT2Zmc2V0IHRvIGNoYW5nZSB3aGVyZSB3ZSBoaXQgdGVzdC4KLSAgICAgICAgCi0g
ICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGlzSG9yaXpvbnRhbCA/IEludFNpemUoY3Vy
ckxvZ2ljYWxMZWZ0T2Zmc2V0LCBjdXJyTG9naWNhbFRvcE9mZnNldCkgOiBMYXlvdXRTaXplKGN1
cnJMb2dpY2FsVG9wT2Zmc2V0LCBjdXJyTG9naWNhbExlZnRPZmZzZXQpOwotICAgICAgICAgICAg
aWYgKGNvbEluZm8tPnByb2dyZXNzaW9uQXhpcygpID09IENvbHVtbkluZm86OkJsb2NrQXhpcykg
ewotICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICAgICAgICAg
IG9mZnNldC5leHBhbmQoMCwgY29sUmVjdC55KCkgLSBhY2N1bXVsYXRlZE9mZnNldC55KCkgLSBi
b3JkZXJUb3AoKSAtIHBhZGRpbmdUb3AoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBvZmZzZXQuZXhwYW5kKGNvbFJlY3QueCgpIC0gYWNjdW11bGF0ZWRPZmZz
ZXQueCgpIC0gYm9yZGVyTGVmdCgpIC0gcGFkZGluZ0xlZnQoKSwgMCk7Ci0gICAgICAgICAgICB9
Ci0KKyAgICAgICAgICAgIExheW91dFNpemUgb2Zmc2V0OworICAgICAgICAgICAgaXQuYWRqdXN0
KG9mZnNldCk7CiAgICAgICAgICAgICBMYXlvdXRQb2ludCBmaW5hbExvY2F0aW9uID0gYWNjdW11
bGF0ZWRPZmZzZXQgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2Vk
VGVzdCgpICYmICFjb2xSZWN0LmNvbnRhaW5zKHJlc3VsdC5yZWN0Rm9yUG9pbnQocG9pbnRJbkNv
bnRhaW5lcikpKQotICAgICAgICAgICAgICAgIGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCByZXN1
bHQsIHBvaW50SW5Db250YWluZXIsIGZpbmFsTG9jYXRpb24sIGhpdFRlc3RBY3Rpb24pOwotICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNSZWN0QmFzZWRUZXN0KCkg
fHwgY29sUmVjdC5jb250YWlucyhoaXRSZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGl0
VGVzdENvbnRlbnRzKHJlcXVlc3QsIHJlc3VsdCwgcG9pbnRJbkNvbnRhaW5lciwgZmluYWxMb2Nh
dGlvbiwgaGl0VGVzdEFjdGlvbikgfHwgKGhpdFRlc3RBY3Rpb24gPT0gSGl0VGVzdEZsb2F0ICYm
IGhpdFRlc3RGbG9hdHMocmVxdWVzdCwgcmVzdWx0LCBwb2ludEluQ29udGFpbmVyLCBmaW5hbExv
Y2F0aW9uKSk7CisKKyAgICAgICAgICAgIGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCByZXN1bHQs
IHBvaW50SW5Db250YWluZXIsIGZpbmFsTG9jYXRpb24sIGhpdFRlc3RBY3Rpb24pOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFJlbmRlckJsb2NrOjph
ZGp1c3RGb3JDb2x1bW5SZWN0KExheW91dFNpemUmIG9mZnNldCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50SW5Db250YWluZXIpIGNvbnN0Cit7CisgICAgZm9yIChDb2x1bW5SZWN0SXRlcmF0b3Ig
aXQoKnRoaXMpOyBpdC5oYXNNb3JlKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICBMYXlvdXRS
ZWN0IGNvbFJlY3QgPSBpdC5jb2x1bW5SZWN0KCk7CisgICAgICAgIGlmIChjb2xSZWN0LmNvbnRh
aW5zKHBvaW50SW5Db250YWluZXIpKSB7CisgICAgICAgICAgICBpdC5hZGp1c3Qob2Zmc2V0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwogYm9vbCBSZW5kZXJC
bG9jazo6aGl0VGVzdENvbnRlbnRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVz
dEFjdGlvbikKIHsKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSAmJiAhaXNUYWJsZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDcwMTM4MjBiMDAyZTk2Yzc5
YjVjNDAzNTA3Yzg4OThiY2EzODNlYmUuLjIxMDA5MmUzMTY4YTViMzMxZGM2ZWU1NmI5YmE2MmVi
NDJmNWM1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0xOTYs
NiArMTk2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RSZWN0Rm9yQ29sdW1ucyhMYXlv
dXRSZWN0JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdEZvckNvbHVtbnMoTGF5b3V0
U2l6ZSYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RGb3JDb2x1
bW5SZWN0KExheW91dFNpemUmIG9mZnNldCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250
YWluZXIpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRDb250aW51YXRpb25XaXRoT3V0bGluZShSZW5k
ZXJJbmxpbmUqKTsKICAgICBib29sIHBhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUoUmVuZGVySW5s
aW5lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDUzMWFjYmMx
NWE3MjI4ZjVlZmE3YTk2YWJkNWFhMjI2OGZjMGNkYTcuLmFiYjU1OTlmNDQ5MjViZTIyZmE1MzA3
ZWI2M2FjMzFkODdiMDVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC0xMzkzLDIyICsxMzkzLDggQEAgdm9pZCBSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3IKICAgICAgICAg
Zml4ZWQgJj0gaXNGaXhlZFBvczsKICAgICB9IGVsc2UKICAgICAgICAgZml4ZWQgfD0gaXNGaXhl
ZFBvczsKLSAgICAKLSAgICBSZW5kZXJPYmplY3QqIG8gPSBjb250YWluZXIoKTsKLSAgICBpZiAo
IW8pCi0gICAgICAgIHJldHVybjsKIAotICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGZp
eGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7Ci0KLSAgICBMYXlvdXRTaXplIGNv
bnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQoKSk7Ci0K
LSAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVz
ZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwotICAgIGlmICh1c2VUcmFuc2Zv
cm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykpIHsKLSAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdDsKLSAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihv
LCBjb250YWluZXJPZmZzZXQsIHQpOwotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5z
Zm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0g
OiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHRyYW5zZm9ybVN0YXRlLm1vdmUoY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIGNvbnRhaW5lck9m
ZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJh
bnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOworICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChmaXhlZCwgdXNlVHJhbnNmb3Jt
cywgdHJhbnNmb3JtU3RhdGUpOwogfQogCiBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJv
bUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCmluZGV4IDVhOTEzN2E3MjgwMTM2ZWU3ZGY4ODA2NjMzN2M5OTc3M2VlNWYyZjguLjkyMTNk
YjNhNmMwOWUzNzY5YzIwMWFhNjM1YWQ1ZGFhMjQyYzhkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTI3MTcsNCAr
MjcxOCwzMyBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxpYXNMaW5l
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuICFjb250ZXh0LT5nZXRDVE0o
KS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpOwogfQogCit2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVz
ZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKK3sKKyAg
ICAvLyBXZSBkb24ndCBleHBlY3QgYWJzb2x1dGVUb0xvY2FsKCkgdG8gYmUgY2FsbGVkIGR1cmlu
ZyBsYXlvdXQgKHlldCkKKyAgICBBU1NFUlQoIXZpZXcoKSB8fCAhdmlldygpLT5sYXlvdXRTdGF0
ZUVuYWJsZWQoKSk7CisKKyAgICBSZW5kZXJPYmplY3QqIG8gPSBjb250YWluZXIoKTsKKyAgICBp
ZiAoIW8pCisgICAgICAgIHJldHVybjsKKworICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50
KGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CisKKyAgICBMYXlvdXRTaXpl
IGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQoKSk7
CisKKyAgICBpZiAoc3R5bGUoKS0+cG9zaXRpb24oKSAhPSBBYnNvbHV0ZVBvc2l0aW9uICYmIHN0
eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbiAmJiBvLT5oYXNDb2x1bW5zKCkpIHsK
KyAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gc3RhdGljX2Nhc3Q8UmVuZGVyQmxvY2sqPihv
KTsKKyAgICAgICAgTGF5b3V0UG9pbnQgcG9pbnQocm91bmRlZExheW91dFBvaW50KHRyYW5zZm9y
bVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICAgICAgcG9pbnQgLT0gY29udGFpbmVyT2Zmc2V0
OworICAgICAgICBibG9jay0+YWRqdXN0Rm9yQ29sdW1uUmVjdChjb250YWluZXJPZmZzZXQsIHBv
aW50KTsKKyAgICB9CisKKyAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChv
LT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOworICAg
IGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykp
IHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKKyAgICAgICAgZ2V0VHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQpOworICAgICAgICB0cmFuc2Zvcm1T
dGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3Vt
dWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAg
fSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoY29udGFpbmVyT2Zmc2V0LndpZHRo
KCksIGNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRl
OjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGFmMTk5ZWY4MTlhMDVjZWZhNDQ2ZDRi
NmMxN2YyMGZkNTNlMzkxZDkuLmIwN2U4ZDYxMjI1ZGZkNmQ3N2JiODdmZmU2OWQzNzE4Zjg0MjM5
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCkBAIC0xMjUsNiArMTI1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9u
TW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2Fs
UG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNv
bnN0IE9WRVJSSURFOworCiAgICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVjdDo6d2lsbEJlRGVz
dHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hvdWxkIGV2ZXIgYmUgZGVzdHJv
eWVkCiAgICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAppbmRleCA0NDk5ZTEwODlmNDFhZWNkMjc2MmQ4YmM4MGU1NjVkNTMz
MmIxY2VjLi4yNjg1ODkxNjZjMDhkNmM3NDA1ZmQ4Y2Y2ZTYyOTgwYTI2NDI2ZjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTE2MSwyOCArMTE2MSw2
IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBiCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihy
ZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIHdh
c0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50
KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9y
bVN0YXRlKSBjb25zdAotewotICAgIC8vIFdlIGRvbid0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRv
IGJlIGNhbGxlZCBkdXJpbmcgbGF5b3V0LgotICAgIEFTU0VSVCghdmlldygpIHx8ICF2aWV3KCkt
PmxheW91dFN0YXRlRW5hYmxlZCgpKTsKLQotICAgIFJlbmRlck9iamVjdCogbyA9IGNvbnRhaW5l
cigpOwotICAgIGlmICghbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgby0+bWFwQWJzb2x1dGVU
b0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKLQotICAg
IExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBMYXlv
dXRQb2ludCgpKTsKLQotICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRyYW5zZm9ybXMgJiYgKG8t
PnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7Ci0gICAg
aWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvKSkg
ewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgICAgICBnZXRUcmFuc2Zvcm1G
cm9tQ29udGFpbmVyKG8sIGNvbnRhaW5lck9mZnNldCwgdCk7Ci0gICAgICAgIHRyYW5zZm9ybVN0
YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11
bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShjb250YWluZXJPZmZzZXQud2lkdGgo
KSwgY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6
OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7
Ci19Ci0KIHZvaWQgUmVuZGVySW5saW5lOjp1cGRhdGVEcmFnU3RhdGUoYm9vbCBkcmFnT24pCiB7
CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZURyYWdTdGF0ZShkcmFnT24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IGZlOTVhZjFmZTE4NzU0MjY1
YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkuLjA0OTA1YzJiMzg0NjIwNDA2NzliNmQ0Mjk4MzEwYjJi
NGViOTdhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTEz
MSw3ICsxMzEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qm
LCBib29sIGZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBi
b29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhl
ZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA2Njc1OTYxYmI3ODQ4
OTEwMzQ1OGVjODFhMGI2NmQ0NDUzZmQxZjAwLi5kYjY5YWRhMmE5Mjc0ZjY2ZGY5MzY3NjgxN2U1
MDdhMjkzYjg1NWYxCi0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMS0yOSAgWW9zaWZ1bWkgSW5vdWUg
IDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmFuZ2Ugc2xpZGVycyBhbmQgc3BpbiBi
dXR0b25zIGRvbid0IHdvcmsgd2l0aCBtdWx0aS1jb2x1bW5zLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0
WS1leHBlY3RlZC50eHQ6IENoYW5nZSBvZmZzZXQgZm9yICJpbi1jb2x1bW5zIiB0ZXN0LgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS5odG1sOiBDaGFuZ2Ugb2Zmc2V0IGZv
ciAiaW4tY29sdW1ucyIgdGVzdC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xpc3Rib3gvbGlzdGJv
eC1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2xpc3Rib3gvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4uaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1pbi1tdWx0aS1j
b2x1bW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3Ns
aWRlci1pbi1tdWx0aS1jb2x1bW4uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQ6IENoYW5n
ZSBvZmZzZXQgZm9yICJpbi1jb2x1bW5zIiB0ZXN0LgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9m
YXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0OiBDaGFuZ2Ugb2Zmc2V0IGZv
ciAiaW4tY29sdW1ucyIgdGVzdC4KKyAgICAgICAgKiAvcGxhdGZvcm0vZ3RrL2Zhc3QvZXZlbnRz
L29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQ6IENoYW5nZSBvZmZzZXQgZm9yICJpbi1jb2x1
bW5zIiB0ZXN0LgorCiAyMDExLTExLTI4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBzL1N5bnRheEVycm9yL1R5cGVFcnJvci8gaW4g
dGhlIGZsYWt5IHRlc3QgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKaW5kZXggMDUwMjRjZmZhZTQwMjE4YmU4ZmZk
NGQ3MWE1ZWQxYjliZjkyMDYxMi4uNzExMjI0MTRhNGMxNjQyZWYzM2Y1NzQ5ZGU3NzNhYmFlNGRj
ZGMwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZ
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNl
dFktZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3IEBAIFBBU1M6IGV2ZW50IGF0ICgxMTIsIDYy
KSBoaXQgYWJzLWJveCBhdCBvZmZzZXQgKDMyLCAzNykKIFBBU1M6IGV2ZW50IGF0ICgxNTcsIDMy
KSBoaXQgcmVsLWJveCBhdCBvZmZzZXQgKDIyLCAyNCkKIFBBU1M6IGV2ZW50IGF0ICg0MTAsIDMw
KSBoaXQgZml4ZWQtYm94IGF0IG9mZnNldCAoMTAsIDEwKQogUEFTUzogZXZlbnQgYXQgKDM2LCAy
NzIpIGhpdCB3aXRoLWJvcmRlcnRvcGV4dHJhIGF0IG9mZnNldCAoNCwgNCkKLVBBU1M6IGV2ZW50
IGF0ICg2MzksIDIwNykgaGl0IGluLWNvbHVtbnMgYXQgb2Zmc2V0ICgxNzMsIC0xODkpCitQQVNT
OiBldmVudCBhdCAoNjM5LCAyMDcpIGhpdCBpbi1jb2x1bW5zIGF0IG9mZnNldCAoMzUsIDUpCiBQ
QVNTOiBldmVudCBhdCAoNTYzLCA0MTApIGhpdCBpbnNpZGUtb3ZlcmZsb3cgYXQgb2Zmc2V0ICg3
LCA2KQogUEFTUzogZXZlbnQgYXQgKDExMiwgMzY5KSBoaXQgdHJhbnNmb3JtZWQgYXQgb2Zmc2V0
ICgxMSwgMTYpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29mZnNldFgt
b2Zmc2V0WS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0
bWwKaW5kZXggYmYzOGUwNGUzNWM4MTlkMmI1MTNjYzYzOTQxYjAxMjc5Y2JhMDI0OC4uOWM4MmY4
ZWIxMGRmYWRkMTQxNTgwOGJhMTY2MWJjM2Y4ZTRkNjU3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0bWwKQEAgLTM3LDcgKzM3LDcgQEAKICAgICAgIGRp
c3BhdGNoRXZlbnQoMTU3LCAzMiwgJ3JlbC1ib3gnLCAyMiwgMjQpOwogICAgICAgZGlzcGF0Y2hF
dmVudCg0MTAsIDMwLCAnZml4ZWQtYm94JywgMTAsIDEwKTsKICAgICAgIGRpc3BhdGNoRXZlbnQo
MzYsIDI3MiwgJ3dpdGgtYm9yZGVydG9wZXh0cmEnLCA0LCA0KTsKLSAgICAgIGRpc3BhdGNoRXZl
bnQoNjM5LCAyMDcsICdpbi1jb2x1bW5zJywgMTczLCAtMTg5KTsKKyAgICAgIGRpc3BhdGNoRXZl
bnQoNjM5LCAyMDcsICdpbi1jb2x1bW5zJywgMzUsIDUpOwogICAgICAgZGlzcGF0Y2hFdmVudCg1
NjMsIDQxMCwgJ2luc2lkZS1vdmVyZmxvdycsIDcsIDYpOwogICAgICAgZGlzcGF0Y2hFdmVudCgx
MTIsIDM2OSwgJ3RyYW5zZm9ybWVkJywgMTEsIDE2KTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1j
b2x1bW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZGNlM2I3ZmRjYjRkYWIxMjhlMjllZGM0
Njk0NGVhOGRjMjUxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBA
QAorU3BpbiBJbiBNdWx0aS1Db3VsdW1uCisKK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgQlVHIDcw
ODk4LgorTm8gb3V0ZXIKKworCisKKworRElWIG91dGVyCisKKworCisKK1NQQU4gb3V0ZXIKKwor
IAorCisKK1RBQkxFIG91dGVyCisKKworCisKK1Jlc3VsdHMKKworUEFTU0VEIGMwMAorUEFTU0VE
IGMwMQorUEFTU0VEIGMwMgorUEFTU0VEIGMxMAorUEFTU0VEIGMxMQorUEFTU0VEIGMxMgorUEFT
U0VEIGMyMAorUEFTU0VEIGMyMQorUEFTU0VEIGMyMgorUEFTU0VEIGMzMAorUEFTU0VEIGMzMQor
UEFTU0VEIGMzMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9z
cGluLWluLW11bHRpLWNvbHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIv
c3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGJmNjJkYTViNjc0ZGUxNjg1
ZDk0MjI4NDc3OTVmMTUxZTc4NWE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRtbApAQCAtMCwwICsxLDE0MyBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+
Citmb3JtIHsKKyAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMzsKKyAgICAtd2Via2l0LWNvbHVt
bi1nYXA6IDBweDsKKyAgICAtbW96LWNvbHVtbi1jb3VudDogMzsKKyAgICAtbW96LWNvbHVtbi1n
YXA6IDBweDsKKyAgICBiYWNrZ3JvdW5kOiAjY2NjY2ZmOworICAgIG1hcmdpbjogMHB4OworICAg
IHBhZGRpbmc6IDBweDsKKyAgICBib3JkZXI6IHNvbGlkIDFweCByZWQ7Cit9CisKK2lucHV0W3R5
cGU9Im51bWJlciJdIHsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworfQor
Cit0ZCB7CisgICAgYmFja2dyb3VuZDogcmVkOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+Citjb25z
dCBudW1Gb3JtcyA9IDQ7Citjb25zdCBudW1Db2xzID0gMzsKKworZnVuY3Rpb24gbG9nKG1zZykK
K3sKKyAgICB2YXIgcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlcycpOworICAgIHJl
cy5pbm5lckhUTUwgPSByZXMuaW5uZXJIVE1MICsgbXNnICsgIjxicj4iOworfQorCitmdW5jdGlv
biBwYWdlWChydW5uZXIpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7
CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zmc2V0TGVmdDsKKyAgICAgICAgcnVubmVyID0gcnVu
bmVyLm9mZnNldFBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIGFjYzsKK30KKworZnVuY3Rpb24g
cGFnZVkocnVubmVyKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgd2hpbGUgKHJ1bm5lcikgewor
ICAgICAgICBhY2MgKz0gcnVubmVyLm9mZnNldFRvcDsKKyAgICAgICAgcnVubmVyID0gcnVubmVy
Lm9mZnNldFBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIGFjYzsKK30KKworZnVuY3Rpb24gdGVz
dEl0KGZvcm1JbmRleCwgY29sSW5kZXgsIG9mc1gsIGV4cGVjdGVkKQoreworICAgIGNvbnN0IGZv
cm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIgKyBmb3JtSW5kZXgpOworICAgIGNvbnN0
IGNvbHVtbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIiArIGZvcm1JbmRleCArICIwIik7
CisgICAgY29uc3QgY29sV2lkdGggPSBNYXRoLmZsb29yKGZvcm0ub2Zmc2V0V2lkdGggLyBudW1D
b2xzKTsKKworICAgIGNvbnN0IHNwaW5JZCA9ICJjIiArIGZvcm1JbmRleCArIGNvbEluZGV4Owor
ICAgIGNvbnN0IHNwaW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGluSWQpOworCisgICAg
Y29uc3QgY2xpY2tYID0gcGFnZVgoY29sdW1uKSArIGNvbFdpZHRoICogY29sSW5kZXggKyBvZnNY
OworICAgIGNvbnN0IGNsaWNrWSA9IHBhZ2VZKGNvbHVtbikgKyBNYXRoLmZsb29yKHNwaW4ub2Zm
c2V0SGVpZ2h0IC8gMyk7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjbGlja1gsIGNs
aWNrWSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDAsIDApOworCisgICAgaWYgKHNw
aW4udmFsdWUgPT0gZXhwZWN0ZWQpCisgICAgICAgIGxvZygiUEFTU0VEICIgKyBzcGluSWQpOwor
ICAgIGVsc2UKKyAgICAgICAgbG9nKCJGQUlMRUQgIiArIHNwaW5JZCArICIgZXhwZWN0ZWQ9IiAr
IGV4cGVjdGVkICsgIiBnb3Q9IiArIHNwaW4udmFsdWUgKyAiICIgKyBjbGlja1ggKyAiQCIgKyBj
bGlja1kpOworfQorCitmdW5jdGlvbiBpbnN0YWxsTW91c2VUcmFja2VyKCkgeworICAgIGRvY3Vt
ZW50LmJvZHkub25tb3VzZW1vdmUgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHZhciByZXN1bHRC
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW91c2Vwb3MiKTsKKyAgICAgICAgdmFyIG9m
ZnNldHMgPSAiZWxlbWVudCBpZDogIiArIGUudGFyZ2V0LmlkICsgIjxicj4gY2xpZW50WDogIiAr
IGUuY2xpZW50WCArICIgY2xpZW50WTogIiArIGUuY2xpZW50WSArICI8YnI+IjsKKyAgICAgICAg
b2Zmc2V0cyArPSAib2Zmc2V0WDogIiArIGUub2Zmc2V0WCArICIgb2Zmc2V0WTogIiArIGUub2Zm
c2V0WTsKKyAgICAgICAgcmVzdWx0Qm94LmlubmVySFRNTCA9IG9mZnNldHM7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICBpbnN0YWxsTW91c2VUcmFja2VyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmb3Ig
KHZhciBmb3JtSW5kZXggPSAwOyBmb3JtSW5kZXggPCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsK
KyAgICAgICAgZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbElu
ZGV4KyspIHsKKyAgICAgICAgICB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgOTMsIDEwKTsK
KyAgICAgICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0
ZXN0KCkiPgorPGgxPlNwaW4gSW4gTXVsdGktQ291bHVtbjwvaDE+CitUaGlzIGlzIHRlc3QgY2Fz
ZXMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9iLzcwODk4Ij5CVUcgNzA4OTg8L2E+
LgorCis8aDI+Tm8gb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYwIj4KKzxpbnB1dCBpZD0iYzAwIiB0
eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0
IGlkPSJjMDEiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJy
IC8+Cis8aW5wdXQgaWQ9ImMwMiIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVw
PSIxMCIgLz48YnIgLz4KKzwvZm9ybT4KKworPGgyPkRJViBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0i
ZjEiPgorPGRpdj4KKzxpbnB1dCBpZD0iYzEwIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIx
MDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMTEiIHR5cGU9Im51bWJlciIgbWlu
PSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMxMiIgdHlwZT0i
bnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzwvZGl2PgorPC9m
b3JtPgorCis8aDI+U1BBTiBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjIiPgorPHNwYW4+Cis8aW5w
dXQgaWQ9ImMyMCIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48
YnIgLz4KKzxpbnB1dCBpZD0iYzIxIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0
ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjIiIHR5cGU9Im51bWJlciIgbWluPSIwIiBt
YXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8L3NwYW4+Cis8L2Zvcm0+CisKKzxoMj5UQUJM
RSBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjMiPgorPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRp
bmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0cj48dGQ+PGlucHV0IGlkPSJjMzAiIHR5cGU9Im51
bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPHRyPjx0ZD48
aW5wdXQgaWQ9ImMzMSIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIg
Lz48L3RkPjwvdHI+Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMyIiB0eXBlPSJudW1iZXIiIG1pbj0i
MCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Zvcm0+CisK
KzxoMj5SZXN1bHRzPC9oMj4KKzxkaXYgaWQ9Im1vdXNlcG9zIj48L2Rpdj4KKzxkaXYgaWQ9InJl
cyI+PC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNmY2QzMzA4MjJlODFiNGE1ZjI0ODFiNDYxOTBhNDhkM2Y3Y2YzOTcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1pbi1tdWx0aS1j
b2x1bW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK1NsaWRlciBJbiBNdWx0aS1Db3Vs
dW1uCisKK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgQlVHIDcwODk4LgorTm8gb3V0ZXIKKworCisK
KworRElWIG91dGVyCisKKworCisKK1NQQU4gb3V0ZXIKKworIAorCisKK1RBQkxFIG91dGVyCisK
KworCisKK1Jlc3VsdHMKKworUEFTU0VEIGMwMAorUEFTU0VEIGMwMQorUEFTU0VEIGMwMgorUEFT
U0VEIGMxMAorUEFTU0VEIGMxMQorUEFTU0VEIGMxMgorUEFTU0VEIGMyMAorUEFTU0VEIGMyMQor
UEFTU0VEIGMyMgorUEFTU0VEIGMzMAorUEFTU0VEIGMzMQorUEFTU0VEIGMzMgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1pbi1tdWx0aS1jb2x1bW4u
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVt
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZjMGMzYjIzMTg4ZjYxMzQzNmE0YjcyYWRlODFlN2E5ZGIwMGMz
MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRl
ci1pbi1tdWx0aS1jb2x1bW4uaHRtbApAQCAtMCwwICsxLDEyOSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Citmb3JtIHsKKyAgICAtd2Vi
a2l0LWNvbHVtbi1jb3VudDogMzsKKyAgICAtd2Via2l0LWNvbHVtbi1nYXA6IDBweDsKKyAgICBi
YWNrZ3JvdW5kOiAjY2NjY2ZmOworICAgIG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsK
KyAgICBib3JkZXI6IHNvbGlkIDFweCByZWQ7Cit9CisKK2lucHV0W3R5cGU9InJhbmdlIl0gewor
ICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9CisKK3RkIHsKKyAgICBiYWNr
Z3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2NvbnN0IG51bUZvcm1zID0gNDsK
K2NvbnN0IG51bUNvbHMgPSAzOworCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHZhciByZXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzJyk7CisgICAgcmVzLmlubmVySFRNTCA9IHJl
cy5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VYKHJ1bm5lcikg
eworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAgICAgICAgYWNjICs9
IHJ1bm5lci5vZmZzZXRMZWZ0OworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50
OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiBwYWdlWShydW5uZXIpIHsK
KyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7CisgICAgICAgIGFjYyArPSBy
dW5uZXIub2Zmc2V0VG9wOworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50Owor
ICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiB0ZXN0SXQoZm9ybUluZGV4LCBj
b2xJbmRleCwgb2ZzWCwgZXhwZWN0ZWQpCit7CisgICAgY29uc3QgZm9ybSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmIiArIGZvcm1JbmRleCk7CisgICAgY29uc3QgY29sdW1uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImMiICsgZm9ybUluZGV4ICsgIjAiKTsKKyAgICBjb25zdCBjb2xX
aWR0aCA9IE1hdGguZmxvb3IoZm9ybS5vZmZzZXRXaWR0aCAvIG51bUNvbHMpOworCisgICAgY29u
c3Qgc2xpZGVySWQgPSAiYyIgKyBmb3JtSW5kZXggKyBjb2xJbmRleDsKKyAgICBjb25zdCBzbGlk
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzbGlkZXJJZCk7CisKKyAgICBjb25zdCBjbGlj
a1ggPSBwYWdlWChjb2x1bW4pICsgY29sV2lkdGggKiBjb2xJbmRleCArIG9mc1g7CisgICAgY29u
c3QgY2xpY2tZID0gcGFnZVkoY29sdW1uKSArIHNsaWRlci5vZmZzZXRIZWlnaHQgLyAyOworCisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2xpY2tYLCBjbGlja1kpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIGlmIChz
bGlkZXIudmFsdWUgPT0gZXhwZWN0ZWQpCisgICAgICAgIGxvZygiUEFTU0VEICIgKyBzbGlkZXJJ
ZCk7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUxFRCAiICsgc2xpZGVySWQgKyAiIGV4cGVj
dGVkPSIgKyBleHBlY3RlZCArICIgZ290PSIgKyBzbGlkZXIudmFsdWUgKyAiICIgKyBjbGlja1gg
KyAiQCIgKyBjbGlja1kpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAoIXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZm9yICh2YXIgZm9ybUluZGV4ID0gMDsg
Zm9ybUluZGV4IDwgbnVtRm9ybXM7IGZvcm1JbmRleCsrKSB7CisgICAgICAgIGZvciAodmFyIGNv
bEluZGV4ID0gMDsgY29sSW5kZXggPCBudW1Db2xzOyBjb2xJbmRleCsrKSB7CisgICAgICAgICAg
dGVzdEl0KGZvcm1JbmRleCwgY29sSW5kZXgsIDIzLCAyMCk7CisgICAgICAgIH0KKyAgICB9Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxoMT5TbGlkZXIg
SW4gTXVsdGktQ291bHVtbjwvaDE+CitUaGlzIGlzIHRlc3QgY2FzZXMgZm9yIDxhIGhyZWY9Imh0
dHBzOi8vd2Via2l0Lm9yZy9iLzcwODk4Ij5CVUcgNzA4OTg8L2E+LgorCis8aDI+Tm8gb3V0ZXI8
L2gyPgorPGZvcm0gaWQ9ImYwIj4KKzxpbnB1dCBpZD0iYzAwIiB0eXBlPSJyYW5nZSIgbWluPSIw
IiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMwMSIgdHlwZT0icmFu
Z2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMDIi
IHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzwvZm9y
bT4KKworPGgyPkRJViBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjEiPgorPGRpdj4KKzxpbnB1dCBp
ZD0iYzEwIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+
Cis8aW5wdXQgaWQ9ImMxMSIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEw
IiAvPjxiciAvPgorPGlucHV0IGlkPSJjMTIiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAw
IiBzdGVwPSIxMCIgLz48YnIgLz4KKzwvZGl2PgorPC9mb3JtPgorCis8aDI+U1BBTiBvdXRlcjwv
aDI+Cis8Zm9ybSBpZD0iZjIiPgorPHNwYW4+Cis8aW5wdXQgaWQ9ImMyMCIgdHlwZT0icmFuZ2Ui
IG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjEiIHR5
cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBp
ZD0iYzIyIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+
Cis8L3NwYW4+Cis8L2Zvcm0+CisKKzxoMj5UQUJMRSBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjMi
PgorPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0
cj48dGQ+PGlucHV0IGlkPSJjMzAiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVw
PSIxMCIgLz48L3RkPjwvdHI+Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMxIiB0eXBlPSJyYW5nZSIg
bWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPHRyPjx0ZD48aW5wdXQg
aWQ9ImMzMiIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+
PC90cj4KKzwvdGFibGU+Cis8L2Zvcm0+CisKKzxoMj5SZXN1bHRzPC9oMj4KKzxkaXYgaWQ9InJl
cyI+Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3QvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxMTNjZTc1NGJkZTU4OTFjYzY0Y2Q0ZDc4NTEwMGQyY2EzYmYyYmMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWlu
LW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorTGlzdEJveCBJbiBN
dWx0aS1Db3VsdW1uCisKK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgQlVHIDcwODk4LgorTm8gb3V0
ZXIKKworCisKKworRElWIG91dGVyCisKKworCisKK1NQQU4gb3V0ZXIKKworIAorCisKK1RBQkxF
IG91dGVyCisKKworCisKK1Jlc3VsdHMKKworUEFTU0VEIGMwMAorUEFTU0VEIGMwMQorUEFTU0VE
IGMwMgorUEFTU0VEIGMxMAorUEFTU0VEIGMxMQorUEFTU0VEIGMxMgorUEFTU0VEIGMyMAorUEFT
U0VEIGMyMQorUEFTU0VEIGMyMgorUEFTU0VEIGMzMAorUEFTU0VEIGMzMQorUEFTU0VEIGMzMgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11
bHRpLWNvbHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QvbGlzdGJveC1p
bi1tdWx0aS1jb2x1bW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmM2MzU4NDExYzRlYTQxNmJiOGFhNzdm
MjUxZjVmMTQxNDdhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3QvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4uaHRtbApAQCAtMCwwICsxLDEzMyBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Citi
b2R5IHsKKyAgICBmb250LXNpemU6IDEzcHg7Cit9Citmb3JtIHsKKyAgICAtd2Via2l0LWNvbHVt
bi1jb3VudDogMzsKKyAgICAtd2Via2l0LWNvbHVtbi1nYXA6IDBweDsKKyAgICBiYWNrZ3JvdW5k
OiAjY2NjY2ZmOworICAgIG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsKKyAgICBib3Jk
ZXI6IHNvbGlkIDFweCByZWQ7Cit9CisKK2lucHV0W3R5cGU9Im51bWJlciJdIHsKKyAgICB3aWR0
aDogMjAwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworfQorCit0ZCB7CisgICAgYmFja2dyb3VuZDog
cmVkOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+Citjb25zdCBudW1Gb3JtcyA9IDQ7Citjb25zdCBu
dW1Db2xzID0gMzsKKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB2YXIgcmVzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3JlcycpOworICAgIHJlcy5pbm5lckhUTUwgPSByZXMuaW5uZXJI
VE1MICsgbXNnICsgIjxicj4iOworfQorCitmdW5jdGlvbiBwYWdlWChydW5uZXIpIHsKKyAgICB2
YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7CisgICAgICAgIGFjYyArPSBydW5uZXIu
b2Zmc2V0TGVmdDsKKyAgICAgICAgcnVubmVyID0gcnVubmVyLm9mZnNldFBhcmVudDsKKyAgICB9
CisgICAgcmV0dXJuIGFjYzsKK30KKworZnVuY3Rpb24gcGFnZVkocnVubmVyKSB7CisgICAgdmFy
IGFjYyA9IDA7CisgICAgd2hpbGUgKHJ1bm5lcikgeworICAgICAgICBhY2MgKz0gcnVubmVyLm9m
ZnNldFRvcDsKKyAgICAgICAgcnVubmVyID0gcnVubmVyLm9mZnNldFBhcmVudDsKKyAgICB9Cisg
ICAgcmV0dXJuIGFjYzsKK30KKworZnVuY3Rpb24gdGVzdEl0KGZvcm1JbmRleCwgY29sSW5kZXgs
IG9mc1gsIGV4cGVjdGVkKQoreworICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZiIgKyBmb3JtSW5kZXgpOworICAgIGNvbnN0IGNvbHVtbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjIiArIGZvcm1JbmRleCArICIwIik7CisgICAgY29uc3QgY29sV2lkdGggPSBN
YXRoLmZsb29yKGZvcm0ub2Zmc2V0V2lkdGggLyBudW1Db2xzKTsKKworICAgIGNvbnN0IHNwaW5J
ZCA9ICJjIiArIGZvcm1JbmRleCArIGNvbEluZGV4OworICAgIGNvbnN0IHNwaW4gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChzcGluSWQpOworCisgICAgY29uc3QgY2xpY2tYID0gcGFnZVgoY29s
dW1uKSArIGNvbFdpZHRoICogY29sSW5kZXggKyBvZnNYOworICAgIGNvbnN0IGNsaWNrWSA9IHBh
Z2VZKGNvbHVtbikgKyBNYXRoLmZsb29yKHNwaW4ub2Zmc2V0SGVpZ2h0IC8gMyk7CisKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhjbGlja1gsIGNsaWNrWSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKDAsIDApOworCisgICAgaWYgKHNwaW4udmFsdWUgPT0gZXhwZWN0ZWQpCisg
ICAgICAgIGxvZygiUEFTU0VEICIgKyBzcGluSWQpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJG
QUlMRUQgIiArIHNwaW5JZCArICIgZXhwZWN0ZWQ9IiArIGV4cGVjdGVkICsgIiBnb3Q9IiArIHNw
aW4udmFsdWUgKyAiICIgKyBjbGlja1ggKyAiQCIgKyBjbGlja1kpOworfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
Zm9yICh2YXIgZm9ybUluZGV4ID0gMDsgZm9ybUluZGV4IDwgbnVtRm9ybXM7IGZvcm1JbmRleCsr
KSB7CisgICAgICAgIGZvciAodmFyIGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCBudW1Db2xzOyBj
b2xJbmRleCsrKSB7CisgICAgICAgICAgdGVzdEl0KGZvcm1JbmRleCwgY29sSW5kZXgsIDEwLCAi
YiIpOworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8aDE+TGlzdEJveCBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMg
dGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3
MDg5ODwvYT4uCisKKzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjAiPgorPHNlbGVjdCBp
ZD0iYzAwIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24g
dmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9u
PjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8c2VsZWN0
IGlkPSJjMDEiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlv
biB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRp
b24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxl
Y3QgaWQ9ImMwMiIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0
aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29w
dGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPC9m
b3JtPgorCis8aDI+RElWIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMSI+Cis8ZGl2PgorPHNlbGVj
dCBpZD0iYzEwIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRp
b24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0
aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8c2Vs
ZWN0IGlkPSJjMTEiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9w
dGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9v
cHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxz
ZWxlY3QgaWQ9ImMxMiIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48
b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8
L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgor
PC9kaXY+Cis8L2Zvcm0+CisKKzxoMj5TUEFOIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMiI+Cis8
c3Bhbj4KKzxzZWxlY3QgaWQ9ImMyMCIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8
L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMi
PkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0
PjxiciAvPgorPHNlbGVjdCBpZD0iYzIxIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBo
YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0i
YyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxl
Y3Q+PGJyIC8+Cis8c2VsZWN0IGlkPSJjMjIiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFs
cGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZhbHVl
PSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48L3Nl
bGVjdD48YnIgLz4KKzwvc3Bhbj4KKzwvZm9ybT4KKworPGgyPlRBQkxFIG91dGVyPC9oMj4KKzxm
b3JtIGlkPSJmMyI+Cis8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNp
bmc9IjAiPgorPHRyPjx0ZD48c2VsZWN0IGlkPSJjMzAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9
ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9u
IHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlv
bj48L3NlbGVjdD48L3RkPjwvdHI+Cis8dHI+PHRkPjxzZWxlY3QgaWQ9ImMzMSIgc2l6ZT0iNCI+
PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwv
b3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJk
Ij5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PC90cj4KKzx0cj48dGQ+PHNlbGVjdCBpZD0i
YzMyIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFs
dWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxv
cHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48L3RyPgorPC90YWJs
ZT4KKzwvZm9ybT4KKworPGgyPlJlc3VsdHM8L2gyPgorPGRpdiBpZD0icmVzIj4KKzwvZGl2Pgor
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4v
ZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQu
dHh0CmluZGV4IDU5YmUxN2U1ZDUxZDhjNjdjODI2NjJmYjlkYzAzOWM3Y2MwM2VkZDAuLjkyNjFl
ZmJlZDhiMjI5ZTdmYmM1ZDgwMWQ2M2RiY2JjNGY1MGE5OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2
ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3IEBAIFBBU1M6
IGV2ZW50IGF0ICgxMTIsIDYyKSBoaXQgYWJzLWJveCBhdCBvZmZzZXQgKDMyLCAzNykKIEZBSUw6
IGV2ZW50IGF0ICgxNTcsIDMyKSBleHBlY3RlZCB0byBoaXQgcmVsLWJveCBhdCAoMjIsIDI0KSBi
dXQgaGl0IHJlbC1ib3ggYXQgKDIyLCAyMikKIFBBU1M6IGV2ZW50IGF0ICg0MTAsIDMwKSBoaXQg
Zml4ZWQtYm94IGF0IG9mZnNldCAoMTAsIDEwKQogRkFJTDogZXZlbnQgYXQgKDM2LCAyNzIpIGV4
cGVjdGVkIHRvIGhpdCB3aXRoLWJvcmRlcnRvcGV4dHJhIGF0ICg0LCA0KSBidXQgaGl0IGZpbGxl
ciBhdCAoNTYsIDM3MikKLUZBSUw6IGV2ZW50IGF0ICg2MzksIDIwNykgZXhwZWN0ZWQgdG8gaGl0
IGluLWNvbHVtbnMgYXQgKDE3MywgLTE4OSkgYnV0IGhpdCBpbi1jb2x1bW5zIGF0ICgxNzMsIC0y
MDUpCitQQVNTOiBldmVudCBhdCAoNjM5LCAyMDcpIGhpdCBpbi1jb2x1bW5zIGF0IG9mZnNldCAo
MzUsIDUpCiBGQUlMOiBldmVudCBhdCAoNTYzLCA0MTApIGV4cGVjdGVkIHRvIGhpdCBpbnNpZGUt
b3ZlcmZsb3cgYXQgKDcsIDYpIGJ1dCBoaXQgb3ZlcmZsb3ctY29udGVudHMgYXQgKDE3OCwgMTEy
KQogRkFJTDogZXZlbnQgYXQgKDExMiwgMzY5KSBleHBlY3RlZCB0byBoaXQgdHJhbnNmb3JtZWQg
YXQgKDExLCAxNikgYnV0IGhpdCB0cmFuc2Zvcm1lZCBhdCAoNywgMikKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9ldmVudHMvb2Zmc2V0WC1v
ZmZzZXRZLWV4cGVjdGVkLnR4dAppbmRleCAzNDQwZjVjZGI3YjQxNmQzM2IyYjU4ZGVlYzhjNmU2
YmIwNzVhNGJkLi43ODAxNmMyMTk2MTIzNTg5ZjQwMmExM2U5OWUxYzFkNmI3ZjNmNDRhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZz
ZXRZLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9ldmVu
dHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dApAQCAtMTgsNyArMTgsNyBAQCBQQVNTOiBl
dmVudCBhdCAoMTEyLCA2MikgaGl0IGFicy1ib3ggYXQgb2Zmc2V0ICgzMiwgMzcpCiBGQUlMOiBl
dmVudCBhdCAoMTU3LCAzMikgZXhwZWN0ZWQgdG8gaGl0IHJlbC1ib3ggYXQgKDIyLCAyNCkgYnV0
IGhpdCByZWwtYm94IGF0ICgyMiwgMjMpCiBQQVNTOiBldmVudCBhdCAoNDEwLCAzMCkgaGl0IGZp
eGVkLWJveCBhdCBvZmZzZXQgKDEwLCAxMCkKIEZBSUw6IGV2ZW50IGF0ICgzNiwgMjcyKSBleHBl
Y3RlZCB0byBoaXQgd2l0aC1ib3JkZXJ0b3BleHRyYSBhdCAoNCwgNCkgYnV0IGhpdCB3aXRoLWJv
cmRlcnRvcGV4dHJhIGF0ICg0LCAwKQotRkFJTDogZXZlbnQgYXQgKDYzOSwgMjA3KSBleHBlY3Rl
ZCB0byBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMTg5KSBidXQgaGl0IGluLWNvbHVtbnMgYXQg
KDE3MywgLTIxMCkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGluLWNvbHVtbnMgYXQg
b2Zmc2V0ICgzNSwgNSkKIEZBSUw6IGV2ZW50IGF0ICg1NjMsIDQxMCkgZXhwZWN0ZWQgdG8gaGl0
IGluc2lkZS1vdmVyZmxvdyBhdCAoNywgNikgYnV0IGhpdCBpbnNpZGUtb3ZlcmZsb3cgYXQgKDcs
IDEpCiBGQUlMOiBldmVudCBhdCAoMTEyLCAzNjkpIGV4cGVjdGVkIHRvIGhpdCB0cmFuc2Zvcm1l
ZCBhdCAoMTEsIDE2KSBidXQgaGl0IHRyYW5zZm9ybWVkIGF0ICg5LCA5KQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2V2ZW50cy9vZmZzZXRY
LW9mZnNldFktZXhwZWN0ZWQudHh0CmluZGV4IDM0NDBmNWNkYjdiNDE2ZDMzYjJiNThkZWVjOGM2
ZTZiYjA3NWE0YmQuLjc4MDE2YzIxOTYxMjM1ODlmNDAyYTEzZTk5ZTFjMWQ2YjdmM2Y0NGEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2V2ZW50cy9vZmZzZXRYLW9m
ZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2V2
ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3IEBAIFBBU1M6
IGV2ZW50IGF0ICgxMTIsIDYyKSBoaXQgYWJzLWJveCBhdCBvZmZzZXQgKDMyLCAzNykKIEZBSUw6
IGV2ZW50IGF0ICgxNTcsIDMyKSBleHBlY3RlZCB0byBoaXQgcmVsLWJveCBhdCAoMjIsIDI0KSBi
dXQgaGl0IHJlbC1ib3ggYXQgKDIyLCAyMykKIFBBU1M6IGV2ZW50IGF0ICg0MTAsIDMwKSBoaXQg
Zml4ZWQtYm94IGF0IG9mZnNldCAoMTAsIDEwKQogRkFJTDogZXZlbnQgYXQgKDM2LCAyNzIpIGV4
cGVjdGVkIHRvIGhpdCB3aXRoLWJvcmRlcnRvcGV4dHJhIGF0ICg0LCA0KSBidXQgaGl0IHdpdGgt
Ym9yZGVydG9wZXh0cmEgYXQgKDQsIDApCi1GQUlMOiBldmVudCBhdCAoNjM5LCAyMDcpIGV4cGVj
dGVkIHRvIGhpdCBpbi1jb2x1bW5zIGF0ICgxNzMsIC0xODkpIGJ1dCBoaXQgaW4tY29sdW1ucyBh
dCAoMTczLCAtMjEwKQorUEFTUzogZXZlbnQgYXQgKDYzOSwgMjA3KSBoaXQgaW4tY29sdW1ucyBh
dCBvZmZzZXQgKDM1LCA1KQogRkFJTDogZXZlbnQgYXQgKDU2MywgNDEwKSBleHBlY3RlZCB0byBo
aXQgaW5zaWRlLW92ZXJmbG93IGF0ICg3LCA2KSBidXQgaGl0IGluc2lkZS1vdmVyZmxvdyBhdCAo
NywgMSkKIEZBSUw6IGV2ZW50IGF0ICgxMTIsIDM2OSkgZXhwZWN0ZWQgdG8gaGl0IHRyYW5zZm9y
bWVkIGF0ICgxMSwgMTYpIGJ1dCBoaXQgdHJhbnNmb3JtZWQgYXQgKDksIDkpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117557</attachid>
            <date>2011-12-01 20:38:17 -0800</date>
            <delta_ts>2011-12-02 00:26:21 -0800</delta_ts>
            <desc>Patch 6 - Update GTK test</desc>
            <filename>bug-70898-20111202133815.patch</filename>
            <type>text/plain</type>
            <size>36974</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk4ZmFlNDQ4M2I4NjUx
YmI1ZTlhMTc4ZWU0MmMxNjc0ODZkNWRhMS4uYTQxMWZmN2Q2OTk2NDk5NWE0ZWRmODQyYzVhODMy
Njg1MzcwOTFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTEyLTAyICBZb3Np
ZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBSYW5nZSBzbGlkZXJz
IGFuZCBzcGluIGJ1dHRvbnMgZG9uJ3Qgd29yayB3aXRoIG11bHRpLWNvbHVtbnMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDg5OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMg
UmVuZGVyQmxvY2s6OmhpdFRlc3RDb2x1bW5zIGFuZAorICAgICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsIHRvIGhhbmRsZSBwb2ludAorICAgICAgICBpbiBtdWx0
aS1jb2x1bW4gc2FtZSBsb2dpYy4KKworICAgICAgICBJbiBtdWx0aS1jb2x1bW4sIGNvb3JkaW5h
dGUgb2YgYm94IG1vZGVsIHJlbmRlcmluZyBvYmplY3QgaXMgZGlmZmVyZW50CisgICAgICAgIGZy
b20gYWJzb2x1dGUgY29vcmRpbmF0ZS4uIENvbHVtbnMgaW4gYm94IG1vZGVsIHJlbmRlcmluZyBv
YmplY3Qgc3BhbnMKKyAgICAgICAgdmVydGljYWxseSByYXRoZXIgdGhhbiBob3Jpem9udGFsbHku
CisKKyAgICAgICAgV2hlbiBhYnNvbHV0ZSBwb2ludCBpcyByZXByZXNlbnRlZCBpbiAoY29sdW1u
W2ldK2R4LCBjb2x1bW5bMF0rZHkpLAorICAgICAgICBpdCBpcyAoY29sdW1uWzBdK2R4LCBjb2x1
bW5bMF0gKyBjb2x1bW5IZWlnaHQgKyBkeSkgaW4gYm94IG1vZGVsCisgICAgICAgIHJlbmRlcmlu
ZyBvYmplY3QgY29vcmRpbmF0ZS4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvZG9jdW1l
bnQtZWxlbWVudEZyb21Qb2ludC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9vZmZz
ZXRYLW9mZnNldFkuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1p
bi1tdWx0aS1jb2x1bW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9yYW5nZS9zbGlk
ZXItaW4tbXVsdGktY29sdW1uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc2VsZWN0
L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2x1bW5SZWN0SXRlcmF0b3I6OkNvbHVt
blJlY3RJdGVyYXRvcik6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpDb2x1bW5SZWN0SXRlcmF0
b3I6OmFkdmFuY2UpOiBBZGRlZAorICAgICAgICAoV2ViQ29yZTo6Q29sdW1uUmVjdEl0ZXJhdG9y
Ojpjb2x1bW5SZWN0KTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OkNvbHVtblJlY3RJdGVyYXRv
cjo6aGFzTW9yZSk6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpDb2x1bW5SZWN0SXRlcmF0b3I6
OmFkanVzdCk6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpDb2x1bW5SZWN0SXRlcmF0b3I6OnVw
ZGF0ZSk6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aGl0VGVzdENvbHVt
bnMpOiBVc2UgQ29sdW1uUmVjdEl0ZXJhdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmFkanVzdEZvckNvbHVtblJlY3QpOiBBZGRlZAorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOiBBZGQgYWRqdXN0Rm9yQ29sdW1uUmVjdC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFwQWJzb2x1dGVU
b0xvY2FsUG9pbnQpOiBDYWxsIFJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9j
YWxQb2ludC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KTogTW92ZSBmcm9tIFJlbmRlcklubGluZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQg
YW5kIGNhbGwgUmVuZGVyQmxvY2s6OmFkanVzdEZvckNvbHVtblJlY3QuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IGFkZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2lu
dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDogTW92ZSBtYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludCB0byBSZW5kZXJCb3hNb2RlbE9iamVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmg6IHJlbW92ZSBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludC4KKwogMjAx
MS0xMi0wMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmVwbGFjZSBhIGN1c3RvbSBjb25zdHJ1Y3RvciBvZiB3aW5kb3cuT3B0aW9uIHdpdGggdGhlIFtO
YW1lZENvbnN0cnVjdG9yXSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IGNhODBiOGMyYWU2ZDIyYmUwMmQ3ODBjYWFmNWJkNzJlZjQ3Zjg4YWMuLjRjNzE0
NDBkZTY5N2IyMzk1MjRkMmIyYjg3NjhiYmJhZTIxNDRiNjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNDIzNyw1MSArNDIzNywxMDIgQEAgYm9vbCBSZW5k
ZXJCbG9jazo6aGl0VGVzdEZsb2F0cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2NsYXNzIENvbHVtblJlY3RJ
dGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29sdW1uUmVjdEl0ZXJhdG9yKTsK
K3B1YmxpYzoKKyAgICBDb2x1bW5SZWN0SXRlcmF0b3IoY29uc3QgUmVuZGVyQmxvY2smIGJsb2Nr
KQorICAgICAgICA6IG1fYmxvY2soYmxvY2spCisgICAgICAgICwgbV9jb2xJbmZvKGJsb2NrLmNv
bHVtbkluZm8oKSkKKyAgICAgICAgLCBtX2RpcmVjdGlvbihtX2Jsb2NrLnN0eWxlKCktPmlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyAxIDogLTEpCisgICAgICAgICwgbV9pc0hvcml6b250
YWwoYmxvY2suaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgLCBtX2xvZ2ljYWxM
ZWZ0KGJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudCgpKQorICAgIHsKKyAgICAgICAg
aW50IGNvbENvdW50ID0gbV9jb2xJbmZvLT5jb2x1bW5Db3VudCgpOworICAgICAgICBtX2NvbElu
ZGV4ID0gY29sQ291bnQgLSAxOworICAgICAgICBtX2N1cnJMb2dpY2FsVG9wT2Zmc2V0ID0gY29s
Q291bnQgKiBtX2NvbEluZm8tPmNvbHVtbkhlaWdodCgpICogbV9kaXJlY3Rpb247CisgICAgICAg
IHVwZGF0ZSgpOworICAgIH0KKworICAgIHZvaWQgYWR2YW5jZSgpCisgICAgeworICAgICAgICBB
U1NFUlQoaGFzTW9yZSgpKTsKKyAgICAgICAgbV9jb2xJbmRleC0tOworICAgICAgICB1cGRhdGUo
KTsKKyAgICB9CisKKyAgICBMYXlvdXRSZWN0IGNvbHVtblJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2NvbFJlY3Q7IH0KKyAgICBib29sIGhhc01vcmUoKSBjb25zdCB7IHJldHVybiBtX2NvbEluZGV4
ID49IDA7IH0KKworICAgIHZvaWQgYWRqdXN0KExheW91dFNpemUmIG9mZnNldCkgY29uc3QKKyAg
ICB7CisgICAgICAgIExheW91dFVuaXQgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0ID0gKG1faXNIb3Jp
em9udGFsID8gbV9jb2xSZWN0LngoKSA6IG1fY29sUmVjdC55KCkpIC0gbV9sb2dpY2FsTGVmdDsK
KyAgICAgICAgb2Zmc2V0ICs9IG1faXNIb3Jpem9udGFsID8gTGF5b3V0U2l6ZShjdXJyTG9naWNh
bExlZnRPZmZzZXQsIG1fY3VyckxvZ2ljYWxUb3BPZmZzZXQpIDogTGF5b3V0U2l6ZShtX2N1cnJM
b2dpY2FsVG9wT2Zmc2V0LCBjdXJyTG9naWNhbExlZnRPZmZzZXQpOworICAgICAgICBpZiAobV9j
b2xJbmZvLT5wcm9ncmVzc2lvbkF4aXMoKSA9PSBDb2x1bW5JbmZvOjpCbG9ja0F4aXMpIHsKKyAg
ICAgICAgICAgIGlmIChtX2lzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgICAgICBvZmZzZXQuZXhw
YW5kKDAsIG1fY29sUmVjdC55KCkgLSBtX2Jsb2NrLmJvcmRlclRvcCgpIC0gbV9ibG9jay5wYWRk
aW5nVG9wKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9mZnNldC5leHBh
bmQobV9jb2xSZWN0LngoKSAtIG1fYmxvY2suYm9yZGVyTGVmdCgpIC0gbV9ibG9jay5wYWRkaW5n
TGVmdCgpLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0
ZSgpCisgICAgeworICAgICAgICBpZiAobV9jb2xJbmRleCA8IDApCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbV9jb2xSZWN0ID0gbV9ibG9jay5jb2x1bW5SZWN0QXQoY29uc3RfY2Fz
dDxDb2x1bW5JbmZvKj4obV9jb2xJbmZvKSwgbV9jb2xJbmRleCk7CisgICAgICAgIG1fYmxvY2su
ZmxpcEZvcldyaXRpbmdNb2RlKG1fY29sUmVjdCk7CisgICAgICAgIG1fY3VyckxvZ2ljYWxUb3BP
ZmZzZXQgLT0gKG1faXNIb3Jpem9udGFsID8gbV9jb2xSZWN0LmhlaWdodCgpIDogbV9jb2xSZWN0
LndpZHRoKCkpICogbV9kaXJlY3Rpb247CisgICAgfQorCisgICAgY29uc3QgUmVuZGVyQmxvY2sm
IG1fYmxvY2s7CisgICAgY29uc3QgQ29sdW1uSW5mbyogY29uc3QgbV9jb2xJbmZvOworICAgIGNv
bnN0IGludCBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBib29sIG1faXNIb3Jpem9udGFsOworICAg
IGNvbnN0IExheW91dFVuaXQgbV9sb2dpY2FsTGVmdDsKKyAgICBpbnQgbV9jb2xJbmRleDsKKyAg
ICBMYXlvdXRVbml0IG1fY3VyckxvZ2ljYWxUb3BPZmZzZXQ7CisgICAgTGF5b3V0UmVjdCBtX2Nv
bFJlY3Q7Cit9OworCiBib29sIFJlbmRlckJsb2NrOjpoaXRUZXN0Q29sdW1ucyhjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7CiAgICAgLy8gV2UgbmVlZCB0byBk
byBtdWx0aXBsZSBwYXNzZXMsIGJyZWFraW5nIHVwIG91ciBoaXQgdGVzdGluZyBpbnRvIHN0cmlw
cy4KLSAgICBDb2x1bW5JbmZvKiBjb2xJbmZvID0gY29sdW1uSW5mbygpOwotICAgIGludCBjb2xD
b3VudCA9IGNvbHVtbkNvdW50KGNvbEluZm8pOwotICAgIGlmICghY29sQ291bnQpCisgICAgaWYg
KCFoYXNDb2x1bW5zKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KCk7Ci0gICAgTGF5b3V0VW5p
dCBjdXJyTG9naWNhbFRvcE9mZnNldCA9ICFzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZSgpID8gLWNvbENvdW50ICogY29sSW5mby0+Y29sdW1uSGVpZ2h0KCkgOiBjb2xDb3VudCAq
IGNvbEluZm8tPmNvbHVtbkhlaWdodCgpOwotICAgIGJvb2wgaXNIb3Jpem9udGFsID0gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKTsKIAotICAgIGZvciAoaW50IGkgPSBjb2xDb3VudCAtIDE7IGkg
Pj0gMDsgaS0tKSB7Ci0gICAgICAgIExheW91dFJlY3QgY29sUmVjdCA9IGNvbHVtblJlY3RBdChj
b2xJbmZvLCBpKTsKLSAgICAgICAgZmxpcEZvcldyaXRpbmdNb2RlKGNvbFJlY3QpOwotICAgICAg
ICBMYXlvdXRVbml0IGN1cnJMb2dpY2FsTGVmdE9mZnNldCA9IChpc0hvcml6b250YWwgPyBjb2xS
ZWN0LngoKSA6IGNvbFJlY3QueSgpKSAtIGxvZ2ljYWxMZWZ0OwotICAgICAgICBMYXlvdXRVbml0
IGJsb2NrRGVsdGEgPSAgKGlzSG9yaXpvbnRhbCA/IGNvbFJlY3QuaGVpZ2h0KCkgOiBjb2xSZWN0
LndpZHRoKCkpOwotICAgICAgICBpZiAoc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSkKLSAgICAgICAgICAgIGN1cnJMb2dpY2FsVG9wT2Zmc2V0IC09IGJsb2NrRGVsdGE7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGN1cnJMb2dpY2FsVG9wT2Zmc2V0ICs9IGJsb2NrRGVs
dGE7CisgICAgZm9yIChDb2x1bW5SZWN0SXRlcmF0b3IgaXQoKnRoaXMpOyBpdC5oYXNNb3JlKCk7
IGl0LmFkdmFuY2UoKSkgeworICAgICAgICBMYXlvdXRSZWN0IGhpdFJlY3QgPSByZXN1bHQucmVj
dEZvclBvaW50KHBvaW50SW5Db250YWluZXIpOworICAgICAgICBMYXlvdXRSZWN0IGNvbFJlY3Qg
PSBpdC5jb2x1bW5SZWN0KCk7CiAgICAgICAgIGNvbFJlY3QubW92ZUJ5KGFjY3VtdWxhdGVkT2Zm
c2V0KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjb2xSZWN0LmludGVyc2VjdHMocmVzdWx0LnJl
Y3RGb3JQb2ludChwb2ludEluQ29udGFpbmVyKSkpIHsKKyAgICAgICAgaWYgKGNvbFJlY3QuaW50
ZXJzZWN0cyhoaXRSZWN0KSkgewogICAgICAgICAgICAgLy8gVGhlIHBvaW50IGlzIGluc2lkZSB0
aGlzIGNvbHVtbi4KICAgICAgICAgICAgIC8vIEFkanVzdCBhY2N1bXVsYXRlZE9mZnNldCB0byBj
aGFuZ2Ugd2hlcmUgd2UgaGl0IHRlc3QuCi0gICAgICAgIAotICAgICAgICAgICAgTGF5b3V0U2l6
ZSBvZmZzZXQgPSBpc0hvcml6b250YWwgPyBJbnRTaXplKGN1cnJMb2dpY2FsTGVmdE9mZnNldCwg
Y3VyckxvZ2ljYWxUb3BPZmZzZXQpIDogTGF5b3V0U2l6ZShjdXJyTG9naWNhbFRvcE9mZnNldCwg
Y3VyckxvZ2ljYWxMZWZ0T2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChjb2xJbmZvLT5wcm9ncmVz
c2lvbkF4aXMoKSA9PSBDb2x1bW5JbmZvOjpCbG9ja0F4aXMpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuZXhwYW5kKDAsIGNv
bFJlY3QueSgpIC0gYWNjdW11bGF0ZWRPZmZzZXQueSgpIC0gYm9yZGVyVG9wKCkgLSBwYWRkaW5n
VG9wKCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0
LmV4cGFuZChjb2xSZWN0LngoKSAtIGFjY3VtdWxhdGVkT2Zmc2V0LngoKSAtIGJvcmRlckxlZnQo
KSAtIHBhZGRpbmdMZWZ0KCksIDApOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBMYXlv
dXRTaXplIG9mZnNldDsKKyAgICAgICAgICAgIGl0LmFkanVzdChvZmZzZXQpOwogICAgICAgICAg
ICAgTGF5b3V0UG9pbnQgZmluYWxMb2NhdGlvbiA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgb2Zmc2V0
OwotICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1JlY3RCYXNlZFRlc3QoKSAmJiAhY29sUmVjdC5j
b250YWlucyhyZXN1bHQucmVjdEZvclBvaW50KHBvaW50SW5Db250YWluZXIpKSkKLSAgICAgICAg
ICAgICAgICBoaXRUZXN0Q29udGVudHMocmVxdWVzdCwgcmVzdWx0LCBwb2ludEluQ29udGFpbmVy
LCBmaW5hbExvY2F0aW9uLCBoaXRUZXN0QWN0aW9uKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGlmICghcmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpIHx8IGNvbFJlY3QuY29udGFpbnMo
aGl0UmVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0
LCByZXN1bHQsIHBvaW50SW5Db250YWluZXIsIGZpbmFsTG9jYXRpb24sIGhpdFRlc3RBY3Rpb24p
IHx8IChoaXRUZXN0QWN0aW9uID09IEhpdFRlc3RGbG9hdCAmJiBoaXRUZXN0RmxvYXRzKHJlcXVl
c3QsIHJlc3VsdCwgcG9pbnRJbkNvbnRhaW5lciwgZmluYWxMb2NhdGlvbikpOworCisgICAgICAg
ICAgICBoaXRUZXN0Q29udGVudHMocmVxdWVzdCwgcmVzdWx0LCBwb2ludEluQ29udGFpbmVyLCBm
aW5hbExvY2F0aW9uLCBoaXRUZXN0QWN0aW9uKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAordm9pZCBSZW5kZXJCbG9jazo6YWRqdXN0Rm9yQ29sdW1uUmVjdChM
YXlvdXRTaXplJiBvZmZzZXQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyKSBj
b25zdAoreworICAgIGZvciAoQ29sdW1uUmVjdEl0ZXJhdG9yIGl0KCp0aGlzKTsgaXQuaGFzTW9y
ZSgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICAgICAgTGF5b3V0UmVjdCBjb2xSZWN0ID0gaXQuY29s
dW1uUmVjdCgpOworICAgICAgICBpZiAoY29sUmVjdC5jb250YWlucyhwb2ludEluQ29udGFpbmVy
KSkgeworICAgICAgICAgICAgaXQuYWRqdXN0KG9mZnNldCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9Cit9CisKIGJvb2wgUmVuZGVyQmxvY2s6OmhpdFRlc3RDb250ZW50
cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7CiAgICAgaWYg
KGNoaWxkcmVuSW5saW5lKCkgJiYgIWlzVGFibGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCA3Yjc1MjUxMWUyNmIyZGQ1MmFiMmVhZmM0YTY1ZjBlYjBhOWVl
MWExLi5jYjI2MmVjMGM3N2FhZGJhMzI4MmI5MWQ2NDRkZjdjODdjYmRlMDQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMTk2LDYgKzE5Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRqdXN0UmVjdEZvckNvbHVtbnMoTGF5b3V0UmVjdCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RGb3JDb2x1bW5zKExheW91dFNpemUmLCBjb25zdCBMYXlvdXRQ
b2ludCYpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0Rm9yQ29sdW1uUmVjdChMYXlvdXRTaXplJiBv
ZmZzZXQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyKSBjb25zdDsKIAogICAg
IHZvaWQgYWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5saW5lKik7CiAgICAgYm9v
bCBwYWludHNDb250aW51YXRpb25PdXRsaW5lKFJlbmRlcklubGluZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1ZDdhNjdmMTU3YjY3NWUwZmRhY2FjNTA2ZjI4
Mzk1MDkwZWNjNzdmLi5iY2UwMmNlYWNhOGEwYzgxMDFjOWE2YzRhYzZlZGMzMWMzZjJhOTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTM5MywyMiArMTM5Myw4
IEBAIHZvaWQgUmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBi
b29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9yCiAgICAgICAgIGZpeGVkICY9IGlzRml4ZWRQb3M7
CiAgICAgfSBlbHNlCiAgICAgICAgIGZpeGVkIHw9IGlzRml4ZWRQb3M7Ci0gICAgCi0gICAgUmVu
ZGVyT2JqZWN0KiBvID0gY29udGFpbmVyKCk7Ci0gICAgaWYgKCFvKQotICAgICAgICByZXR1cm47
CiAKLSAgICBvLT5tYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChmaXhlZCwgdXNlVHJhbnNmb3Jtcywg
dHJhbnNmb3JtU3RhdGUpOwotCi0gICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZz
ZXRGcm9tQ29udGFpbmVyKG8sIExheW91dFBvaW50KCkpOwotCi0gICAgYm9vbCBwcmVzZXJ2ZTNE
ID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgp
LT5wcmVzZXJ2ZXMzRCgpKTsKLSAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7
Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVyT2Zmc2V0LCB0
KTsKLSAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCwgcHJlc2VydmUzRCA/
IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZs
YXR0ZW5UcmFuc2Zvcm0pOwotICAgIH0gZWxzZQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3Zl
KGNvbnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNl
cnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0
YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJz
b2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsK
IH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1YTkxMzdhNzI4
MDEzNmVlN2RmODgwNjYzMzdjOTk3NzNlZTVmMmY4Li45MjEzZGIzYTZjMDllMzc2OWMyMDFhYTYz
NWFkNWRhYTI0MmM4ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0yNzE3LDQgKzI3MTgsMzMgQEAgYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQogICAgIHJldHVybiAhY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNs
YXRpb25PckZsaXBwZWQoKTsKIH0KIAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJz
b2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0Cit7CisgICAgLy8gV2UgZG9uJ3QgZXhwZWN0
IGFic29sdXRlVG9Mb2NhbCgpIHRvIGJlIGNhbGxlZCBkdXJpbmcgbGF5b3V0ICh5ZXQpCisgICAg
QVNTRVJUKCF2aWV3KCkgfHwgIXZpZXcoKS0+bGF5b3V0U3RhdGVFbmFibGVkKCkpOworCisgICAg
UmVuZGVyT2JqZWN0KiBvID0gY29udGFpbmVyKCk7CisgICAgaWYgKCFvKQorICAgICAgICByZXR1
cm47CisKKyAgICBvLT5tYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChmaXhlZCwgdXNlVHJhbnNmb3Jt
cywgdHJhbnNmb3JtU3RhdGUpOworCisgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBv
ZmZzZXRGcm9tQ29udGFpbmVyKG8sIExheW91dFBvaW50KCkpOworCisgICAgaWYgKHN0eWxlKCkt
PnBvc2l0aW9uKCkgIT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBzdHlsZSgpLT5wb3NpdGlvbigpICE9
IEZpeGVkUG9zaXRpb24gJiYgby0+aGFzQ29sdW1ucygpKSB7CisgICAgICAgIFJlbmRlckJsb2Nr
KiBibG9jayA9IHN0YXRpY19jYXN0PFJlbmRlckJsb2NrKj4obyk7CisgICAgICAgIExheW91dFBv
aW50IHBvaW50KHJvdW5kZWRMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgp
KSk7CisgICAgICAgIHBvaW50IC09IGNvbnRhaW5lck9mZnNldDsKKyAgICAgICAgYmxvY2stPmFk
anVzdEZvckNvbHVtblJlY3QoY29udGFpbmVyT2Zmc2V0LCBwb2ludCk7CisgICAgfQorCisgICAg
Ym9vbCBwcmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVz
M0QoKSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKKyAgICBpZiAodXNlVHJhbnNmb3JtcyAm
JiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CisgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHQ7CisgICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIobywgY29u
dGFpbmVyT2Zmc2V0LCB0KTsKKyAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0o
dCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJh
bnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOworICAgIH0gZWxzZQorICAgICAgICB0cmFu
c2Zvcm1TdGF0ZS5tb3ZlKGNvbnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQu
aGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9y
bSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaAppbmRleCBhZjE5OWVmODE5YTA1Y2VmYTQ0NmQ0YjZjMTdmMjBmZDUzZTM5MWQ5Li5i
MDdlOGQ2MTIyNWRmZDZkNzdiYjg3ZmZlNjlkMzcxOGY4NDIzOTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMTI1LDYgKzEyNSw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0
TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29u
dGFpbmluZ0xpbmUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOwog
CisgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJv
b2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBPVkVSUklERTsKKwogICAg
IC8vIENhbGxlZCBieSBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpIGFuZCBpcyB0aGUg
b25seSB3YXkgbGF5ZXJzIHNob3VsZCBldmVyIGJlIGRlc3Ryb3llZAogICAgIHZvaWQgZGVzdHJv
eUxheWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggMWU4YTFlMjdmYTY1ZjMxZjVhMDljZGE3NjQwN2MwMjEyZTM1MGNjMC4uOWM2Njc4ZDI4MDI2
YTFiZjQ1NGU1NDk4YTljMDJhNjM0NDEyOTcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTExNjEsMjggKzExNjEsNiBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYgogICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4
ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CiAKLXZvaWQg
UmVuZGVySW5saW5lOjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVz
ZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKLXsKLSAg
ICAvLyBXZSBkb24ndCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZHVyaW5nIGxh
eW91dC4KLSAgICBBU1NFUlQoIXZpZXcoKSB8fCAhdmlldygpLT5sYXlvdXRTdGF0ZUVuYWJsZWQo
KSk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIG8gPSBjb250YWluZXIoKTsKLSAgICBpZiAoIW8pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGZpeGVkLCB1
c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7Ci0KLSAgICBMYXlvdXRTaXplIGNvbnRhaW5l
ck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQoKSk7Ci0KLSAgICBi
b29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMz
RCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwotICAgIGlmICh1c2VUcmFuc2Zvcm1zICYm
IHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykpIHsKLSAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdDsKLSAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250
YWluZXJPZmZzZXQsIHQpOwotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0
LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFu
c2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRyYW5z
Zm9ybVN0YXRlLm1vdmUoY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIGNvbnRhaW5lck9mZnNldC5o
ZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3Jt
IDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwotfQotCiB2b2lkIFJlbmRlcklu
bGluZTo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogewogICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0Ojp1cGRhdGVEcmFnU3RhdGUoZHJhZ09uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaAppbmRleCBmZTk1YWYxZmUxODc1NDI2NWJhOTc5MDlmN2VkYjZlYjNlNzNh
ZTY5Li4wNDkwNWMyYjM4NDYyMDQwNjc5YjZkNDI5ODMxMGIyYjRlYjk3YWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0xMzEsNyArMTMxLDYgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBU
cmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY4ODAzYTFh
YjRhZWUyN2MxMTFkNGFmMWVmZmYwNjMyODY1NDhjMzcuLjgwZWUxNTk3MDYxYzBiZDk5MWMwYTUy
Y2JkNjBjZmZmZDE1ZDNmNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMi0wMiAgWW9z
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmFuZ2Ugc2xpZGVy
cyBhbmQgc3BpbiBidXR0b25zIGRvbid0IHdvcmsgd2l0aCBtdWx0aS1jb2x1bW5zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL29m
ZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQ6IENoYW5nZSBvZmZzZXQgZm9yICJpbi1jb2x1bW5z
IiB0ZXN0LgorICAgICAgICAqIGZhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS5odG1sOiBDaGFu
Z2Ugb2Zmc2V0IGZvciAiaW4tY29sdW1ucyIgdGVzdC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xp
c3Rib3gvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2xpc3Rib3gvbGlzdGJveC1pbi1tdWx0aS1jb2x1bW4uaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11
bHRpLWNvbHVtbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3NsaWRl
ci1pbi1tdWx0aS1jb2x1bW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3JhbmdlL3NsaWRlci1pbi1tdWx0aS1jb2x1bW4uaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3Rl
ZC50eHQ6IENoYW5nZSBvZmZzZXQgZm9yICJpbi1jb2x1bW5zIiB0ZXN0LgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0OiBDaGFu
Z2Ugb2Zmc2V0IGZvciAiaW4tY29sdW1ucyIgdGVzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
ZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dDogQ2hhbmdlIG9mZnNldCBm
b3IgImluLWNvbHVtbnMiIHRlc3QuCisKIDIwMTEtMTItMDEgIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlcGxhY2UgYSBjdXN0b20gY29uc3RydWN0b3Ig
b2Ygd2luZG93Lk9wdGlvbiB3aXRoIHRoZSBbTmFtZWRDb25zdHJ1Y3Rvcl0gSURMCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dApp
bmRleCAwNTAyNGNmZmFlNDAyMThiZThmZmQ0ZDcxYTVlZDFiOWJmOTIwNjEyLi43MTEyMjQxNGE0
YzE2NDJlZjMzZjU3NDlkZTc3M2FiYWU0ZGNkYzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcg
QEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94IGF0IG9mZnNldCAoMzIsIDM3
KQogUEFTUzogZXZlbnQgYXQgKDE1NywgMzIpIGhpdCByZWwtYm94IGF0IG9mZnNldCAoMjIsIDI0
KQogUEFTUzogZXZlbnQgYXQgKDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwg
MTApCiBQQVNTOiBldmVudCBhdCAoMzYsIDI3MikgaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQg
b2Zmc2V0ICg0LCA0KQotUEFTUzogZXZlbnQgYXQgKDYzOSwgMjA3KSBoaXQgaW4tY29sdW1ucyBh
dCBvZmZzZXQgKDE3MywgLTE4OSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGluLWNv
bHVtbnMgYXQgb2Zmc2V0ICgzNSwgNSkKIFBBU1M6IGV2ZW50IGF0ICg1NjMsIDQxMCkgaGl0IGlu
c2lkZS1vdmVyZmxvdyBhdCBvZmZzZXQgKDcsIDYpCiBQQVNTOiBldmVudCBhdCAoMTEyLCAzNjkp
IGhpdCB0cmFuc2Zvcm1lZCBhdCBvZmZzZXQgKDExLCAxNikKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbAppbmRleCBiZjM4ZTA0ZTM1YzgxOWQyYjUxM2Nj
NjM5NDFiMDEyNzljYmEwMjQ4Li45YzgyZjhlYjEwZGZhZGQxNDE1ODA4YmExNjYxYmMzZjhlNGQ2
NTdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFku
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbApA
QCAtMzcsNyArMzcsNyBAQAogICAgICAgZGlzcGF0Y2hFdmVudCgxNTcsIDMyLCAncmVsLWJveCcs
IDIyLCAyNCk7CiAgICAgICBkaXNwYXRjaEV2ZW50KDQxMCwgMzAsICdmaXhlZC1ib3gnLCAxMCwg
MTApOwogICAgICAgZGlzcGF0Y2hFdmVudCgzNiwgMjcyLCAnd2l0aC1ib3JkZXJ0b3BleHRyYScs
IDQsIDQpOwotICAgICAgZGlzcGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAxNzMs
IC0xODkpOworICAgICAgZGlzcGF0Y2hFdmVudCg2MzksIDIwNywgJ2luLWNvbHVtbnMnLCAzNSwg
NSk7CiAgICAgICBkaXNwYXRjaEV2ZW50KDU2MywgNDEwLCAnaW5zaWRlLW92ZXJmbG93JywgNywg
Nik7CiAgICAgICBkaXNwYXRjaEV2ZW50KDExMiwgMzY5LCAndHJhbnNmb3JtZWQnLCAxMSwgMTYp
OwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJl
ci9zcGluLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjNkY2UzYjdmZGNiNGRhYjEyOGUyOWVkYzQ2OTQ0ZWE4ZGMyNTE2MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBACitTcGluIEluIE11bHRpLUNvdWx1bW4KKworVGhp
cyBpcyB0ZXN0IGNhc2VzIGZvciBCVUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0
ZXIKKworCisKKworU1BBTiBvdXRlcgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVz
dWx0cworCitQQVNTRUQgYzAwCitQQVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQ
QVNTRUQgYzExCitQQVNTRUQgYzEyCitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIy
CitQQVNTRUQgYzMwCitQQVNTRUQgYzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE4YmY2MmRhNWI2NzRkZTE2ODVkOTQyMjg0Nzc5NWYxNTFlNzg1YTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNv
bHVtbi5odG1sCkBAIC0wLDAgKzEsMTQzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KK2Zvcm0geworICAgIC13ZWJraXQtY29sdW1uLWNv
dW50OiAzOworICAgIC13ZWJraXQtY29sdW1uLWdhcDogMHB4OworICAgIC1tb3otY29sdW1uLWNv
dW50OiAzOworICAgIC1tb3otY29sdW1uLWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2Nj
ZmY7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29s
aWQgMXB4IHJlZDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0geworICAgIHdpZHRoOiAxMDBw
eDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9CisKK3RkIHsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9
Cis8L3N0eWxlPgorPHNjcmlwdD4KK2NvbnN0IG51bUZvcm1zID0gNDsKK2NvbnN0IG51bUNvbHMg
PSAzOworCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHZhciByZXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzJyk7CisgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyBt
c2cgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VYKHJ1bm5lcikgeworICAgIHZhciBhY2Mg
PSAwOworICAgIHdoaWxlIChydW5uZXIpIHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRM
ZWZ0OworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICBy
ZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiBwYWdlWShydW5uZXIpIHsKKyAgICB2YXIgYWNjID0g
MDsKKyAgICB3aGlsZSAocnVubmVyKSB7CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zmc2V0VG9w
OworICAgICAgICBydW5uZXIgPSBydW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1
cm4gYWNjOworfQorCitmdW5jdGlvbiB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgb2ZzWCwg
ZXhwZWN0ZWQpCit7CisgICAgY29uc3QgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
IiArIGZvcm1JbmRleCk7CisgICAgY29uc3QgY29sdW1uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImMiICsgZm9ybUluZGV4ICsgIjAiKTsKKyAgICBjb25zdCBjb2xXaWR0aCA9IE1hdGguZmxv
b3IoZm9ybS5vZmZzZXRXaWR0aCAvIG51bUNvbHMpOworCisgICAgY29uc3Qgc3BpbklkID0gImMi
ICsgZm9ybUluZGV4ICsgY29sSW5kZXg7CisgICAgY29uc3Qgc3BpbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHNwaW5JZCk7CisKKyAgICBjb25zdCBjbGlja1ggPSBwYWdlWChjb2x1bW4pICsg
Y29sV2lkdGggKiBjb2xJbmRleCArIG9mc1g7CisgICAgY29uc3QgY2xpY2tZID0gcGFnZVkoY29s
dW1uKSArIE1hdGguZmxvb3Ioc3Bpbi5vZmZzZXRIZWlnaHQgLyAzKTsKKworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGNsaWNrWCwgY2xpY2tZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMCwgMCk7CisKKyAgICBpZiAoc3Bpbi52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAg
bG9nKCJQQVNTRUQgIiArIHNwaW5JZCk7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUxFRCAi
ICsgc3BpbklkICsgIiBleHBlY3RlZD0iICsgZXhwZWN0ZWQgKyAiIGdvdD0iICsgc3Bpbi52YWx1
ZSArICIgIiArIGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIGluc3RhbGxN
b3VzZVRyYWNrZXIoKSB7CisgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlbW92ZSA9IGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgdmFyIHJlc3VsdEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
b3VzZXBvcyIpOworICAgICAgICB2YXIgb2Zmc2V0cyA9ICJlbGVtZW50IGlkOiAiICsgZS50YXJn
ZXQuaWQgKyAiPGJyPiBjbGllbnRYOiAiICsgZS5jbGllbnRYICsgIiBjbGllbnRZOiAiICsgZS5j
bGllbnRZICsgIjxicj4iOworICAgICAgICBvZmZzZXRzICs9ICJvZmZzZXRYOiAiICsgZS5vZmZz
ZXRYICsgIiBvZmZzZXRZOiAiICsgZS5vZmZzZXRZOworICAgICAgICByZXN1bHRCb3guaW5uZXJI
VE1MID0gb2Zmc2V0czsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICgh
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGluc3RhbGxNb3VzZVRyYWNr
ZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgIGZvciAodmFyIGZvcm1JbmRleCA9IDA7IGZvcm1JbmRleCA8
IG51bUZvcm1zOyBmb3JtSW5kZXgrKykgeworICAgICAgICBmb3IgKHZhciBjb2xJbmRleCA9IDA7
IGNvbEluZGV4IDwgbnVtQ29sczsgY29sSW5kZXgrKykgeworICAgICAgICAgIHRlc3RJdChmb3Jt
SW5kZXgsIGNvbEluZGV4LCA5MywgMTApOworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aDE+U3BpbiBJbiBNdWx0aS1Db3Vs
dW1uPC9oMT4KK1RoaXMgaXMgdGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQu
b3JnL2IvNzA4OTgiPkJVRyA3MDg5ODwvYT4uCisKKzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9ybSBp
ZD0iZjAiPgorPGlucHV0IGlkPSJjMDAiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIg
c3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMwMSIgdHlwZT0ibnVtYmVyIiBtaW49IjAi
IG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzAyIiB0eXBlPSJudW1i
ZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9mb3JtPgorCis8aDI+
RElWIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMSI+Cis8ZGl2PgorPGlucHV0IGlkPSJjMTAiIHR5
cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQg
aWQ9ImMxMSIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIg
Lz4KKzxpbnB1dCBpZD0iYzEyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9
IjEwIiAvPjxiciAvPgorPC9kaXY+Cis8L2Zvcm0+CisKKzxoMj5TUEFOIG91dGVyPC9oMj4KKzxm
b3JtIGlkPSJmMiI+Cis8c3Bhbj4KKzxpbnB1dCBpZD0iYzIwIiB0eXBlPSJudW1iZXIiIG1pbj0i
MCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjEiIHR5cGU9Im51
bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMy
MiIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzwv
c3Bhbj4KKzwvZm9ybT4KKworPGgyPlRBQkxFIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMyI+Cis8
dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0
ZD48aW5wdXQgaWQ9ImMzMCIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIx
MCIgLz48L3RkPjwvdHI+Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMxIiB0eXBlPSJudW1iZXIiIG1p
bj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlucHV0IGlk
PSJjMzIiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48
L3RyPgorPC90YWJsZT4KKzwvZm9ybT4KKworPGgyPlJlc3VsdHM8L2gyPgorPGRpdiBpZD0ibW91
c2Vwb3MiPjwvZGl2PgorPGRpdiBpZD0icmVzIj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29sdW1uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRp
LWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZjZDMzMDgyMmU4MWI0YTVmMjQ4MWI0
NjE5MGE0OGQzZjdjZjM5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
OCBAQAorU2xpZGVyIEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciBC
VUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKworU1BBTiBvdXRl
cgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNTRUQgYzAwCitQ
QVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQQVNTRUQgYzEy
CitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMwCitQQVNTRUQg
YzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFu
Z2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
YW5nZS9zbGlkZXItaW4tbXVsdGktY29sdW1uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMwYzNiMjMxODhm
NjEzNDM2YTRiNzJhZGU4MWU3YTlkYjAwYzMyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sCkBAIC0wLDAg
KzEsMTI5IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KK2Zvcm0geworICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJr
aXQtY29sdW1uLWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2lu
OiAwcHg7CisgICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30K
KworaW5wdXRbdHlwZT0icmFuZ2UiXSB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDog
NTBweDsKK30KKwordGQgeworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2Ny
aXB0PgorY29uc3QgbnVtRm9ybXMgPSA0OworY29uc3QgbnVtQ29scyA9IDM7CisKK2Z1bmN0aW9u
IGxvZyhtc2cpCit7CisgICAgdmFyIHJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMn
KTsKKyAgICByZXMuaW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArIG1zZyArICI8YnI+IjsKK30K
KworZnVuY3Rpb24gcGFnZVgocnVubmVyKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgd2hpbGUg
KHJ1bm5lcikgeworICAgICAgICBhY2MgKz0gcnVubmVyLm9mZnNldExlZnQ7CisgICAgICAgIHJ1
bm5lciA9IHJ1bm5lci5vZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisK
K2Z1bmN0aW9uIHBhZ2VZKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChy
dW5uZXIpIHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRUb3A7CisgICAgICAgIHJ1bm5l
ciA9IHJ1bm5lci5vZmZzZXRQYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBhY2M7Cit9CisKK2Z1
bmN0aW9uIHRlc3RJdChmb3JtSW5kZXgsIGNvbEluZGV4LCBvZnNYLCBleHBlY3RlZCkKK3sKKyAg
ICBjb25zdCBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiICsgZm9ybUluZGV4KTsK
KyAgICBjb25zdCBjb2x1bW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIgKyBmb3JtSW5k
ZXggKyAiMCIpOworICAgIGNvbnN0IGNvbFdpZHRoID0gTWF0aC5mbG9vcihmb3JtLm9mZnNldFdp
ZHRoIC8gbnVtQ29scyk7CisKKyAgICBjb25zdCBzbGlkZXJJZCA9ICJjIiArIGZvcm1JbmRleCAr
IGNvbEluZGV4OworICAgIGNvbnN0IHNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNs
aWRlcklkKTsKKworICAgIGNvbnN0IGNsaWNrWCA9IHBhZ2VYKGNvbHVtbikgKyBjb2xXaWR0aCAq
IGNvbEluZGV4ICsgb2ZzWDsKKyAgICBjb25zdCBjbGlja1kgPSBwYWdlWShjb2x1bW4pICsgc2xp
ZGVyLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjbGlj
a1gsIGNsaWNrWSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOworCisgICAgaWYgKHNsaWRlci52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAg
ICAgbG9nKCJQQVNTRUQgIiArIHNsaWRlcklkKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJ
TEVEICIgKyBzbGlkZXJJZCArICIgZXhwZWN0ZWQ9IiArIGV4cGVjdGVkICsgIiBnb3Q9IiArIHNs
aWRlci52YWx1ZSArICIgIiArIGNsaWNrWCArICJAIiArIGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBmb3JtSW5kZXggPCBudW1Gb3JtczsgZm9ybUluZGV4
KyspIHsKKyAgICAgICAgZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7
IGNvbEluZGV4KyspIHsKKyAgICAgICAgICB0ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgMjMs
IDIwKTsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJ0ZXN0KCkiPgorPGgxPlNsaWRlciBJbiBNdWx0aS1Db3VsdW1uPC9oMT4KK1RoaXMgaXMg
dGVzdCBjYXNlcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2IvNzA4OTgiPkJVRyA3
MDg5ODwvYT4uCisKKzxoMj5ObyBvdXRlcjwvaDI+Cis8Zm9ybSBpZD0iZjAiPgorPGlucHV0IGlk
PSJjMDAiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4K
KzxpbnB1dCBpZD0iYzAxIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAi
IC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMwMiIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAi
IHN0ZXA9IjEwIiAvPjxiciAvPgorPC9mb3JtPgorCis8aDI+RElWIG91dGVyPC9oMj4KKzxmb3Jt
IGlkPSJmMSI+Cis8ZGl2PgorPGlucHV0IGlkPSJjMTAiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1h
eD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzxpbnB1dCBpZD0iYzExIiB0eXBlPSJyYW5nZSIg
bWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+PGJyIC8+Cis8aW5wdXQgaWQ9ImMxMiIgdHlw
ZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjxiciAvPgorPC9kaXY+Cis8
L2Zvcm0+CisKKzxoMj5TUEFOIG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMiI+Cis8c3Bhbj4KKzxp
bnB1dCBpZD0iYzIwIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgc3RlcD0iMTAiIC8+
PGJyIC8+Cis8aW5wdXQgaWQ9ImMyMSIgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0
ZXA9IjEwIiAvPjxiciAvPgorPGlucHV0IGlkPSJjMjIiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1h
eD0iMTAwIiBzdGVwPSIxMCIgLz48YnIgLz4KKzwvc3Bhbj4KKzwvZm9ybT4KKworPGgyPlRBQkxF
IG91dGVyPC9oMj4KKzxmb3JtIGlkPSJmMyI+Cis8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGlu
Zz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48aW5wdXQgaWQ9ImMzMCIgdHlwZT0icmFu
Z2UiIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjEwIiAvPjwvdGQ+PC90cj4KKzx0cj48dGQ+PGlu
cHV0IGlkPSJjMzEiIHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiBzdGVwPSIxMCIgLz48
L3RkPjwvdHI+Cis8dHI+PHRkPjxpbnB1dCBpZD0iYzMyIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBt
YXg9IjEwMCIgc3RlcD0iMTAiIC8+PC90ZD48L3RyPgorPC90YWJsZT4KKzwvZm9ybT4KKworPGgy
PlJlc3VsdHM8L2gyPgorPGRpdiBpZD0icmVzIj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVt
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWlu
LW11bHRpLWNvbHVtbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDExM2NlNzU0YmRlNTg5MWNj
NjRjZDRkNzg1MTAwZDJjYTNiZjJiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDM4IEBACitMaXN0Qm94IEluIE11bHRpLUNvdWx1bW4KKworVGhpcyBpcyB0ZXN0IGNh
c2VzIGZvciBCVUcgNzA4OTguCitObyBvdXRlcgorCisKKworCitESVYgb3V0ZXIKKworCisKKwor
U1BBTiBvdXRlcgorCisgCisKKworVEFCTEUgb3V0ZXIKKworCisKKworUmVzdWx0cworCitQQVNT
RUQgYzAwCitQQVNTRUQgYzAxCitQQVNTRUQgYzAyCitQQVNTRUQgYzEwCitQQVNTRUQgYzExCitQ
QVNTRUQgYzEyCitQQVNTRUQgYzIwCitQQVNTRUQgYzIxCitQQVNTRUQgYzIyCitQQVNTRUQgYzMw
CitQQVNTRUQgYzMxCitQQVNTRUQgYzMyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRmYzYzNTg0MTFjNGVhNDE2YmI4YWE3N2YyNTFmNWYxNDE0N2FhYjUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVt
bi5odG1sCkBAIC0wLDAgKzEsMTMzIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KK2JvZHkgeworICAgIGZvbnQtc2l6ZTogMTNweDsKK30K
K2Zvcm0geworICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOworICAgIC13ZWJraXQtY29sdW1u
LWdhcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNjY2NjZmY7CisgICAgbWFyZ2luOiAwcHg7Cisg
ICAgcGFkZGluZzogMHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IHJlZDsKK30KKworaW5wdXRb
dHlwZT0ibnVtYmVyIl0geworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9
CisKK3RkIHsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Nv
bnN0IG51bUZvcm1zID0gNDsKK2NvbnN0IG51bUNvbHMgPSAzOworCitmdW5jdGlvbiBsb2cobXNn
KQoreworICAgIHZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzJyk7CisgICAg
cmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7Cit9CisKK2Z1bmN0
aW9uIHBhZ2VYKHJ1bm5lcikgeworICAgIHZhciBhY2MgPSAwOworICAgIHdoaWxlIChydW5uZXIp
IHsKKyAgICAgICAgYWNjICs9IHJ1bm5lci5vZmZzZXRMZWZ0OworICAgICAgICBydW5uZXIgPSBy
dW5uZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlv
biBwYWdlWShydW5uZXIpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICB3aGlsZSAocnVubmVyKSB7
CisgICAgICAgIGFjYyArPSBydW5uZXIub2Zmc2V0VG9wOworICAgICAgICBydW5uZXIgPSBydW5u
ZXIub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gYWNjOworfQorCitmdW5jdGlvbiB0
ZXN0SXQoZm9ybUluZGV4LCBjb2xJbmRleCwgb2ZzWCwgZXhwZWN0ZWQpCit7CisgICAgY29uc3Qg
Zm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmIiArIGZvcm1JbmRleCk7CisgICAgY29u
c3QgY29sdW1uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiICsgZm9ybUluZGV4ICsgIjAi
KTsKKyAgICBjb25zdCBjb2xXaWR0aCA9IE1hdGguZmxvb3IoZm9ybS5vZmZzZXRXaWR0aCAvIG51
bUNvbHMpOworCisgICAgY29uc3Qgc3BpbklkID0gImMiICsgZm9ybUluZGV4ICsgY29sSW5kZXg7
CisgICAgY29uc3Qgc3BpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwaW5JZCk7CisKKyAg
ICBjb25zdCBjbGlja1ggPSBwYWdlWChjb2x1bW4pICsgY29sV2lkdGggKiBjb2xJbmRleCArIG9m
c1g7CisgICAgY29uc3QgY2xpY2tZID0gcGFnZVkoY29sdW1uKSArIE1hdGguZmxvb3Ioc3Bpbi5v
ZmZzZXRIZWlnaHQgLyAzKTsKKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNsaWNrWCwg
Y2xpY2tZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CisKKyAgICBpZiAo
c3Bpbi52YWx1ZSA9PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTRUQgIiArIHNwaW5JZCk7
CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUxFRCAiICsgc3BpbklkICsgIiBleHBlY3RlZD0i
ICsgZXhwZWN0ZWQgKyAiIGdvdD0iICsgc3Bpbi52YWx1ZSArICIgIiArIGNsaWNrWCArICJAIiAr
IGNsaWNrWSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBmb3JtSW5k
ZXggPCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsKKyAgICAgICAgZm9yICh2YXIgY29sSW5kZXgg
PSAwOyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbEluZGV4KyspIHsKKyAgICAgICAgICB0ZXN0SXQo
Zm9ybUluZGV4LCBjb2xJbmRleCwgMTAsICJiIik7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxoMT5MaXN0Qm94IEluIE11
bHRpLUNvdWx1bW48L2gxPgorVGhpcyBpcyB0ZXN0IGNhc2VzIGZvciA8YSBocmVmPSJodHRwczov
L3dlYmtpdC5vcmcvYi83MDg5OCI+QlVHIDcwODk4PC9hPi4KKworPGgyPk5vIG91dGVyPC9oMj4K
Kzxmb3JtIGlkPSJmMCI+Cis8c2VsZWN0IGlkPSJjMDAiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9
ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9u
IHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlv
bj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMwMSIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1
ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRp
b24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0
aW9uPjwvc2VsZWN0PjxiciAvPgorPHNlbGVjdCBpZD0iYzAyIiBzaXplPSI0Ij48b3B0aW9uIHZh
bHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9w
dGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9v
cHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8L2Zvcm0+CisKKzxoMj5ESVYgb3V0ZXI8L2gyPgorPGZv
cm0gaWQ9ImYxIj4KKzxkaXY+Cis8c2VsZWN0IGlkPSJjMTAiIHNpemU9IjQiPjxvcHRpb24gdmFs
dWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0
aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29w
dGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMxMSIgc2l6ZT0iNCI+PG9wdGlvbiB2
YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5CcmF2bzwvb3B0aW9uPjxv
cHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJkIj5EZWx0YTwv
b3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPHNlbGVjdCBpZD0iYzEyIiBzaXplPSI0Ij48b3B0aW9u
IHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+
PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRh
PC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8L2Rpdj4KKzwvZm9ybT4KKworPGgyPlNQQU4gb3V0
ZXI8L2gyPgorPGZvcm0gaWQ9ImYyIj4KKzxzcGFuPgorPHNlbGVjdCBpZD0iYzIwIiBzaXplPSI0
Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImIiPkJyYXZv
PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxpZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9
ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PGJyIC8+Cis8c2VsZWN0IGlkPSJjMjEiIHNpemU9
IjQiPjxvcHRpb24gdmFsdWU9ImEiPkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJh
dm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1
ZT0iZCI+RGVsdGE8L29wdGlvbj48L3NlbGVjdD48YnIgLz4KKzxzZWxlY3QgaWQ9ImMyMiIgc2l6
ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiIj5C
cmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0aW9uIHZh
bHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjxiciAvPgorPC9zcGFuPgorPC9mb3JtPgor
Cis8aDI+VEFCTEUgb3V0ZXI8L2gyPgorPGZvcm0gaWQ9ImYzIj4KKzx0YWJsZSBib3JkZXI9IjAi
IGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjxzZWxlY3QgaWQ9ImMz
MCIgc2l6ZT0iNCI+PG9wdGlvbiB2YWx1ZT0iYSI+QWxwaGE8L29wdGlvbj48b3B0aW9uIHZhbHVl
PSJiIj5CcmF2bzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImMiPkNoYXJsaWU8L29wdGlvbj48b3B0
aW9uIHZhbHVlPSJkIj5EZWx0YTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PC90cj4KKzx0cj48dGQ+
PHNlbGVjdCBpZD0iYzMxIiBzaXplPSI0Ij48b3B0aW9uIHZhbHVlPSJhIj5BbHBoYTwvb3B0aW9u
PjxvcHRpb24gdmFsdWU9ImIiPkJyYXZvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYyI+Q2hhcmxp
ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImQiPkRlbHRhPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48
L3RyPgorPHRyPjx0ZD48c2VsZWN0IGlkPSJjMzIiIHNpemU9IjQiPjxvcHRpb24gdmFsdWU9ImEi
PkFscGhhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iYiI+QnJhdm88L29wdGlvbj48b3B0aW9uIHZh
bHVlPSJjIj5DaGFybGllPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZCI+RGVsdGE8L29wdGlvbj48
L3NlbGVjdD48L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9mb3JtPgorCis8aDI+UmVzdWx0czwvaDI+
Cis8ZGl2IGlkPSJyZXMiPgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRz
L29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKaW5kZXggNTliZTE3ZTVkNTFkOGM2N2M4MjY2
MmZiOWRjMDM5YzdjYzAzZWRkMC4uOTI2MWVmYmVkOGIyMjllN2ZiYzVkODAxZDYzZGJjYmM0ZjUw
YTk4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3Qv
ZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50
eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94
IGF0IG9mZnNldCAoMzIsIDM3KQogRkFJTDogZXZlbnQgYXQgKDE1NywgMzIpIGV4cGVjdGVkIHRv
IGhpdCByZWwtYm94IGF0ICgyMiwgMjQpIGJ1dCBoaXQgcmVsLWJveCBhdCAoMjIsIDIyKQogUEFT
UzogZXZlbnQgYXQgKDQxMCwgMzApIGhpdCBmaXhlZC1ib3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBG
QUlMOiBldmVudCBhdCAoMzYsIDI3MikgZXhwZWN0ZWQgdG8gaGl0IHdpdGgtYm9yZGVydG9wZXh0
cmEgYXQgKDQsIDQpIGJ1dCBoaXQgZmlsbGVyIGF0ICg1NiwgMzcyKQotRkFJTDogZXZlbnQgYXQg
KDYzOSwgMjA3KSBleHBlY3RlZCB0byBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMTg5KSBidXQg
aGl0IGluLWNvbHVtbnMgYXQgKDE3MywgLTIwNSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykg
aGl0IGluLWNvbHVtbnMgYXQgb2Zmc2V0ICgzNSwgNSkKIEZBSUw6IGV2ZW50IGF0ICg1NjMsIDQx
MCkgZXhwZWN0ZWQgdG8gaGl0IGluc2lkZS1vdmVyZmxvdyBhdCAoNywgNikgYnV0IGhpdCBvdmVy
Zmxvdy1jb250ZW50cyBhdCAoMTc4LCAxMTIpCiBGQUlMOiBldmVudCBhdCAoMTEyLCAzNjkpIGV4
cGVjdGVkIHRvIGhpdCB0cmFuc2Zvcm1lZCBhdCAoMTEsIDE2KSBidXQgaGl0IHRyYW5zZm9ybWVk
IGF0ICg3LCAyKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9l
dmVudHMvb2Zmc2V0WC1vZmZzZXRZLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CmluZGV4IDM0NDBm
NWNkYjdiNDE2ZDMzYjJiNThkZWVjOGM2ZTZiYjA3NWE0YmQuLjc4MDE2YzIxOTYxMjM1ODlmNDAy
YTEzZTk5ZTFjMWQ2YjdmM2Y0NGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0
CkBAIC0xOCw3ICsxOCw3IEBAIFBBU1M6IGV2ZW50IGF0ICgxMTIsIDYyKSBoaXQgYWJzLWJveCBh
dCBvZmZzZXQgKDMyLCAzNykKIEZBSUw6IGV2ZW50IGF0ICgxNTcsIDMyKSBleHBlY3RlZCB0byBo
aXQgcmVsLWJveCBhdCAoMjIsIDI0KSBidXQgaGl0IHJlbC1ib3ggYXQgKDIyLCAyMykKIFBBU1M6
IGV2ZW50IGF0ICg0MTAsIDMwKSBoaXQgZml4ZWQtYm94IGF0IG9mZnNldCAoMTAsIDEwKQogRkFJ
TDogZXZlbnQgYXQgKDM2LCAyNzIpIGV4cGVjdGVkIHRvIGhpdCB3aXRoLWJvcmRlcnRvcGV4dHJh
IGF0ICg0LCA0KSBidXQgaGl0IHdpdGgtYm9yZGVydG9wZXh0cmEgYXQgKDQsIDApCi1GQUlMOiBl
dmVudCBhdCAoNjM5LCAyMDcpIGV4cGVjdGVkIHRvIGhpdCBpbi1jb2x1bW5zIGF0ICgxNzMsIC0x
ODkpIGJ1dCBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMjEwKQorUEFTUzogZXZlbnQgYXQgKDYz
OSwgMjA3KSBoaXQgaW4tY29sdW1ucyBhdCBvZmZzZXQgKDM1LCA1KQogRkFJTDogZXZlbnQgYXQg
KDU2MywgNDEwKSBleHBlY3RlZCB0byBoaXQgaW5zaWRlLW92ZXJmbG93IGF0ICg3LCA2KSBidXQg
aGl0IGluc2lkZS1vdmVyZmxvdyBhdCAoNywgMSkKIEZBSUw6IGV2ZW50IGF0ICgxMTIsIDM2OSkg
ZXhwZWN0ZWQgdG8gaGl0IHRyYW5zZm9ybWVkIGF0ICgxMSwgMTYpIGJ1dCBoaXQgdHJhbnNmb3Jt
ZWQgYXQgKDksIDkpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2V2ZW50cy9vZmZzZXRYLW9mZnNldFktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKaW5kZXggYTAz
N2VjYTY2NTE3NTQ5MWU2ZDYzN2NhNDg2NDYzYzRkNDkyMmY1ZC4uNzExMjI0MTRhNGMxNjQyZWYz
M2Y1NzQ5ZGU3NzNhYmFlNGRjZGMwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS1leHBlY3RlZC50
eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUzogZXZlbnQgYXQgKDExMiwgNjIpIGhpdCBhYnMtYm94
IGF0IG9mZnNldCAoMzIsIDM3KQogUEFTUzogZXZlbnQgYXQgKDE1NywgMzIpIGhpdCByZWwtYm94
IGF0IG9mZnNldCAoMjIsIDI0KQogUEFTUzogZXZlbnQgYXQgKDQxMCwgMzApIGhpdCBmaXhlZC1i
b3ggYXQgb2Zmc2V0ICgxMCwgMTApCiBQQVNTOiBldmVudCBhdCAoMzYsIDI3MikgaGl0IHdpdGgt
Ym9yZGVydG9wZXh0cmEgYXQgb2Zmc2V0ICg0LCA0KQotRkFJTDogZXZlbnQgYXQgKDYzOSwgMjA3
KSBleHBlY3RlZCB0byBoaXQgaW4tY29sdW1ucyBhdCAoMTczLCAtMTg5KSBidXQgaGl0IGluLWNv
bHVtbnMgYXQgKDE3MywgLTE5OSkKK1BBU1M6IGV2ZW50IGF0ICg2MzksIDIwNykgaGl0IGluLWNv
bHVtbnMgYXQgb2Zmc2V0ICgzNSwgNSkKIFBBU1M6IGV2ZW50IGF0ICg1NjMsIDQxMCkgaGl0IGlu
c2lkZS1vdmVyZmxvdyBhdCBvZmZzZXQgKDcsIDYpCiBQQVNTOiBldmVudCBhdCAoMTEyLCAzNjkp
IGhpdCB0cmFuc2Zvcm1lZCBhdCBvZmZzZXQgKDExLCAxNikKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>