<?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>131606</bug_id>
          
          <creation_ts>2014-04-13 23:17:32 -0700</creation_ts>
          <short_desc>Replace width*height with calls to area</short_desc>
          <delta_ts>2022-10-25 15:30:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>darin</cc>
    
    <cc>roger_fong</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1000394</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-13 23:17:32 -0700</bug_when>
    <thetext>Darin mentioned in 131553 that we should use area() helper functions for the cases where we are calculating width * height. It turns out there are a lot of places where we do this.

Add some helpers for IntSize, IntRect, LayoutRect, FloatSize and FloatRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000397</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 23:22:14 -0700</bug_when>
    <thetext>I just meant a local area helper in that file, but it would OK to put some in a header instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000399</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 23:22:41 -0700</bug_when>
    <thetext>The problem in a header is that we’d have to chose a type for the area result and it’s not 100% clear what the best type would be for all the cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000400</commentid>
    <comment_count>3</comment_count>
      <attachid>229263</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-13 23:23:20 -0700</bug_when>
    <thetext>Created attachment 229263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000404</commentid>
    <comment_count>4</comment_count>
      <attachid>229264</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-13 23:27:47 -0700</bug_when>
    <thetext>Created attachment 229264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000426</commentid>
    <comment_count>5</comment_count>
      <attachid>229269</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-14 00:58:04 -0700</bug_when>
    <thetext>Created attachment 229269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000487</commentid>
    <comment_count>6</comment_count>
      <attachid>229269</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-14 08:03:42 -0700</bug_when>
    <thetext>Comment on attachment 229269
Patch

Failing some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000518</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-14 10:15:13 -0700</bug_when>
    <thetext>Actually it doesn&apos;t fail any more tests than without the change. The EFL build failure doesn&apos;t give enough info in the log, so I&apos;ll upload another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000522</commentid>
    <comment_count>8</comment_count>
      <attachid>229287</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-14 10:19:09 -0700</bug_when>
    <thetext>Created attachment 229287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000679</commentid>
    <comment_count>9</comment_count>
      <attachid>229287</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-14 17:32:23 -0700</bug_when>
    <thetext>Comment on attachment 229287
Patch

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

&gt; Source/WebCore/platform/graphics/IntRect.h:253
&gt; +inline int area(const IntRect&amp; rect)
&gt; +{
&gt; +    return rect.width() * rect.height();
&gt; +}

Why isn&apos;t this a member function? Do we care about overflow?

&gt; Source/WebCore/platform/graphics/IntSize.h:196
&gt; +inline int area(const IntSize&amp; size)
&gt; +{
&gt; +    return size.area();
&gt; +}

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001212</commentid>
    <comment_count>10</comment_count>
      <attachid>229287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-16 10:45:28 -0700</bug_when>
    <thetext>Comment on attachment 229287
Patch

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

I worry that these different area functions have different overflow behaviors. They all have the same name, but different behavior.

The only ones I am really comfortable with are the ones that return floating point, because there I know what to expect from overflow. The integer ones worry me.

Otherwise this patch seems fantastic!

&gt; Source/WebCore/platform/graphics/LayoutRect.h:252
&gt; +    return rect.width() * rect.height();

Seems a shame to convert to a float only after a possible overflow.

&gt; Source/WebCore/platform/graphics/LayoutSize.h:207
&gt; +    return size.width() * size.height();

Seems a shame to convert to a float only after a possible overflow.

&gt; Source/WebCore/platform/graphics/Region.cpp:119
&gt; +    for (size_t i = 0; i &lt; size; ++i)
&gt; +        totalArea += area(rects[i]);

Should use C++11 for loop instead of size and such.

&gt; Source/WebCore/platform/graphics/ShadowBlur.cpp:532
&gt;      if (templateSize.width() &gt; rect.width() || templateSize.height() &gt; rect.height()
&gt; -        || (templateSize.width() * templateSize.height() &gt; m_sourceRect.width() * m_sourceRect.height())) {
&gt; +        || area(templateSize) &gt; area(m_sourceRect)) {

Should combine onto a single line now that it’s short enough.

&gt; Source/WebCore/platform/graphics/ShadowBlur.cpp:560
&gt;      if (templateSize.width() &gt; hRect.width() || templateSize.height() &gt; hRect.height()
&gt; -        || (templateSize.width() * templateSize.height() &gt; hRect.width() * hRect.height())) {
&gt; +        || area(templateSize) &gt; area(hRect)) {

Should combine onto a single line now that it’s short enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908272</commentid>
    <comment_count>11</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-25 15:30:34 -0700</bug_when>
    <thetext>Checking via BugID on Webkit GitHub, it seems this r+ patch didn&apos;t landed.

Is anything needed from this patch? Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229263</attachid>
            <date>2014-04-13 23:23:20 -0700</date>
            <delta_ts>2014-04-13 23:27:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131606-20140413232258.patch</filename>
            <type>text/plain</type>
            <size>35007</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc4MjY3Nzc1NDBjZDk4
MGY3NTNlYzE2NjNlNGI0ZjBkYWNiNjU2Yi4uNWRiNjhhM2JiZjI0OTI4YWE3NWNkOTFjMWIxNTFh
NWJmNTljMjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE0LTA0LTEzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHdpZHRoKmhlaWdo
dCB3aXRoIGNhbGxzIHRvIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMTYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhcmVhKCkgaGVscGVycyB0aGF0IGNhbGN1bGF0ZSB3aWR0aCAqIGhl
aWdodCBmb3IgY29tbW9uCisgICAgICAgIHJlY3Rhbmd1bGFyIGNsYXNzZXMuIFVwZGF0ZSB0aGUg
cGxhY2VzIHRocm91Z2ggV2ViQ29yZSB0aGF0CisgICAgICAgIHVzZSB3aWR0aCAqIGhlaWdodCB0
byB1c2UgZWl0aGVyIHRoZXNlIG5ldyBoZWxwZXJzLCBvciB0aGUKKyAgICAgICAgZXhpc3Rpbmcg
SW50UmVjdDo6YXJlYSgpIG1lbWJlciBmdW5jdGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0RlbGV0YWJsZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OkltYWdlRGF0YSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdCk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6YmV0dGVyQXBwcm94aW1hdGVOb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZWEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJl
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6dG90YWxBcmVhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyUG9vbC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUG9vbDo6YmFja2luZ1N0b3JlQnl0ZXNGb3JTaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVH
YXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVVubXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVByZW11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
OjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUdyaWQ6OmFkanVzdENvdmVyUmVjdEZvclBhZ2VCb3Vu
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6Ynl0ZXNCYWNraW5nTGF5ZXJXaXRo
UGl4ZWxTaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6Zml0c0luTWF4aW11bUltYWdlU2l6ZSk6CisKIDIwMTQt
MDQtMTAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgZWFybHkgcmV0dXJuIG91dCBvZiBkaXNwYXRjaF9hc3luYygpIGJsb2NrIHNvIHdlIGNhbiBy
ZXR1cm4gZnJvbSB3aWxsU2VuZFJlcXVlc3QgcXVpY2tseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggZmIyODc3YzhmMDNlMzE0
NTVkNDI2OWJjZjFmN2QxM2YyODI4YmJlNC4uYTRjYzRmYmQzOTk3OTU1YWVhYzM2OWM2NzYwNWU3
Zjc5NzFmODQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBib29sIGlzRGVsZXRhYmxl
RWxlbWVudChjb25zdCBOb2RlKiBub2RlKQogICAgIGlmIChib3JkZXJCb3VuZGluZ0JveC53aWR0
aCgpIDwgbWluaW11bVdpZHRoIHx8IGJvcmRlckJvdW5kaW5nQm94LmhlaWdodCgpIDwgbWluaW11
bUhlaWdodCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKChib3JkZXJCb3VuZGlu
Z0JveC53aWR0aCgpICogYm9yZGVyQm91bmRpbmdCb3guaGVpZ2h0KCkpIDwgbWluaW11bUFyZWEp
CisgICAgaWYgKGFyZWEoYm9yZGVyQm91bmRpbmdCb3gpIDwgbWluaW11bUFyZWEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChib3gtPmlzVGFibGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNzUxMjEyMzFlY2ZjMzg1NWVjOGU4MmEx
Y2VhZmQwMTU5NTEwMjQwNy4uNjY1Mjk0YWIyMWFjMzBlNjAzN2QzNzRiODAwMzkyNWQ1OTJlMjNj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTU1MCw3
ICs1NTAsNyBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50OjpzaG91bGRBY2NlbGVyYXRlKGNvbnN0
IEludFNpemUmIHNpemUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERv
IG5vdCB1c2UgYWNjZWxlcmF0aW9uIGZvciBzbWFsbCBjYW52YXMuCi0gICAgaWYgKHNpemUud2lk
dGgoKSAqIHNpemUuaGVpZ2h0KCkgPCBzZXR0aW5ncy0+bWluaW11bUFjY2VsZXJhdGVkMmRDYW52
YXNTaXplKCkpCisgICAgaWYgKHNpemUuYXJlYSgpIDwgc2V0dGluZ3MtPm1pbmltdW1BY2NlbGVy
YXRlZDJkQ2FudmFzU2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCFkZXZpY2VTaXplLmlzRXhwcmVzc2libGVBc0lu
dFNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRldmljZVNpemUud2lkdGgoKSAq
IGRldmljZVNpemUuaGVpZ2h0KCkgPiBNYXhDYW52YXNBcmVhKQorICAgIGlmIChhcmVhKGRldmlj
ZVNpemUpID4gTWF4Q2FudmFzQXJlYSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50U2l6ZSBi
dWZmZXJTaXplKGRldmljZVNpemUud2lkdGgoKSwgZGV2aWNlU2l6ZS5oZWlnaHQoKSk7CkBAIC01
OTEsNyArNTkxLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KSBjb25zdAogICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI+KCptX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwot
ICAgIHNpemVfdCBudW1CeXRlcyA9IDQgKiBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS53
aWR0aCgpICogbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkuaGVpZ2h0KCk7CisgICAgc2l6
ZV90IG51bUJ5dGVzID0gNCAqIG1faW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmFyZWEoKTsK
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9y
eUNvc3QobnVtQnl0ZXMpOwogCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQ4MGNhNDQ1OTAxZGI1YjA3MDA1
MTk2YzA3MGQ4ZTVkYzEzMWRkODguLjEzZmU5NmZjZjY4YjAyNTk5MWQxOGUyNmRmNjU0NTRkMDA1
YzEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtNjk5LDIyICs2OTksMjAgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpz
dWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRv
JiByZW5kZXJlciA9IHRvUmVuZGVyRW1iZWRkZWRPYmplY3QoKnRoaXMtPnJlbmRlcmVyKCkpOwog
ICAgIExheW91dFJlY3QgY29udGVudFJlY3QgPSByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpOwot
ICAgIGludCBjb250ZW50V2lkdGggPSBjb250ZW50UmVjdC53aWR0aCgpOwotICAgIGludCBjb250
ZW50SGVpZ2h0ID0gY29udGVudFJlY3QuaGVpZ2h0KCk7CiAKICAgICBpZiAoaW5NYWluRnJhbWUp
IHsKICAgICAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwogICAgICAgICBib29s
IGlzRnVsbFBhZ2UgPSBpczEwMFBlcmNlbnQoc3R5bGUud2lkdGgoKSkgJiYgaXMxMDBQZXJjZW50
KHN0eWxlLmhlaWdodCgpKTsKLSAgICAgICAgSW50U2l6ZSB2aXNpYmxlVmlld1NpemUgPSBkb2N1
bWVudCgpLmZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZVNpemUoKTsKLSAgICAgICAgZmxvYXQgY29u
dGVudEFyZWEgPSBjb250ZW50V2lkdGggKiBjb250ZW50SGVpZ2h0OwotICAgICAgICBmbG9hdCB2
aXNpYmxlQXJlYSA9IHZpc2libGVWaWV3U2l6ZS53aWR0aCgpICogdmlzaWJsZVZpZXdTaXplLmhl
aWdodCgpOwotICAgICAgICBpZiAoaXNGdWxsUGFnZSAmJiBjb250ZW50QXJlYSA+IHZpc2libGVB
cmVhICogc2l6aW5nRnVsbFBhZ2VBcmVhUmF0aW9UaHJlc2hvbGQpIHsKKyAgICAgICAgaWYgKGlz
RnVsbFBhZ2UgJiYgYXJlYShjb250ZW50UmVjdCkgPiBhcmVhKGRvY3VtZW50KCkuZnJhbWUoKS0+
dmlldygpLT52aXNpYmxlU2l6ZSgpKSAqIHNpemluZ0Z1bGxQYWdlQXJlYVJhdGlvVGhyZXNob2xk
KSB7CiAgICAgICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgdG9wIGxldmVsIGZ1
bGwgcGFnZSwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAgICAgIG1fc25hcHNob3REZWNp
c2lvbiA9IE5ldmVyU25hcHNob3Q7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpbnQgY29udGVudFdpZHRoID0gY29udGVudFJlY3Qud2lkdGgoKTsKKyAgICBp
bnQgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodCgpOworICAgIAogICAgIGlmIChj
b250ZW50V2lkdGggPD0gc2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBjb250ZW50SGVp
Z2h0IDw9IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQpIHsKICAgICAgICAgTE9HKFBsdWdp
bnMsICIlcCBQbHVnLWluIGlzIHZlcnkgc21hbGwgJWR4JWQsIHNldCB0byBwbGF5IiwgdGhpcywg
Y29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKICAgICAgICAgbV9zaXplV2hlblNuYXBzaG90
dGVkID0gSW50U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuY3BwCmluZGV4IDc5NDBmNDQ2NWJlZjYwYWNkNGE0NmYxYThlNzRkMzBmZDA5NjVm
YmEuLjM1OGMwZDc0MTYzNjQxYThjOTU1NGFjNGQ4MzA2YTgyYmIzYTNkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0ZUFy
cmF5LAogCiBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDog
bV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQpKQorICAgICwgbV9kYXRh
KFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemUuYXJlYSgpICogNCkp
CiB7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJ
bnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYQogICAg
IDogbV9zaXplKHNpemUpCiAgICAgLCBtX2RhdGEoYnl0ZUFycmF5KQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRo
KCkgKiBzaXplLmhlaWdodCgpICogNCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUuYXJl
YSgpICogNCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IDk2ZTkwNWY0ZDE2N2I3OWJlM2RmMDk0ZGU2ZTBlZmRlMjViYmFlNGQuLjMwOWFj
ZDY1Y2Q1MTBlNDhmODAzNzNlNzlmZGI2NjRlMmU2NDk4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtNzMzLDcgKzczMyw3IEBAIGlubGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50
VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBp
ZiAobV9pc1Zpc3VhbGx5Tm9uRW1wdHkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Zpc3VhbGx5
Tm9uRW1wdHlQaXhlbENvdW50ICs9IHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCk7CisgICAg
bV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCArPSBzaXplLmFyZWEoKTsKICAgICBpZiAobV92
aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCA8PSB2aXN1YWxQaXhlbFRocmVzaG9sZCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHVwZGF0ZUlzVmlzdWFsbHlOb25FbXB0eSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggODUxODE4NzgzNTViYjE3NWQzM2Q1NTJlZmI5ZjQ4Y2U2ZjUwYTcwMS4uNmI1NGRi
MmQ0NzQ1YzhlYThlYWQwYjJiYWIyNGU4N2M5Zjk3ZmYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xNDA3LDcgKzE0MDcsNyBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgogCiAgICAgZmxvYXQg
dG9wUGFpbnRlZEFyZWEgPSBtX3RvcFJlbGV2YW50UGFpbnRlZFJlZ2lvbi50b3RhbEFyZWEoKTsK
ICAgICBmbG9hdCBib3R0b21QYWludGVkQXJlYSA9IG1fYm90dG9tUmVsZXZhbnRQYWludGVkUmVn
aW9uLnRvdGFsQXJlYSgpOwotICAgIGZsb2F0IHZpZXdBcmVhID0gcmVsZXZhbnRSZWN0LndpZHRo
KCkgKiByZWxldmFudFJlY3QuaGVpZ2h0KCk7CisgICAgZmxvYXQgdmlld0FyZWEgPSBhcmVhKHJl
bGV2YW50UmVjdCk7CiAKICAgICBmbG9hdCByYXRpb1RoYXRJc1BhaW50ZWRPblRvcCA9IHRvcFBh
aW50ZWRBcmVhIC8gdmlld0FyZWE7CiAgICAgZmxvYXQgcmF0aW9UaGF0SXNQYWludGVkT25Cb3R0
b20gPSBib3R0b21QYWludGVkQXJlYSAvIHZpZXdBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQppbmRleCA0YjAzN2Q5YmU0NmVkNWI3M2RhYTliMWY2NTFjNDg1OGUwYjcxNzgzLi44
ODZmYjhiYzJlMDRkODNkMmU3NDhjMDYyM2E5NDA5YjJhNjc0YTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9GcmFtZUlPUy5tbQpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgRnJhbWU6OmJldHRlckFw
cHJveGltYXRlTm9kZShjb25zdCBJbnRQb2ludCYgdGVzdFBvaW50LCBOb2RlUXVhbGlmaWVyIG5v
ZGVRCiAgICAgICAgIEludFJlY3QgYmVzdEludGVyc2VjdCA9IGludGVyc2VjdGlvbih0ZXN0UmVj
dCwgYmVzdFJlY3QpOwogICAgICAgICBJbnRSZWN0IGNhbmRpZGF0ZUludGVyc2VjdCA9IGludGVy
c2VjdGlvbih0ZXN0UmVjdCwgY2FuZGlkYXRlUmVjdCk7CiAgICAgICAgIC8vIGlmIHRoZSBjYW5k
aWRhdGUgaW50ZXJzZWN0aW9uIGlzIHNtYWxsZXIgdGhhbiB0aGUgY3VycmVudCBiZXN0IGludGVy
c2VjdGlvbiwgYmFpbC4KLSAgICAgICAgaWYgKGNhbmRpZGF0ZUludGVyc2VjdC53aWR0aCgpICog
Y2FuZGlkYXRlSW50ZXJzZWN0LmhlaWdodCgpIDw9IGJlc3RJbnRlcnNlY3Qud2lkdGgoKSAqIGJl
c3RJbnRlcnNlY3QuaGVpZ2h0KCkpCisgICAgICAgIGlmIChjYW5kaWRhdGVJbnRlcnNlY3QuYXJl
YSgpIDw9IGJlc3RJbnRlcnNlY3QuYXJlYSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAppbmRleCBh
ZGY4OWMwYWFmOTM4YTFkZmE1NDk2ZjkxNjVmNjUyNWZiMWFkNzUyLi41YjFjMzVlNWQ5ZDBlZWNm
MWRlMDA3Mjc3NjI3NzMyNGM2ODM5YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFJlY3QuaApAQCAtMjQ1LDYgKzI0NSwxMSBAQCBpbmxpbmUgYm9vbCBGbG9h
dFJlY3Q6OmlzSW5maW5pdGUoKSBjb25zdAogewogICAgIHJldHVybiAqdGhpcyA9PSBpbmZpbml0
ZVJlY3QoKTsKIH0KKyAgICAKK2lubGluZSBmbG9hdCBhcmVhKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKK3sKKyAgICByZXR1cm4gcmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsKK30KIAogSW50
UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCmluZGV4IDczY2MwZmVhOGQ0ZDU5MjRj
YTFlNDRkZjkyZThjZTI2YjA2ZGUxZGUuLjlkYjVjYTcxNzY0YmQ1MGQzMDZhMTUzOTQ2ODI1ODc0
ZmRiMjc3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6
ZS5oCkBAIC0xOTIsNiArMTkyLDExIEBAIGlubGluZSBJbnRQb2ludCBmbG9vcmVkSW50UG9pbnQo
Y29uc3QgRmxvYXRTaXplJiBwKQogewogICAgIHJldHVybiBJbnRQb2ludChjbGFtcFRvSW50ZWdl
cihmbG9vcmYocC53aWR0aCgpKSksIGNsYW1wVG9JbnRlZ2VyKGZsb29yZihwLmhlaWdodCgpKSkp
OwogfQorICAgIAoraW5saW5lIGZsb2F0IGFyZWEoY29uc3QgRmxvYXRTaXplJiBzaXplKQorewor
ICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpOworfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAppbmRleCA2Zjc1NWUxNTAwY2ZmNTAwMmNkNjcyNDg4NDcxNWJmNDlmZGYyMDdiLi43ZmUwNmNl
ZGEyNDkxNThkMjlkMDYxNTI3YWQ0YmFjNTAxMjUzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xNTksOCArMTU5LDcgQEAgdm9pZCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmwKICAgICAvLyBsYXJnZXIgdGhhbiB0aGUgb3JpZ2luYWwgdGlsZSBpZiB1c2Vy
IHpvb21zIGluIGVub3VnaC4KICAgICBjb25zdCBmbG9hdCBtYXhQYXR0ZXJuVGlsZVBpeGVscyA9
IDUxMiAqIDUxMjsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdl
dENUTSgpLm1hcFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsK
LSAgICBmbG9hdCB0cmFuc2Zvcm1lZFRpbGVTaXplUGl4ZWxzID0gdHJhbnNmb3JtZWRUaWxlU2l6
ZS53aWR0aCgpICogdHJhbnNmb3JtZWRUaWxlU2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAodHJhbnNm
b3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxzKSB7CisgICAgaWYgKGFy
ZWEodHJhbnNmb3JtZWRUaWxlU2l6ZSkgPiBtYXhQYXR0ZXJuVGlsZVBpeGVscykgewogICAgICAg
ICBmbG9hdCBmcm9tWSA9IChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUu
aGVpZ2h0KCk7CiAgICAgICAgIGZsb2F0IHRvWSA9IG9uZVRpbGVSZWN0LnkoKTsKICAgICAgICAg
d2hpbGUgKHRvWSA8IENHUmVjdEdldE1heFkoZGVzdFJlY3QpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKaW5kZXggZWIyZTMxYjljNzUyNWExNzNiYzQ1NDU1
MTFkZDk3MGI5ZmM5NWIzMC4uZjMxNDg3YjVkMzVmN2E1ZjZkYzIzODlkMTlkNTU5ZTZkMWU1NDg0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMjQ2
LDYgKzI0NiwxMSBAQCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgQ0dSZWN0Jik7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dH
RU9NRVRSWV9UWVBFUykKIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1JlY3QmKTsK
ICNlbmRpZgorICAgIAoraW5saW5lIGludCBhcmVhKGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisg
ICAgcmV0dXJuIHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5o
CmluZGV4IDhmMjBhMGRlNzU1YWJmYzgwOTg4NzhiNTBlODY4YmI5ZmYxNWZlODguLjJlMzQ5ZDU1
Nzc1ODE0NzQwNjVhZjNmYWM2MjQ3MTlmOWM2NmQ2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTE4OSw2ICsxODksMTEgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQogewogICAgIHJl
dHVybiBhLndpZHRoKCkgIT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQoKTsK
IH0KKyAgICAKK2lubGluZSBpbnQgYXJlYShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHJl
dHVybiBzaXplLmFyZWEoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKaW5kZXggMWFjYWJhYTU5
MmM4NmI3NmNlNjJkNzgwNzYwZjI1M2Q1NDQ5MjFlYS4uMjA4YmFjYjkxOGQzNDQ4YWU2YTQ3ZTcz
MjdlZTliMjYxMGNjZTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFJlY3QuaApAQCAtMjQ2LDYgKzI0NiwxMSBAQCBpbmxpbmUgRmxvYXRSZWN0IHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5LCBMYXlvdXRVbml0
CiB7CiAgICAgcmV0dXJuIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeCwgeSwg
d2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwogfQorICAgIAoraW5saW5lIGZs
b2F0IGFyZWEoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKaW5kZXggMDczM2Zh
MmNkZGM5NmRhZmM1MDM2YzhlNjA0NTM4YjU1YWM5NjJmYy4uMzc1Mzc0ODhhMTAxZjU3ODA4MjIz
Nzk3NGVhOTM0MmQzYjZhZWFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFNpemUuaApAQCAtMjAxLDcgKzIwMSwxMiBAQCBpbmxpbmUgRmxvYXRTaXplIGZs
b29yZWRGb3JQYWludGluZyhjb25zdCBMYXlvdXRTaXplJiBzaXplLCBmbG9hdCBwaXhlbFNuYXBw
aW5nRgogICAgIHJldHVybiBGbG9hdFNpemUoc2l6ZSk7CiAjZW5kaWYKIH0KLQorICAgIAoraW5s
aW5lIGZsb2F0IGFyZWEoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKTsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIExheW91dFNpemVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXggY2U1NTViNzIxOTViNDMwNTUyZmI3YjIxYzI3YmMzNTBm
NGVhZDdlOS4uMjI1MzRkZmFlY2UxZGZlZDhhZWZlYzRhOGEyNjVmMTFiMDNlZWY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCkBAIC0xMTUsMTAgKzEx
NSw4IEBAIHVuc2lnbmVkIFJlZ2lvbjo6dG90YWxBcmVhKCkgY29uc3QKICAgICBzaXplX3Qgc2l6
ZSA9IHJlY3RzLnNpemUoKTsKICAgICB1bnNpZ25lZCB0b3RhbEFyZWEgPSAwOwogCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0g
cmVjdHNbaV07Ci0gICAgICAgIHRvdGFsQXJlYSArPSAocmVjdC53aWR0aCgpICogcmVjdC5oZWln
aHQoKSk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAg
ICAgICB0b3RhbEFyZWEgKz0gYXJlYShyZWN0c1tpXSk7CiAKICAgICByZXR1cm4gdG90YWxBcmVh
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cAppbmRleCAyZTkxNzg1YTdiMTIxOTFkY2IwNjIxNTQ3OWZmMGJmZDUwN2QxZDdiLi43ZGRlNTU5
OWEyZGQ2MGJiYTZiOGJiNDA4YjhlMWJmMjQ1YThkMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91CiAgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0ID0gc2hhZG93
ZWRSZWN0LnJlY3QoKTsKIAogICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IHJlY3Qud2lk
dGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiByZWN0LmhlaWdodCgpCi0gICAgICAgIHx8
ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291cmNl
UmVjdC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgeworICAgICAgICB8fCBhcmVh
KHRlbXBsYXRlU2l6ZSkgPiBhcmVhKG1fc291cmNlUmVjdCkpIHsKICAgICAgICAgZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBsYXllclJl
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlCiAgICAgY29uc3QgRmxvYXRSZWN0JiBoUmVjdCA9IGhvbGVSZWN0LnJl
Y3QoKTsKIAogICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IGhSZWN0LndpZHRoKCkgfHwg
dGVtcGxhdGVTaXplLmhlaWdodCgpID4gaFJlY3QuaGVpZ2h0KCkKLSAgICAgICAgfHwgKHRlbXBs
YXRlU2l6ZS53aWR0aCgpICogdGVtcGxhdGVTaXplLmhlaWdodCgpID4gaFJlY3Qud2lkdGgoKSAq
IGhSZWN0LmhlaWdodCgpKSkgeworICAgICAgICB8fCBhcmVhKHRlbXBsYXRlU2l6ZSkgPiBhcmVh
KGhSZWN0KSkgewogICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNz
Q29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
TGF5ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xh
eWVyUG9vbC5tbQppbmRleCAzNTY3Nzk2MDUwNmIxMmFhN2FjMzZjY2IyMjM1OGQ5NmE1OTM3Yjk1
Li44NWY3ZGFlYzQzM2JiYjA5YTg1MDQyNjk2YzljZTgyMWQ4ZmNhZmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvTGF5ZXJQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9MYXllclBvb2wubW0KQEAg
LTQ5LDcgKzQ5LDcgQEAgTGF5ZXJQb29sKiBMYXllclBvb2w6OnNoYXJlZFBvb2woKQogCiB1bnNp
Z25lZCBMYXllclBvb2w6OmJhY2tpbmdTdG9yZUJ5dGVzRm9yU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQogewotICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNDsKKyAg
ICByZXR1cm4gc2l6ZS5hcmVhKCkgKiA0OwogfQogCiBMYXllclBvb2w6OkxheWVyTGlzdCYgTGF5
ZXJQb29sOjpsaXN0T2ZMYXllcnNXaXRoU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDI0YmJiYmM1NjQ3ODU4NGQ3Nzk5MTc4NDZk
YjE0MTg0NTc0MjVmYjkuLjUyNTQxMTU2ZTIwZWE1M2MzMmZjZmE1MDc2YmNiZWI1ZGQ1MDlmZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCkBAIC00ODgsNyArNDg4LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28K
ICAgICAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcjsKLSAgICAgICAgZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIHByZW11bHRpcGxpZWREYXRhLT5kYXRh
KCksIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCAw
KSk7CisgICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoRGF0YSgwLCBwcmVtdWx0aXBsaWVkRGF0YS0+ZGF0YSgpLCA0ICogYXJlYShsb2dpY2FsU2l6
ZSgpKSwgMCkpOwogICAgICAgICBpZiAoIWRhdGFQcm92aWRlcikKICAgICAgICAgICAgIHJldHVy
biAiZGF0YTosIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCBlOGFkNThkMmU4NWM4YTYyYTU0ODc2ZmVmNWNl
NDk1ZTE2MDM1MTY5Li45MTQ2YzNmNGYzYzI0OGJjZWRlOTJiNDg5Y2NjMmMyYjRlOGI0NGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24KICAg
ICBpZiAoKG1fYmFzZVN1YnNhbXBsaW5nID09IDApICYmICFtX2lzUHJvZ3Jlc3NpdmUpIHsKICAg
ICAgICAgSW50U2l6ZSBzdWJzYW1wbGVkU2l6ZSh3LCBoKTsKICAgICAgICAgY29uc3QgaW50IGNN
YXhpbXVtSW1hZ2VTaXplQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAg
ICAgIHdoaWxlICgobV9iYXNlU3Vic2FtcGxpbmcgPCAzKSAmJiBzdWJzYW1wbGVkU2l6ZS53aWR0
aCgpICogc3Vic2FtcGxlZFNpemUuaGVpZ2h0KCkgPiBjTWF4aW11bUltYWdlU2l6ZUJlZm9yZVN1
YnNhbXBsaW5nKSB7CisgICAgICAgIHdoaWxlICgobV9iYXNlU3Vic2FtcGxpbmcgPCAzKSAmJiBz
dWJzYW1wbGVkU2l6ZS5hcmVhKCkgPiBjTWF4aW11bUltYWdlU2l6ZUJlZm9yZVN1YnNhbXBsaW5n
KSB7CiAgICAgICAgICAgICAvLyBXZSBrbm93IHRoZSBzaXplLCBidXQgdGhlIGFjdHVhbCBpbWFn
ZSBpcyB2ZXJ5IGxhcmdlIGFuZCBzaG91bGQgYmUgc3ViLXNhbXBsZWQuCiAgICAgICAgICAgICAv
LyBJbmNyZWFzZSB0aGUgYmFzZSBzdWJzYW1wbGluZyBhbmQgYXNrIGZvciB0aGUgc2l6ZSBhZ2Fp
bi4gSWYgdGhlIGltYWdlIGNhbiBiZSBzdWJzYW1wbGVkLCB0aGUgc2l6ZSB3aWxsIGJlCiAgICAg
ICAgICAgICAvLyBncmVhdGx5IHJlZHVjZWQuIDR4IHN1Yi1zYW1wbGluZyB3aWxsIG1ha2UgdXMg
c3VwcG9ydCB1cCB0byAzMjBNUCAoNU1QICogNF4zKSBpbWFnZXMsIHdoaWNoIHNob3VsZCBiZSBw
bGVudHkuCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90IGluZGV4KQogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZy
YW1lU2l6ZUF0SW5kZXgoaW5kZXgsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikpOwotICAgIHJldHVybiBmcmFtZVNpemUud2lkdGgoKSAqIGZyYW1l
U2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkgKiA0OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDlmZTkxMDE3OGJkZGUzYTI5MzU3ZjBlMzc4ZTUzNDdj
NjUwZTAzMWIuLjkwY2UxZmYxZjc0MjQyYjMzNDNhYjFhZWM5NjhmMGNiNWRlZDEwMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1
cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QK
IAogICAgICAgICBJbnRTaXplIGludGVybmFsU2l6ZSA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmlu
dGVybmFsU2l6ZSgpOwogICAgICAgICBzaXplX3Qgb2xkQ2FjaGVkQnl0ZXMgPSBtX2NhY2hlZEJ5
dGVzOwotICAgICAgICBtX2NhY2hlZEJ5dGVzID0gaW50ZXJuYWxTaXplLndpZHRoKCkgKiBpbnRl
cm5hbFNpemUuaGVpZ2h0KCkgKiA0OworICAgICAgICBtX2NhY2hlZEJ5dGVzID0gaW50ZXJuYWxT
aXplLmFyZWEoKSAqIDQ7CiAKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKHRoaXMsIHNhZmVDYXN0PGlu
dD4obV9jYWNoZWRCeXRlcykgLSBzYWZlQ2FzdDxpbnQ+KG9sZENhY2hlZEJ5dGVzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCAyOTdjZTczM2M5Mjk5YWQ5ZTI0MGJmZTE4MTZhNjA0
MTMyNmM3MWYzLi43YjQyMjdkYmNkOTA0ZGI0NmVhZGE4MjEyNzkwOGVjZTU5YmVjMjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIEZFQ29udm9s
dmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBpZiAoY2xpcFJpZ2h0ID49
IDAgJiYgY2xpcEJvdHRvbSA+PSAwKSB7CiAKLSAgICAgICAgaW50IG9wdGltYWxUaHJlYWROdW1i
ZXIgPSAoYWJzb2x1dGVQYWludFJlY3QoKS53aWR0aCgpICogYWJzb2x1dGVQYWludFJlY3QoKS5o
ZWlnaHQoKSkgLyBzX21pbmltYWxSZWN0RGltZW5zaW9uOworICAgICAgICBpbnQgb3B0aW1hbFRo
cmVhZE51bWJlciA9IGFyZWEoYWJzb2x1dGVQYWludFJlY3QoKSkgLyBzX21pbmltYWxSZWN0RGlt
ZW5zaW9uOwogICAgICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEpIHsKICAgICAgICAg
ICAgIFdURjo6UGFyYWxsZWxKb2JzPEludGVyaW9yUGl4ZWxQYXJhbWV0ZXJzPiBwYXJhbGxlbEpv
YnMoJldlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEludGVyaW9yUGl4ZWxzV29ya2VyLCBv
cHRpbWFsVGhyZWFkTnVtYmVyKTsKICAgICAgICAgICAgIGNvbnN0IGludCBudW1PZlRocmVhZHMg
PSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4
IDMzNjRjMDdmYTQwZGI5MGVmNjNhODJiZjY4NjgxYTlmNWYxYThhNmEuLjUyNWYwZGI0MWVlZGI0
NjVkODM4YTVmYTg3Nzk5ZTdhMjY0MWEyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0z
MjEsNyArMzIxLDcgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHko
VWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQKIHsKICAgICBpbnQgc2Nhbmxp
bmUgPSA0ICogcGFpbnRTaXplLndpZHRoKCk7CiAgICAgaW50IGV4dHJhSGVpZ2h0ID0gMyAqIGtl
cm5lbFNpemVZICogMC41ZjsKLSAgICBpbnQgb3B0aW1hbFRocmVhZE51bWJlciA9IChwYWludFNp
emUud2lkdGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSkgLyAoc19taW5pbWFsUmVjdERpbWVuc2lv
biArIGV4dHJhSGVpZ2h0ICogcGFpbnRTaXplLndpZHRoKCkpOworICAgIGludCBvcHRpbWFsVGhy
ZWFkTnVtYmVyID0gYXJlYShwYWludFNpemUpIC8gKHNfbWluaW1hbFJlY3REaW1lbnNpb24gKyBl
eHRyYUhlaWdodCAqIHBhaW50U2l6ZS53aWR0aCgpKTsKIAogICAgIGlmIChvcHRpbWFsVGhyZWFk
TnVtYmVyID4gMSkgewogICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxQbGF0Zm9ybUFwcGx5UGFy
YW1ldGVycz4gcGFyYWxsZWxKb2JzKCZwbGF0Zm9ybUFwcGx5V29ya2VyLCBvcHRpbWFsVGhyZWFk
TnVtYmVyKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5l
bFNpemUoZmlsdGVyKCksIEZsb2F0UG9pbnQobV9zdGRYLCBtX3N0ZFkpKTsKIAogICAgIEludFNp
emUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRl
VW5pbml0aWFsaXplZChwYWludFNpemUud2lkdGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSAqIDQp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFt
cGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYShwYWludFNpemUpICogNCk7CiAgICAg
VWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXkgPSB0bXBJbWFnZURhdGEuZ2V0KCk7CiAK
ICAgICBwbGF0Zm9ybUFwcGx5KHNyY1BpeGVsQXJyYXksIHRtcFBpeGVsQXJyYXksIGtlcm5lbFNp
emUud2lkdGgoKSwga2VybmVsU2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAppbmRleCA5MTdjOTZhMjE3ZmYxOGZjYTU0NjJjMzE3MTZkOTZlYmIzZTYyNTg3Li5mZDIy
MzhmZDZjMzhkZjQ0YjU2NmM2MDc5ZmRmZmEwMzk2NDhkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YShtX3NlZWQsIHJvdW5kZWRJbnRT
aXplKGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLnNpemUoKSkpOwogICAgIGluaXRQYWludChw
YWludGluZ0RhdGEpOwogCi0gICAgaW50IG9wdGltYWxUaHJlYWROdW1iZXIgPSAoYWJzb2x1dGVQ
YWludFJlY3QoKS53aWR0aCgpICogYWJzb2x1dGVQYWludFJlY3QoKS5oZWlnaHQoKSkgLyBzX21p
bmltYWxSZWN0RGltZW5zaW9uOworICAgIGludCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gYXJlYShh
YnNvbHV0ZVBhaW50UmVjdCgpKSAvIHNfbWluaW1hbFJlY3REaW1lbnNpb247CiAgICAgaWYgKG9w
dGltYWxUaHJlYWROdW1iZXIgPiAxKSB7CiAgICAgICAgIC8vIEluaXRpYWxpemUgcGFyYWxsZWwg
am9icwogICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxGaWxsUmVnaW9uUGFyYW1ldGVycz4gcGFy
YWxsZWxKb2JzKCZXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb25Xb3JrZXIsIG9wdGlt
YWxUaHJlYWROdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGQ4NGJjYTI2MDRiMjcwMmEx
MDliYWY5MmFiOTE5YjEwODA3ZjhmY2IuLjBhMDE2MWJjYmVmM2VjMWJlN2Q2OGM4MWY2NjFjMDc5
YjRiMDYyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZUJ1
ZmZlciogRmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIoKQogICAgIHNpemVf
dCBvcmlnaW5bM10gPSB7IDAsIDAsIDAgfTsKICAgICBzaXplX3QgcmVnaW9uWzNdID0geyBtX2Fi
c29sdXRlUGFpbnRSZWN0LndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCksIDEg
fTsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZGVzdGluYXRpb25QaXhlbEFycmF5
ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkg
KiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBkZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlKGFyZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0KTsKIAogICAgIGlmIChjb250ZXh0LT5p
c0ZhaWxlZChjbEZpbmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSkpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpvcGVu
Q0xJbWFnZVRvSW1hZ2VCdWZmZXIoKQogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmls
dGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKHJlY3QpKTsKLSAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKHJlY3QuYXJlYSgpICogNCk7CiAgICAgY29weVVubXVsdGlwbGllZEltYWdlKGltYWdl
RGF0YS5nZXQoKSwgcmVjdCk7CiAgICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CiB9CkBA
IC0zMTYsNyArMzE2LDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZm
ZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHIKIFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQocmVjdCkpOwot
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC5hcmVhKCkgKiA0KTsKICAgICBjb3B5UHJl
bXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7CiAgICAgcmV0dXJuIGltYWdl
RGF0YS5yZWxlYXNlKCk7CiB9CkBAIC0zNzUsMTAgKzM3NSwxMCBAQCB2b2lkIEZpbHRlckVmZmVj
dDo6Y29weVVubXVsdGlwbGllZEltYWdlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwg
Y29uc3QgSQogICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IG1faW1hZ2VC
dWZmZXJSZXN1bHQtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50KCks
IG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKG1fYWJzb2x1dGVQYWludFJlY3QpKTsKLSAgICAg
ICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRl
UGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgICAgICAgICBtX3VubXVsdGlwbGllZEltYWdl
UmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYShtX2Fi
c29sdXRlUGFpbnRSZWN0KSAqIDQpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNl
Q29tcG9uZW50ID0gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gbV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdC0+ZGF0YSgpOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZW5kID0gc291
cmNlQ29tcG9uZW50ICsgKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQ
YWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGVuZCA9
IHNvdXJjZUNvbXBvbmVudCArIGFyZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0OwogICAgICAg
ICAgICAgd2hpbGUgKHNvdXJjZUNvbXBvbmVudCA8IGVuZCkgewogICAgICAgICAgICAgICAgIGlu
dCBhbHBoYSA9IHNvdXJjZUNvbXBvbmVudFszXTsKICAgICAgICAgICAgICAgICBpZiAoYWxwaGEp
IHsKQEAgLTQwOSwxMCArNDA5LDEwIEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlw
bGllZEltYWdlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAg
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0
UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWlu
dFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGlzRmls
dGVyU2l6ZVZhbGlkKG1fYWJzb2x1dGVQYWludFJlY3QpKTsKLSAgICAgICAgICAgIG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWln
aHQoKSAqIDQpOworICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50
OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhKG1fYWJzb2x1dGVQYWludFJl
Y3QpICogNCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBzb3VyY2VDb21wb25lbnQgPSBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyKiBkZXN0aW5hdGlvbkNvbXBvbmVudCA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5k
YXRhKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBlbmQgPSBzb3VyY2VDb21wb25lbnQg
KyAobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWln
aHQoKSAqIDQpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZW5kID0gc291cmNlQ29tcG9u
ZW50ICsgYXJlYShtX2Fic29sdXRlUGFpbnRSZWN0KSAqIDQ7CiAgICAgICAgICAgICB3aGlsZSAo
c291cmNlQ29tcG9uZW50IDwgZW5kKSB7CiAgICAgICAgICAgICAgICAgaW50IGFscGhhID0gc291
cmNlQ29tcG9uZW50WzNdOwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQ29tcG9uZW50WzBd
ID0gc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2VDb21wb25lbnRbMF0pICogYWxwaGEgLyAyNTU7CkBA
IC00NDgsNyArNDQ4LDcgQEAgVWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRl
VW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogCiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3Qu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9hYnNvbHV0ZVBh
aW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOworICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZChhcmVhKG1fYWJzb2x1dGVQYWludFJlY3QpICogNCk7CiAgICAgcmV0dXJuIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CiB9CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBV
aW50OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKQogCiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAq
IG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFyZWEo
bV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0KTsKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAppbmRleCAyYjk2Y2I1OTRjYmU3M2U1NmQx
NjdkYWQwYzk2Y2Y0YjAyYjU4OGFkLi40ODc2MTg3MTc4MzVmMWU0OWY0N2JjOGE3NjY3ZGQyNWQx
ZjU2MzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
RHJhd2luZ0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0RyYXdpbmdCdWZmZXIuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBEcmF3aW5nQnVm
ZmVyOjpjbGVhcigpCiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAg
IGlmICghbV9zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBzX2N1cnJlbnRSZXNvdXJjZVVzZVBp
eGVscyAtPSBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgc19jdXJy
ZW50UmVzb3VyY2VVc2VQaXhlbHMgLT0gbV9zaXplLmFyZWEoKTsKICAgICAgICAgbV9zaXplID0g
SW50U2l6ZSgpOwogICAgIH0KIApAQCAtMjY4LDEwICsyNjgsMTAgQEAgYm9vbCBEcmF3aW5nQnVm
ZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaW50IHBpeGVsRGVsdGEgPSBuZXdTaXplLndpZHRoKCkgKiBuZXdTaXpl
LmhlaWdodCgpOworICAgIGludCBwaXhlbERlbHRhID0gbmV3U2l6ZS5hcmVhKCk7CiAgICAgaW50
IG9sZFNpemUgPSAwOwogICAgIGlmICghbV9zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBvbGRT
aXplID0gbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCk7CisgICAgICAgIG9sZFNpemUg
PSBtX3NpemUuYXJlYSgpOwogICAgICAgICBwaXhlbERlbHRhIC09IG9sZFNpemU7CiAgICAgfQog
CkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRT
aXplJiBuZXdTaXplKQogICAgICAgICAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcGl4ZWxEZWx0YSA9IGFk
anVzdGVkU2l6ZS53aWR0aCgpICogYWRqdXN0ZWRTaXplLmhlaWdodCgpOworICAgICAgICAgICAg
cGl4ZWxEZWx0YSA9IGFkanVzdGVkU2l6ZS5hcmVhKCk7CiAgICAgICAgICAgICBwaXhlbERlbHRh
IC09IG9sZFNpemU7CiAgICAgICAgIH0KICAgICAgfQpAQCAtMzY1LDcgKzM2NSw3IEBAIGJvb2wg
RHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogICAgICAgICB9
IHdoaWxlICghYWRqdXN0ZWRTaXplLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgcGl4ZWxEZWx0YSA9
IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpOworICAgICAgICBwaXhlbERlbHRhID0g
bV9zaXplLmFyZWEoKTsKICAgICAgICAgcGl4ZWxEZWx0YSAtPSBvbGRTaXplOwogICAgICAgICBz
X2N1cnJlbnRSZXNvdXJjZVVzZVBpeGVscyArPSBwaXhlbERlbHRhOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQubW0KaW5kZXggNjUxYjA2OTJjM2FjZjAz
ZTVkNDk0Mzg4ZjM4YmQ2ZjgwYzUzNjE2Yy4uNzRlMjNjMGUyZWMxNDExNzM4YmM4MzFjZDFiMTFj
ZTAxNTgxYTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVHcmlkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
R3JpZC5tbQpAQCAtNDA2LDcgKzQwNiw3IEBAIEludFJlY3QgTGVnYWN5VGlsZUdyaWQ6OmFkanVz
dENvdmVyUmVjdEZvclBhZ2VCb3VuZHMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKICAgICBh
ZGp1c3RlZFJlY3QgPSBpbnRlcnNlY3Rpb24oYm91bmRzLCBhZGp1c3RlZFJlY3QpOwogICAgIGlm
IChhZGp1c3RlZFJlY3QgPT0gcmVjdCB8fCBhZGp1c3RlZFJlY3QuaXNFbXB0eSgpIHx8IHNob3Vs
ZFVzZU1pbmltYWxUaWxlQ292ZXJhZ2UoKSkKICAgICAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsK
LSAgICBpbnQgcGl4ZWxzID0gYWRqdXN0ZWRSZWN0LndpZHRoKCkgKiBhZGp1c3RlZFJlY3QuaGVp
Z2h0KCk7CisgICAgaW50IHBpeGVscyA9IGFkanVzdGVkUmVjdC5hcmVhKCk7CiAgICAgaWYgKGFk
anVzdGVkUmVjdC53aWR0aCgpICE9IHJlY3Qud2lkdGgoKSkKICAgICAgICAgYWRqdXN0ZWRSZWN0
LmluZmxhdGVZKChwaXhlbHMgLyBhZGp1c3RlZFJlY3Qud2lkdGgoKSAtIGFkanVzdGVkUmVjdC5o
ZWlnaHQoKSkgLyAyKTsKICAgICBlbHNlIGlmIChhZGp1c3RlZFJlY3QuaGVpZ2h0KCkgIT0gcmVj
dC5oZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlTGF5ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllclBvb2wubW0KaW5kZXggZTZkOTU3NDRmZTRlNjRhNjgzMzFiMGIwMDM5MzQ5Yjc3MTVl
MzBhMS4uM2M1ZjA4YjU5ODRkYmU0ZWY4OTZmMzg2OTRjZWRlNTJjYmQxZDM2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KQEAg
LTU1LDcgKzU1LDcgQEAgTGVnYWN5VGlsZUxheWVyUG9vbCogTGVnYWN5VGlsZUxheWVyUG9vbDo6
c2hhcmVkUG9vbCgpCiAKIHVuc2lnbmVkIExlZ2FjeVRpbGVMYXllclBvb2w6OmJ5dGVzQmFja2lu
Z0xheWVyV2l0aFBpeGVsU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBz
aXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNDsKKyAgICByZXR1cm4gc2l6ZS5hcmVhKCkg
KiA0OwogfQogCiBMZWdhY3lUaWxlTGF5ZXJQb29sOjpMYXllckxpc3QmIExlZ2FjeVRpbGVMYXll
clBvb2w6Omxpc3RPZkxheWVyc1dpdGhTaXplKGNvbnN0IEludFNpemUmIHNpemUsIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
aW5kZXggNTYzODM0NjZlZDU4NmVjMzk1MGNmMGNhOGU2YTM0MDViMTE3YjJlYi4uZTcxZDJlOWMz
YTJmNDEzY2ZiMWIyMDEyMmFiOWQ0ODU5NjQ5NTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVz
aG9sZCwgYwogICAgICAgICBpbnQgbWluQnVmZmVyWSA9IHN0ZDo6bWF4KDAsIG1hcmdpblJlY3Qu
eSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAgICAgICAgIGludCBtYXhCdWZmZXJZID0gc3RkOjptaW4o
aW1hZ2VSZWN0LmhlaWdodCgpLCBtYXJnaW5SZWN0Lm1heFkoKSAtIGltYWdlUmVjdC55KCkpOwog
Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2VSZWN0LndpZHRoKCkgKiBp
bWFnZVJlY3QuaGVpZ2h0KCkgKiA0KSA9PSBwaXhlbEFycmF5TGVuZ3RoKSB7CisgICAgICAgIGlm
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2VSZWN0LmFyZWEoKSAqIDQpID09IHBpeGVsQXJy
YXlMZW5ndGgpIHsKICAgICAgICAgICAgIGZvciAoaW50IHkgPSBtaW5CdWZmZXJZOyB5IDwgbWF4
QnVmZmVyWTsgKyt5KSB7CiAgICAgICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0xOwogICAgICAg
ICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VSZWN0LndpZHRoKCk7ICsreCwgcGl4
ZWxBcnJheU9mZnNldCArPSA0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDg3YzhlZTU3NGMxYTMw
Nzc5MDk5ZDRhYzA1MzE1YTQxMzdkMTA0ODguLjJlNThmODgxZjcyYzE4NGRhZTFmOGE2OTA1ZDdk
MWFiNjZjM2ZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6Zml0c0luTWF4aW11bUltYWdlU2l6ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIEZsb2EKIHsKICAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZShzaXplKTsKICAg
ICBzY2FsZWRTaXplLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKLSAgICBm
bG9hdCBzY2FsZWRBcmVhID0gc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQo
KTsKKyAgICBmbG9hdCBzY2FsZWRBcmVhID0gYXJlYShzY2FsZWRTaXplKTsKIAogICAgIGlmIChz
Y2FsZWRBcmVhIDw9IEZpbHRlckVmZmVjdDo6bWF4RmlsdGVyQXJlYSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229264</attachid>
            <date>2014-04-13 23:27:47 -0700</date>
            <delta_ts>2014-04-14 00:58:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131606-20140413232726.patch</filename>
            <type>text/plain</type>
            <size>35005</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc4MjY3Nzc1NDBjZDk4
MGY3NTNlYzE2NjNlNGI0ZjBkYWNiNjU2Yi4uNWRiNjhhM2JiZjI0OTI4YWE3NWNkOTFjMWIxNTFh
NWJmNTljMjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE0LTA0LTEzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHdpZHRoKmhlaWdo
dCB3aXRoIGNhbGxzIHRvIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMTYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhcmVhKCkgaGVscGVycyB0aGF0IGNhbGN1bGF0ZSB3aWR0aCAqIGhl
aWdodCBmb3IgY29tbW9uCisgICAgICAgIHJlY3Rhbmd1bGFyIGNsYXNzZXMuIFVwZGF0ZSB0aGUg
cGxhY2VzIHRocm91Z2ggV2ViQ29yZSB0aGF0CisgICAgICAgIHVzZSB3aWR0aCAqIGhlaWdodCB0
byB1c2UgZWl0aGVyIHRoZXNlIG5ldyBoZWxwZXJzLCBvciB0aGUKKyAgICAgICAgZXhpc3Rpbmcg
SW50UmVjdDo6YXJlYSgpIG1lbWJlciBmdW5jdGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0RlbGV0YWJsZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OkltYWdlRGF0YSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdCk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6YmV0dGVyQXBwcm94aW1hdGVOb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZWEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJl
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6dG90YWxBcmVhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyUG9vbC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUG9vbDo6YmFja2luZ1N0b3JlQnl0ZXNGb3JTaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVH
YXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVVubXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVByZW11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
OjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUdyaWQ6OmFkanVzdENvdmVyUmVjdEZvclBhZ2VCb3Vu
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6Ynl0ZXNCYWNraW5nTGF5ZXJXaXRo
UGl4ZWxTaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6Zml0c0luTWF4aW11bUltYWdlU2l6ZSk6CisKIDIwMTQt
MDQtMTAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgZWFybHkgcmV0dXJuIG91dCBvZiBkaXNwYXRjaF9hc3luYygpIGJsb2NrIHNvIHdlIGNhbiBy
ZXR1cm4gZnJvbSB3aWxsU2VuZFJlcXVlc3QgcXVpY2tseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggZmIyODc3YzhmMDNlMzE0
NTVkNDI2OWJjZjFmN2QxM2YyODI4YmJlNC4uYTRjYzRmYmQzOTk3OTU1YWVhYzM2OWM2NzYwNWU3
Zjc5NzFmODQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBib29sIGlzRGVsZXRhYmxl
RWxlbWVudChjb25zdCBOb2RlKiBub2RlKQogICAgIGlmIChib3JkZXJCb3VuZGluZ0JveC53aWR0
aCgpIDwgbWluaW11bVdpZHRoIHx8IGJvcmRlckJvdW5kaW5nQm94LmhlaWdodCgpIDwgbWluaW11
bUhlaWdodCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKChib3JkZXJCb3VuZGlu
Z0JveC53aWR0aCgpICogYm9yZGVyQm91bmRpbmdCb3guaGVpZ2h0KCkpIDwgbWluaW11bUFyZWEp
CisgICAgaWYgKGFyZWEoYm9yZGVyQm91bmRpbmdCb3gpIDwgbWluaW11bUFyZWEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChib3gtPmlzVGFibGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNzUxMjEyMzFlY2ZjMzg1NWVjOGU4MmEx
Y2VhZmQwMTU5NTEwMjQwNy4uNjY1Mjk0YWIyMWFjMzBlNjAzN2QzNzRiODAwMzkyNWQ1OTJlMjNj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTU1MCw3
ICs1NTAsNyBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50OjpzaG91bGRBY2NlbGVyYXRlKGNvbnN0
IEludFNpemUmIHNpemUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERv
IG5vdCB1c2UgYWNjZWxlcmF0aW9uIGZvciBzbWFsbCBjYW52YXMuCi0gICAgaWYgKHNpemUud2lk
dGgoKSAqIHNpemUuaGVpZ2h0KCkgPCBzZXR0aW5ncy0+bWluaW11bUFjY2VsZXJhdGVkMmRDYW52
YXNTaXplKCkpCisgICAgaWYgKHNpemUuYXJlYSgpIDwgc2V0dGluZ3MtPm1pbmltdW1BY2NlbGVy
YXRlZDJkQ2FudmFzU2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCFkZXZpY2VTaXplLmlzRXhwcmVzc2libGVBc0lu
dFNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRldmljZVNpemUud2lkdGgoKSAq
IGRldmljZVNpemUuaGVpZ2h0KCkgPiBNYXhDYW52YXNBcmVhKQorICAgIGlmIChhcmVhKGRldmlj
ZVNpemUpID4gTWF4Q2FudmFzQXJlYSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50U2l6ZSBi
dWZmZXJTaXplKGRldmljZVNpemUud2lkdGgoKSwgZGV2aWNlU2l6ZS5oZWlnaHQoKSk7CkBAIC01
OTEsNyArNTkxLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KSBjb25zdAogICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI+KCptX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwot
ICAgIHNpemVfdCBudW1CeXRlcyA9IDQgKiBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS53
aWR0aCgpICogbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkuaGVpZ2h0KCk7CisgICAgc2l6
ZV90IG51bUJ5dGVzID0gNCAqIG1faW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmFyZWEoKTsK
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9y
eUNvc3QobnVtQnl0ZXMpOwogCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQ4MGNhNDQ1OTAxZGI1YjA3MDA1
MTk2YzA3MGQ4ZTVkYzEzMWRkODguLjEzZmU5NmZjZjY4YjAyNTk5MWQxOGUyNmRmNjU0NTRkMDA1
YzEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtNjk5LDIyICs2OTksMjAgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpz
dWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRv
JiByZW5kZXJlciA9IHRvUmVuZGVyRW1iZWRkZWRPYmplY3QoKnRoaXMtPnJlbmRlcmVyKCkpOwog
ICAgIExheW91dFJlY3QgY29udGVudFJlY3QgPSByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpOwot
ICAgIGludCBjb250ZW50V2lkdGggPSBjb250ZW50UmVjdC53aWR0aCgpOwotICAgIGludCBjb250
ZW50SGVpZ2h0ID0gY29udGVudFJlY3QuaGVpZ2h0KCk7CiAKICAgICBpZiAoaW5NYWluRnJhbWUp
IHsKICAgICAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwogICAgICAgICBib29s
IGlzRnVsbFBhZ2UgPSBpczEwMFBlcmNlbnQoc3R5bGUud2lkdGgoKSkgJiYgaXMxMDBQZXJjZW50
KHN0eWxlLmhlaWdodCgpKTsKLSAgICAgICAgSW50U2l6ZSB2aXNpYmxlVmlld1NpemUgPSBkb2N1
bWVudCgpLmZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZVNpemUoKTsKLSAgICAgICAgZmxvYXQgY29u
dGVudEFyZWEgPSBjb250ZW50V2lkdGggKiBjb250ZW50SGVpZ2h0OwotICAgICAgICBmbG9hdCB2
aXNpYmxlQXJlYSA9IHZpc2libGVWaWV3U2l6ZS53aWR0aCgpICogdmlzaWJsZVZpZXdTaXplLmhl
aWdodCgpOwotICAgICAgICBpZiAoaXNGdWxsUGFnZSAmJiBjb250ZW50QXJlYSA+IHZpc2libGVB
cmVhICogc2l6aW5nRnVsbFBhZ2VBcmVhUmF0aW9UaHJlc2hvbGQpIHsKKyAgICAgICAgaWYgKGlz
RnVsbFBhZ2UgJiYgYXJlYShjb250ZW50UmVjdCkgPiBhcmVhKGRvY3VtZW50KCkuZnJhbWUoKS0+
dmlldygpLT52aXNpYmxlU2l6ZSgpKSAqIHNpemluZ0Z1bGxQYWdlQXJlYVJhdGlvVGhyZXNob2xk
KSB7CiAgICAgICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgdG9wIGxldmVsIGZ1
bGwgcGFnZSwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAgICAgIG1fc25hcHNob3REZWNp
c2lvbiA9IE5ldmVyU25hcHNob3Q7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpbnQgY29udGVudFdpZHRoID0gY29udGVudFJlY3Qud2lkdGgoKTsKKyAgICBp
bnQgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodCgpOworICAgIAogICAgIGlmIChj
b250ZW50V2lkdGggPD0gc2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBjb250ZW50SGVp
Z2h0IDw9IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQpIHsKICAgICAgICAgTE9HKFBsdWdp
bnMsICIlcCBQbHVnLWluIGlzIHZlcnkgc21hbGwgJWR4JWQsIHNldCB0byBwbGF5IiwgdGhpcywg
Y29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKICAgICAgICAgbV9zaXplV2hlblNuYXBzaG90
dGVkID0gSW50U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuY3BwCmluZGV4IDc5NDBmNDQ2NWJlZjYwYWNkNGE0NmYxYThlNzRkMzBmZDA5NjVm
YmEuLjM1OGMwZDc0MTYzNjQxYThjOTU1NGFjNGQ4MzA2YTgyYmIzYTNkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0ZUFy
cmF5LAogCiBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDog
bV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQpKQorICAgICwgbV9kYXRh
KFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemUuYXJlYSgpICogNCkp
CiB7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJ
bnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYQogICAg
IDogbV9zaXplKHNpemUpCiAgICAgLCBtX2RhdGEoYnl0ZUFycmF5KQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRo
KCkgKiBzaXplLmhlaWdodCgpICogNCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUuYXJl
YSgpICogNCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IDk2ZTkwNWY0ZDE2N2I3OWJlM2RmMDk0ZGU2ZTBlZmRlMjViYmFlNGQuLjMwOWFj
ZDY1Y2Q1MTBlNDhmODAzNzNlNzlmZGI2NjRlMmU2NDk4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtNzMzLDcgKzczMyw3IEBAIGlubGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50
VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBp
ZiAobV9pc1Zpc3VhbGx5Tm9uRW1wdHkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Zpc3VhbGx5
Tm9uRW1wdHlQaXhlbENvdW50ICs9IHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCk7CisgICAg
bV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCArPSBzaXplLmFyZWEoKTsKICAgICBpZiAobV92
aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCA8PSB2aXN1YWxQaXhlbFRocmVzaG9sZCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHVwZGF0ZUlzVmlzdWFsbHlOb25FbXB0eSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggODUxODE4NzgzNTViYjE3NWQzM2Q1NTJlZmI5ZjQ4Y2U2ZjUwYTcwMS4uNmI1NGRi
MmQ0NzQ1YzhlYThlYWQwYjJiYWIyNGU4N2M5Zjk3ZmYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xNDA3LDcgKzE0MDcsNyBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgogCiAgICAgZmxvYXQg
dG9wUGFpbnRlZEFyZWEgPSBtX3RvcFJlbGV2YW50UGFpbnRlZFJlZ2lvbi50b3RhbEFyZWEoKTsK
ICAgICBmbG9hdCBib3R0b21QYWludGVkQXJlYSA9IG1fYm90dG9tUmVsZXZhbnRQYWludGVkUmVn
aW9uLnRvdGFsQXJlYSgpOwotICAgIGZsb2F0IHZpZXdBcmVhID0gcmVsZXZhbnRSZWN0LndpZHRo
KCkgKiByZWxldmFudFJlY3QuaGVpZ2h0KCk7CisgICAgZmxvYXQgdmlld0FyZWEgPSBhcmVhKHJl
bGV2YW50UmVjdCk7CiAKICAgICBmbG9hdCByYXRpb1RoYXRJc1BhaW50ZWRPblRvcCA9IHRvcFBh
aW50ZWRBcmVhIC8gdmlld0FyZWE7CiAgICAgZmxvYXQgcmF0aW9UaGF0SXNQYWludGVkT25Cb3R0
b20gPSBib3R0b21QYWludGVkQXJlYSAvIHZpZXdBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQppbmRleCA0YjAzN2Q5YmU0NmVkNWI3M2RhYTliMWY2NTFjNDg1OGUwYjcxNzgzLi44
ODZmYjhiYzJlMDRkODNkMmU3NDhjMDYyM2E5NDA5YjJhNjc0YTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9GcmFtZUlPUy5tbQpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgRnJhbWU6OmJldHRlckFw
cHJveGltYXRlTm9kZShjb25zdCBJbnRQb2ludCYgdGVzdFBvaW50LCBOb2RlUXVhbGlmaWVyIG5v
ZGVRCiAgICAgICAgIEludFJlY3QgYmVzdEludGVyc2VjdCA9IGludGVyc2VjdGlvbih0ZXN0UmVj
dCwgYmVzdFJlY3QpOwogICAgICAgICBJbnRSZWN0IGNhbmRpZGF0ZUludGVyc2VjdCA9IGludGVy
c2VjdGlvbih0ZXN0UmVjdCwgY2FuZGlkYXRlUmVjdCk7CiAgICAgICAgIC8vIGlmIHRoZSBjYW5k
aWRhdGUgaW50ZXJzZWN0aW9uIGlzIHNtYWxsZXIgdGhhbiB0aGUgY3VycmVudCBiZXN0IGludGVy
c2VjdGlvbiwgYmFpbC4KLSAgICAgICAgaWYgKGNhbmRpZGF0ZUludGVyc2VjdC53aWR0aCgpICog
Y2FuZGlkYXRlSW50ZXJzZWN0LmhlaWdodCgpIDw9IGJlc3RJbnRlcnNlY3Qud2lkdGgoKSAqIGJl
c3RJbnRlcnNlY3QuaGVpZ2h0KCkpCisgICAgICAgIGlmIChjYW5kaWRhdGVJbnRlcnNlY3QuYXJl
YSgpIDw9IGJlc3RJbnRlcnNlY3QuYXJlYSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAppbmRleCBh
ZGY4OWMwYWFmOTM4YTFkZmE1NDk2ZjkxNjVmNjUyNWZiMWFkNzUyLi41YjFjMzVlNWQ5ZDBlZWNm
MWRlMDA3Mjc3NjI3NzMyNGM2ODM5YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFJlY3QuaApAQCAtMjQ1LDYgKzI0NSwxMSBAQCBpbmxpbmUgYm9vbCBGbG9h
dFJlY3Q6OmlzSW5maW5pdGUoKSBjb25zdAogewogICAgIHJldHVybiAqdGhpcyA9PSBpbmZpbml0
ZVJlY3QoKTsKIH0KKyAgICAKK2lubGluZSBmbG9hdCBhcmVhKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKK3sKKyAgICByZXR1cm4gcmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsKK30KIAogSW50
UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCmluZGV4IDczY2MwZmVhOGQ0ZDU5MjRj
YTFlNDRkZjkyZThjZTI2YjA2ZGUxZGUuLjlkYjVjYTcxNzY0YmQ1MGQzMDZhMTUzOTQ2ODI1ODc0
ZmRiMjc3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6
ZS5oCkBAIC0xOTIsNiArMTkyLDExIEBAIGlubGluZSBJbnRQb2ludCBmbG9vcmVkSW50UG9pbnQo
Y29uc3QgRmxvYXRTaXplJiBwKQogewogICAgIHJldHVybiBJbnRQb2ludChjbGFtcFRvSW50ZWdl
cihmbG9vcmYocC53aWR0aCgpKSksIGNsYW1wVG9JbnRlZ2VyKGZsb29yZihwLmhlaWdodCgpKSkp
OwogfQorICAgIAoraW5saW5lIGZsb2F0IGFyZWEoY29uc3QgRmxvYXRTaXplJiBzaXplKQorewor
ICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpOworfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAppbmRleCA2Zjc1NWUxNTAwY2ZmNTAwMmNkNjcyNDg4NDcxNWJmNDlmZGYyMDdiLi43ZmUwNmNl
ZGEyNDkxNThkMjlkMDYxNTI3YWQ0YmFjNTAxMjUzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xNTksOCArMTU5LDcgQEAgdm9pZCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmwKICAgICAvLyBsYXJnZXIgdGhhbiB0aGUgb3JpZ2luYWwgdGlsZSBpZiB1c2Vy
IHpvb21zIGluIGVub3VnaC4KICAgICBjb25zdCBmbG9hdCBtYXhQYXR0ZXJuVGlsZVBpeGVscyA9
IDUxMiAqIDUxMjsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdl
dENUTSgpLm1hcFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsK
LSAgICBmbG9hdCB0cmFuc2Zvcm1lZFRpbGVTaXplUGl4ZWxzID0gdHJhbnNmb3JtZWRUaWxlU2l6
ZS53aWR0aCgpICogdHJhbnNmb3JtZWRUaWxlU2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAodHJhbnNm
b3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxzKSB7CisgICAgaWYgKGFy
ZWEodHJhbnNmb3JtZWRUaWxlU2l6ZSkgPiBtYXhQYXR0ZXJuVGlsZVBpeGVscykgewogICAgICAg
ICBmbG9hdCBmcm9tWSA9IChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUu
aGVpZ2h0KCk7CiAgICAgICAgIGZsb2F0IHRvWSA9IG9uZVRpbGVSZWN0LnkoKTsKICAgICAgICAg
d2hpbGUgKHRvWSA8IENHUmVjdEdldE1heFkoZGVzdFJlY3QpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKaW5kZXggZWIyZTMxYjljNzUyNWExNzNiYzQ1NDU1
MTFkZDk3MGI5ZmM5NWIzMC4uZjMxNDg3YjVkMzVmN2E1ZjZkYzIzODlkMTlkNTU5ZTZkMWU1NDg0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMjQ2
LDYgKzI0NiwxMSBAQCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgQ0dSZWN0Jik7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dH
RU9NRVRSWV9UWVBFUykKIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1JlY3QmKTsK
ICNlbmRpZgorICAgIAoraW5saW5lIGludCBhcmVhKGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisg
ICAgcmV0dXJuIHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5o
CmluZGV4IDhmMjBhMGRlNzU1YWJmYzgwOTg4NzhiNTBlODY4YmI5ZmYxNWZlODguLjJlMzQ5ZDU1
Nzc1ODE0NzQwNjVhZjNmYWM2MjQ3MTlmOWM2NmQ2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTE4OSw2ICsxODksMTEgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQogewogICAgIHJl
dHVybiBhLndpZHRoKCkgIT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQoKTsK
IH0KKyAgICAKK2lubGluZSBpbnQgYXJlYShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHJl
dHVybiBzaXplLmFyZWEoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKaW5kZXggMWFjYWJhYTU5
MmM4NmI3NmNlNjJkNzgwNzYwZjI1M2Q1NDQ5MjFlYS4uMjA4YmFjYjkxOGQzNDQ4YWU2YTQ3ZTcz
MjdlZTliMjYxMGNjZTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFJlY3QuaApAQCAtMjQ2LDYgKzI0NiwxMSBAQCBpbmxpbmUgRmxvYXRSZWN0IHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5LCBMYXlvdXRVbml0
CiB7CiAgICAgcmV0dXJuIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeCwgeSwg
d2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwogfQorICAgIAoraW5saW5lIGZs
b2F0IGFyZWEoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKaW5kZXggMDczM2Zh
MmNkZGM5NmRhZmM1MDM2YzhlNjA0NTM4YjU1YWM5NjJmYy4uMzc1Mzc0ODhhMTAxZjU3ODA4MjIz
Nzk3NGVhOTM0MmQzYjZhZWFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFNpemUuaApAQCAtMjAxLDcgKzIwMSwxMiBAQCBpbmxpbmUgRmxvYXRTaXplIGZs
b29yZWRGb3JQYWludGluZyhjb25zdCBMYXlvdXRTaXplJiBzaXplLCBmbG9hdCBwaXhlbFNuYXBw
aW5nRgogICAgIHJldHVybiBGbG9hdFNpemUoc2l6ZSk7CiAjZW5kaWYKIH0KLQorICAgIAoraW5s
aW5lIGZsb2F0IGFyZWEoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKTsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIExheW91dFNpemVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXggY2U1NTViNzIxOTViNDMwNTUyZmI3YjIxYzI3YmMzNTBm
NGVhZDdlOS4uMjI1MzRkZmFlY2UxZGZlZDhhZWZlYzRhOGEyNjVmMTFiMDNlZWY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCkBAIC0xMTUsMTAgKzEx
NSw4IEBAIHVuc2lnbmVkIFJlZ2lvbjo6dG90YWxBcmVhKCkgY29uc3QKICAgICBzaXplX3Qgc2l6
ZSA9IHJlY3RzLnNpemUoKTsKICAgICB1bnNpZ25lZCB0b3RhbEFyZWEgPSAwOwogCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0g
cmVjdHNbaV07Ci0gICAgICAgIHRvdGFsQXJlYSArPSAocmVjdC53aWR0aCgpICogcmVjdC5oZWln
aHQoKSk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAg
ICAgICB0b3RhbEFyZWEgKz0gYXJlYShyZWN0c1tpXSk7CiAKICAgICByZXR1cm4gdG90YWxBcmVh
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cAppbmRleCAyZTkxNzg1YTdiMTIxOTFkY2IwNjIxNTQ3OWZmMGJmZDUwN2QxZDdiLi43ZGRlNTU5
OWEyZGQ2MGJiYTZiOGJiNDA4YjhlMWJmMjQ1YThkMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91CiAgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0ID0gc2hhZG93
ZWRSZWN0LnJlY3QoKTsKIAogICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IHJlY3Qud2lk
dGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiByZWN0LmhlaWdodCgpCi0gICAgICAgIHx8
ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291cmNl
UmVjdC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgeworICAgICAgICB8fCBhcmVh
KHRlbXBsYXRlU2l6ZSkgPiBhcmVhKG1fc291cmNlUmVjdCkpIHsKICAgICAgICAgZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBsYXllclJl
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlCiAgICAgY29uc3QgRmxvYXRSZWN0JiBoUmVjdCA9IGhvbGVSZWN0LnJl
Y3QoKTsKIAogICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IGhSZWN0LndpZHRoKCkgfHwg
dGVtcGxhdGVTaXplLmhlaWdodCgpID4gaFJlY3QuaGVpZ2h0KCkKLSAgICAgICAgfHwgKHRlbXBs
YXRlU2l6ZS53aWR0aCgpICogdGVtcGxhdGVTaXplLmhlaWdodCgpID4gaFJlY3Qud2lkdGgoKSAq
IGhSZWN0LmhlaWdodCgpKSkgeworICAgICAgICB8fCBhcmVhKHRlbXBsYXRlU2l6ZSkgPiBhcmVh
KGhSZWN0KSkgewogICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNz
Q29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
TGF5ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xh
eWVyUG9vbC5tbQppbmRleCAzNTY3Nzk2MDUwNmIxMmFhN2FjMzZjY2IyMjM1OGQ5NmE1OTM3Yjk1
Li44NWY3ZGFlYzQzM2JiYjA5YTg1MDQyNjk2YzljZTgyMWQ4ZmNhZmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvTGF5ZXJQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9MYXllclBvb2wubW0KQEAg
LTQ5LDcgKzQ5LDcgQEAgTGF5ZXJQb29sKiBMYXllclBvb2w6OnNoYXJlZFBvb2woKQogCiB1bnNp
Z25lZCBMYXllclBvb2w6OmJhY2tpbmdTdG9yZUJ5dGVzRm9yU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQogewotICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNDsKKyAg
ICByZXR1cm4gc2l6ZS5hcmVhKCkgKiA0OwogfQogCiBMYXllclBvb2w6OkxheWVyTGlzdCYgTGF5
ZXJQb29sOjpsaXN0T2ZMYXllcnNXaXRoU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDI0YmJiYmM1NjQ3ODU4NGQ3Nzk5MTc4NDZk
YjE0MTg0NTc0MjVmYjkuLjUyNTQxMTU2ZTIwZWE1M2MzMmZjZmE1MDc2YmNiZWI1ZGQ1MDlmZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCkBAIC00ODgsNyArNDg4LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28K
ICAgICAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcjsKLSAgICAgICAgZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIHByZW11bHRpcGxpZWREYXRhLT5kYXRh
KCksIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCAw
KSk7CisgICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoRGF0YSgwLCBwcmVtdWx0aXBsaWVkRGF0YS0+ZGF0YSgpLCA0ICogYXJlYShsb2dpY2FsU2l6
ZSgpKSwgMCkpOwogICAgICAgICBpZiAoIWRhdGFQcm92aWRlcikKICAgICAgICAgICAgIHJldHVy
biAiZGF0YTosIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCBlOGFkNThkMmU4NWM4YTYyYTU0ODc2ZmVmNWNl
NDk1ZTE2MDM1MTY5Li45MTQ2YzNmNGYzYzI0OGJjZWRlOTJiNDg5Y2NjMmMyYjRlOGI0NGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24KICAg
ICBpZiAoKG1fYmFzZVN1YnNhbXBsaW5nID09IDApICYmICFtX2lzUHJvZ3Jlc3NpdmUpIHsKICAg
ICAgICAgSW50U2l6ZSBzdWJzYW1wbGVkU2l6ZSh3LCBoKTsKICAgICAgICAgY29uc3QgaW50IGNN
YXhpbXVtSW1hZ2VTaXplQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAg
ICAgIHdoaWxlICgobV9iYXNlU3Vic2FtcGxpbmcgPCAzKSAmJiBzdWJzYW1wbGVkU2l6ZS53aWR0
aCgpICogc3Vic2FtcGxlZFNpemUuaGVpZ2h0KCkgPiBjTWF4aW11bUltYWdlU2l6ZUJlZm9yZVN1
YnNhbXBsaW5nKSB7CisgICAgICAgIHdoaWxlICgobV9iYXNlU3Vic2FtcGxpbmcgPCAzKSAmJiBz
dWJzYW1wbGVkU2l6ZS5hcmVhKCkgPiBjTWF4aW11bUltYWdlU2l6ZUJlZm9yZVN1YnNhbXBsaW5n
KSB7CiAgICAgICAgICAgICAvLyBXZSBrbm93IHRoZSBzaXplLCBidXQgdGhlIGFjdHVhbCBpbWFn
ZSBpcyB2ZXJ5IGxhcmdlIGFuZCBzaG91bGQgYmUgc3ViLXNhbXBsZWQuCiAgICAgICAgICAgICAv
LyBJbmNyZWFzZSB0aGUgYmFzZSBzdWJzYW1wbGluZyBhbmQgYXNrIGZvciB0aGUgc2l6ZSBhZ2Fp
bi4gSWYgdGhlIGltYWdlIGNhbiBiZSBzdWJzYW1wbGVkLCB0aGUgc2l6ZSB3aWxsIGJlCiAgICAg
ICAgICAgICAvLyBncmVhdGx5IHJlZHVjZWQuIDR4IHN1Yi1zYW1wbGluZyB3aWxsIG1ha2UgdXMg
c3VwcG9ydCB1cCB0byAzMjBNUCAoNU1QICogNF4zKSBpbWFnZXMsIHdoaWNoIHNob3VsZCBiZSBw
bGVudHkuCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90IGluZGV4KQogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZy
YW1lU2l6ZUF0SW5kZXgoaW5kZXgsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikpOwotICAgIHJldHVybiBmcmFtZVNpemUud2lkdGgoKSAqIGZyYW1l
U2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkgKiA0OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDlmZTkxMDE3OGJkZGUzYTI5MzU3ZjBlMzc4ZTUzNDdj
NjUwZTAzMWIuLjkwY2UxZmYxZjc0MjQyYjMzNDNhYjFhZWM5NjhmMGNiNWRlZDEwMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1
cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QK
IAogICAgICAgICBJbnRTaXplIGludGVybmFsU2l6ZSA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmlu
dGVybmFsU2l6ZSgpOwogICAgICAgICBzaXplX3Qgb2xkQ2FjaGVkQnl0ZXMgPSBtX2NhY2hlZEJ5
dGVzOwotICAgICAgICBtX2NhY2hlZEJ5dGVzID0gaW50ZXJuYWxTaXplLndpZHRoKCkgKiBpbnRl
cm5hbFNpemUuaGVpZ2h0KCkgKiA0OworICAgICAgICBtX2NhY2hlZEJ5dGVzID0gaW50ZXJuYWxT
aXplLmFyZWEoKSAqIDQ7CiAKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKHRoaXMsIHNhZmVDYXN0PGlu
dD4obV9jYWNoZWRCeXRlcykgLSBzYWZlQ2FzdDxpbnQ+KG9sZENhY2hlZEJ5dGVzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCAyOTdjZTczM2M5Mjk5YWQ5ZTI0MGJmZTE4MTZhNjA0
MTMyNmM3MWYzLi43YjQyMjdkYmNkOTA0ZGI0NmVhZGE4MjEyNzkwOGVjZTU5YmVjMjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIEZFQ29udm9s
dmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBpZiAoY2xpcFJpZ2h0ID49
IDAgJiYgY2xpcEJvdHRvbSA+PSAwKSB7CiAKLSAgICAgICAgaW50IG9wdGltYWxUaHJlYWROdW1i
ZXIgPSAoYWJzb2x1dGVQYWludFJlY3QoKS53aWR0aCgpICogYWJzb2x1dGVQYWludFJlY3QoKS5o
ZWlnaHQoKSkgLyBzX21pbmltYWxSZWN0RGltZW5zaW9uOworICAgICAgICBpbnQgb3B0aW1hbFRo
cmVhZE51bWJlciA9IGFyZWEoYWJzb2x1dGVQYWludFJlY3QoKSkgLyBzX21pbmltYWxSZWN0RGlt
ZW5zaW9uOwogICAgICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEpIHsKICAgICAgICAg
ICAgIFdURjo6UGFyYWxsZWxKb2JzPEludGVyaW9yUGl4ZWxQYXJhbWV0ZXJzPiBwYXJhbGxlbEpv
YnMoJldlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEludGVyaW9yUGl4ZWxzV29ya2VyLCBv
cHRpbWFsVGhyZWFkTnVtYmVyKTsKICAgICAgICAgICAgIGNvbnN0IGludCBudW1PZlRocmVhZHMg
PSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4
IDMzNjRjMDdmYTQwZGI5MGVmNjNhODJiZjY4NjgxYTlmNWYxYThhNmEuLjUyNWYwZGI0MWVlZGI0
NjVkODM4YTVmYTg3Nzk5ZTdhMjY0MWEyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0z
MjEsNyArMzIxLDcgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHko
VWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQKIHsKICAgICBpbnQgc2Nhbmxp
bmUgPSA0ICogcGFpbnRTaXplLndpZHRoKCk7CiAgICAgaW50IGV4dHJhSGVpZ2h0ID0gMyAqIGtl
cm5lbFNpemVZICogMC41ZjsKLSAgICBpbnQgb3B0aW1hbFRocmVhZE51bWJlciA9IChwYWludFNp
emUud2lkdGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSkgLyAoc19taW5pbWFsUmVjdERpbWVuc2lv
biArIGV4dHJhSGVpZ2h0ICogcGFpbnRTaXplLndpZHRoKCkpOworICAgIGludCBvcHRpbWFsVGhy
ZWFkTnVtYmVyID0gYXJlYShwYWludFNpemUpIC8gKHNfbWluaW1hbFJlY3REaW1lbnNpb24gKyBl
eHRyYUhlaWdodCAqIHBhaW50U2l6ZS53aWR0aCgpKTsKIAogICAgIGlmIChvcHRpbWFsVGhyZWFk
TnVtYmVyID4gMSkgewogICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxQbGF0Zm9ybUFwcGx5UGFy
YW1ldGVycz4gcGFyYWxsZWxKb2JzKCZwbGF0Zm9ybUFwcGx5V29ya2VyLCBvcHRpbWFsVGhyZWFk
TnVtYmVyKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5l
bFNpemUoZmlsdGVyKCksIEZsb2F0UG9pbnQobV9zdGRYLCBtX3N0ZFkpKTsKIAogICAgIEludFNp
emUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRl
VW5pbml0aWFsaXplZChwYWludFNpemUud2lkdGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSAqIDQp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFt
cGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYShwYWludFNpemUpICogNCk7CiAgICAg
VWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXkgPSB0bXBJbWFnZURhdGEuZ2V0KCk7CiAK
ICAgICBwbGF0Zm9ybUFwcGx5KHNyY1BpeGVsQXJyYXksIHRtcFBpeGVsQXJyYXksIGtlcm5lbFNp
emUud2lkdGgoKSwga2VybmVsU2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAppbmRleCA5MTdjOTZhMjE3ZmYxOGZjYTU0NjJjMzE3MTZkOTZlYmIzZTYyNTg3Li5mZDIy
MzhmZDZjMzhkZjQ0YjU2NmM2MDc5ZmRmZmEwMzk2NDhkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YShtX3NlZWQsIHJvdW5kZWRJbnRT
aXplKGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLnNpemUoKSkpOwogICAgIGluaXRQYWludChw
YWludGluZ0RhdGEpOwogCi0gICAgaW50IG9wdGltYWxUaHJlYWROdW1iZXIgPSAoYWJzb2x1dGVQ
YWludFJlY3QoKS53aWR0aCgpICogYWJzb2x1dGVQYWludFJlY3QoKS5oZWlnaHQoKSkgLyBzX21p
bmltYWxSZWN0RGltZW5zaW9uOworICAgIGludCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gYXJlYShh
YnNvbHV0ZVBhaW50UmVjdCgpKSAvIHNfbWluaW1hbFJlY3REaW1lbnNpb247CiAgICAgaWYgKG9w
dGltYWxUaHJlYWROdW1iZXIgPiAxKSB7CiAgICAgICAgIC8vIEluaXRpYWxpemUgcGFyYWxsZWwg
am9icwogICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxGaWxsUmVnaW9uUGFyYW1ldGVycz4gcGFy
YWxsZWxKb2JzKCZXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb25Xb3JrZXIsIG9wdGlt
YWxUaHJlYWROdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGQ4NGJjYTI2MDRiMjcwMmEx
MDliYWY5MmFiOTE5YjEwODA3ZjhmY2IuLmQ2NzI1YjI5YmM1MGViOTFhMWRjZWM4Mzk0NzhmNjZh
Zjk3NGY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZUJ1
ZmZlciogRmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIoKQogICAgIHNpemVf
dCBvcmlnaW5bM10gPSB7IDAsIDAsIDAgfTsKICAgICBzaXplX3QgcmVnaW9uWzNdID0geyBtX2Fi
c29sdXRlUGFpbnRSZWN0LndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCksIDEg
fTsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZGVzdGluYXRpb25QaXhlbEFycmF5
ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkg
KiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBkZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlKGFyZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0KTsKIAogICAgIGlmIChjb250ZXh0LT5p
c0ZhaWxlZChjbEZpbmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSkpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpvcGVu
Q0xJbWFnZVRvSW1hZ2VCdWZmZXIoKQogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmls
dGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKHJlY3QpKTsKLSAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKGFyZWEocmVjdCkgKiA0KTsKICAgICBjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoaW1hZ2VE
YXRhLmdldCgpLCByZWN0KTsKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0KQEAg
LTMxNiw3ICszMTYsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZl
Y3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcgogUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJ
bnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7Ci0g
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJh
eTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7
CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhKHJlY3QpICogNCk7CiAgICAgY29weVByZW11
bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwogICAgIHJldHVybiBpbWFnZURh
dGEucmVsZWFzZSgpOwogfQpAQCAtMzc1LDEwICszNzUsMTAgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNv
bnN0IEkKICAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVm
ZmVyUmVzdWx0LT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBt
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChtX2Fic29sdXRlUGFpbnRSZWN0KSk7Ci0gICAgICAg
ICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBh
aW50UmVjdC5oZWlnaHQoKSAqIDQpOworICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFyZWEobV9hYnNv
bHV0ZVBhaW50UmVjdCkgKiA0KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHNvdXJjZUNv
bXBvbmVudCA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbkNvbXBvbmVudCA9IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQtPmRhdGEoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGVuZCA9IHNvdXJj
ZUNvbXBvbmVudCArIChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFp
bnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBlbmQgPSBz
b3VyY2VDb21wb25lbnQgKyBhcmVhKG1fYWJzb2x1dGVQYWludFJlY3QpICogNDsKICAgICAgICAg
ICAgIHdoaWxlIChzb3VyY2VDb21wb25lbnQgPCBlbmQpIHsKICAgICAgICAgICAgICAgICBpbnQg
YWxwaGEgPSBzb3VyY2VDb21wb25lbnRbM107CiAgICAgICAgICAgICAgICAgaWYgKGFscGhhKSB7
CkBAIC00MDksMTAgKzQwOSwxMCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxp
ZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0CiAgICAgICAgICAg
ICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IG1faW1hZ2VCdWZmZXJSZXN1bHQtPmdldFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpc0ZpbHRl
clNpemVWYWxpZChtX2Fic29sdXRlUGFpbnRSZWN0KSk7Ci0gICAgICAgICAgICBtX3ByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0
KCkgKiA0KTsKKyAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYShtX2Fic29sdXRlUGFpbnRSZWN0
KSAqIDQpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQ29tcG9uZW50ID0gbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciogZGVzdGluYXRpb25Db21wb25lbnQgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0
YSgpOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZW5kID0gc291cmNlQ29tcG9uZW50ICsg
KG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0
KCkgKiA0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGVuZCA9IHNvdXJjZUNvbXBvbmVu
dCArIGFyZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0OwogICAgICAgICAgICAgd2hpbGUgKHNv
dXJjZUNvbXBvbmVudCA8IGVuZCkgewogICAgICAgICAgICAgICAgIGludCBhbHBoYSA9IHNvdXJj
ZUNvbXBvbmVudFszXTsKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkNvbXBvbmVudFswXSA9
IHN0YXRpY19jYXN0PGludD4oc291cmNlQ29tcG9uZW50WzBdKSAqIGFscGhhIC8gMjU1OwpAQCAt
NDQ4LDcgKzQ0OCw3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVu
bXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKG1fYWJzb2x1dGVQYWlu
dFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoYXJlYShtX2Fic29sdXRlUGFpbnRSZWN0KSAqIDQpOwogICAgIHJldHVybiBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCkBAIC00NjAsNyArNDYwLDcgQEAgVWlu
dDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0KCkKIAogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBt
X2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhKG1f
YWJzb2x1dGVQYWludFJlY3QpICogNCk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKaW5kZXggMmI5NmNiNTk0Y2JlNzNlNTZkMTY3
ZGFkMGM5NmNmNGIwMmI1ODhhZC4uNDg3NjE4NzE3ODM1ZjFlNDlmNDdiYzhhNzY2N2RkMjVkMWY1
NjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9EcmF3aW5nQnVmZmVyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgRHJhd2luZ0J1ZmZl
cjo6Y2xlYXIoKQogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBp
ZiAoIW1fc2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc19jdXJyZW50UmVzb3VyY2VVc2VQaXhl
bHMgLT0gbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCk7CisgICAgICAgIHNfY3VycmVu
dFJlc291cmNlVXNlUGl4ZWxzIC09IG1fc2l6ZS5hcmVhKCk7CiAgICAgICAgIG1fc2l6ZSA9IElu
dFNpemUoKTsKICAgICB9CiAKQEAgLTI2OCwxMCArMjY4LDEwIEBAIGJvb2wgRHJhd2luZ0J1ZmZl
cjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGludCBwaXhlbERlbHRhID0gbmV3U2l6ZS53aWR0aCgpICogbmV3U2l6ZS5o
ZWlnaHQoKTsKKyAgICBpbnQgcGl4ZWxEZWx0YSA9IG5ld1NpemUuYXJlYSgpOwogICAgIGludCBv
bGRTaXplID0gMDsKICAgICBpZiAoIW1fc2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgb2xkU2l6
ZSA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpOworICAgICAgICBvbGRTaXplID0g
bV9zaXplLmFyZWEoKTsKICAgICAgICAgcGl4ZWxEZWx0YSAtPSBvbGRTaXplOwogICAgIH0KIApA
QCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6
ZSYgbmV3U2l6ZSkKICAgICAgICAgICAgICAgICBjbGVhcigpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBpeGVsRGVsdGEgPSBhZGp1
c3RlZFNpemUud2lkdGgoKSAqIGFkanVzdGVkU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgICAgIHBp
eGVsRGVsdGEgPSBhZGp1c3RlZFNpemUuYXJlYSgpOwogICAgICAgICAgICAgcGl4ZWxEZWx0YSAt
PSBvbGRTaXplOwogICAgICAgICB9CiAgICAgIH0KQEAgLTM2NSw3ICszNjUsNyBAQCBib29sIERy
YXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKICAgICAgICAgfSB3
aGlsZSAoIWFkanVzdGVkU2l6ZS5pc0VtcHR5KCkpOwogCi0gICAgICAgIHBpeGVsRGVsdGEgPSBt
X3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcGl4ZWxEZWx0YSA9IG1f
c2l6ZS5hcmVhKCk7CiAgICAgICAgIHBpeGVsRGVsdGEgLT0gb2xkU2l6ZTsKICAgICAgICAgc19j
dXJyZW50UmVzb3VyY2VVc2VQaXhlbHMgKz0gcGl4ZWxEZWx0YTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tCmluZGV4IDY1MWIwNjkyYzNhY2YwM2U1
ZDQ5NDM4OGYzOGJkNmY4MGM1MzYxNmMuLjc0ZTIzYzBlMmVjMTQxMTczOGJjODMxY2QxYjExY2Uw
MTU4MWE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlR3JpZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdy
aWQubW0KQEAgLTQwNiw3ICs0MDYsNyBAQCBJbnRSZWN0IExlZ2FjeVRpbGVHcmlkOjphZGp1c3RD
b3ZlclJlY3RGb3JQYWdlQm91bmRzKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgYWRq
dXN0ZWRSZWN0ID0gaW50ZXJzZWN0aW9uKGJvdW5kcywgYWRqdXN0ZWRSZWN0KTsKICAgICBpZiAo
YWRqdXN0ZWRSZWN0ID09IHJlY3QgfHwgYWRqdXN0ZWRSZWN0LmlzRW1wdHkoKSB8fCBzaG91bGRV
c2VNaW5pbWFsVGlsZUNvdmVyYWdlKCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RlZFJlY3Q7Ci0g
ICAgaW50IHBpeGVscyA9IGFkanVzdGVkUmVjdC53aWR0aCgpICogYWRqdXN0ZWRSZWN0LmhlaWdo
dCgpOworICAgIGludCBwaXhlbHMgPSBhZGp1c3RlZFJlY3QuYXJlYSgpOwogICAgIGlmIChhZGp1
c3RlZFJlY3Qud2lkdGgoKSAhPSByZWN0LndpZHRoKCkpCiAgICAgICAgIGFkanVzdGVkUmVjdC5p
bmZsYXRlWSgocGl4ZWxzIC8gYWRqdXN0ZWRSZWN0LndpZHRoKCkgLSBhZGp1c3RlZFJlY3QuaGVp
Z2h0KCkpIC8gMik7CiAgICAgZWxzZSBpZiAoYWRqdXN0ZWRSZWN0LmhlaWdodCgpICE9IHJlY3Qu
aGVpZ2h0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyUG9vbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
TGF5ZXJQb29sLm1tCmluZGV4IGU2ZDk1NzQ0ZmU0ZTY0YTY4MzMxYjBiMDAzOTM0OWI3NzE1ZTMw
YTEuLjNjNWYwOGI1OTg0ZGJlNGVmODk2ZjM4Njk0Y2VkZTUyY2JkMWQzNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCkBAIC01
NSw3ICs1NSw3IEBAIExlZ2FjeVRpbGVMYXllclBvb2wqIExlZ2FjeVRpbGVMYXllclBvb2w6OnNo
YXJlZFBvb2woKQogCiB1bnNpZ25lZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpieXRlc0JhY2tpbmdM
YXllcldpdGhQaXhlbFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgcmV0dXJuIHNpemUuYXJlYSgpICog
NDsKIH0KIAogTGVnYWN5VGlsZUxheWVyUG9vbDo6TGF5ZXJMaXN0JiBMZWdhY3lUaWxlTGF5ZXJQ
b29sOjpsaXN0T2ZMYXllcnNXaXRoU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmlu
ZGV4IDU2MzgzNDY2ZWQ1ODZlYzM5NTBjZjBjYThlNmEzNDA1YjExN2IyZWIuLmU3MWQyZTljM2Ey
ZjQxM2NmYjFiMjAxMjJhYjlkNDg1OTY0OTU0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hv
bGQsIGMKICAgICAgICAgaW50IG1pbkJ1ZmZlclkgPSBzdGQ6Om1heCgwLCBtYXJnaW5SZWN0Lnko
KSAtIGltYWdlUmVjdC55KCkpOwogICAgICAgICBpbnQgbWF4QnVmZmVyWSA9IHN0ZDo6bWluKGlt
YWdlUmVjdC5oZWlnaHQoKSwgbWFyZ2luUmVjdC5tYXhZKCkgLSBpbWFnZVJlY3QueSgpKTsKIAot
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlUmVjdC53aWR0aCgpICogaW1h
Z2VSZWN0LmhlaWdodCgpICogNCkgPT0gcGl4ZWxBcnJheUxlbmd0aCkgeworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlUmVjdC5hcmVhKCkgKiA0KSA9PSBwaXhlbEFycmF5
TGVuZ3RoKSB7CiAgICAgICAgICAgICBmb3IgKGludCB5ID0gbWluQnVmZmVyWTsgeSA8IG1heEJ1
ZmZlclk7ICsreSkgewogICAgICAgICAgICAgICAgIGludCBzdGFydFggPSAtMTsKICAgICAgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlUmVjdC53aWR0aCgpOyArK3gsIHBpeGVs
QXJyYXlPZmZzZXQgKz0gNCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA4N2M4ZWU1NzRjMWEzMDc3
OTA5OWQ0YWMwNTMxNWE0MTM3ZDEwNDg4Li4yZTU4Zjg4MWY3MmMxODRkYWUxZjhhNjkwNWQ3ZDFh
YjY2YzNmY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpdHNJbk1heGltdW1JbWFnZVNpemUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBGbG9hCiB7CiAgICAgRmxvYXRTaXplIHNjYWxlZFNpemUoc2l6ZSk7CiAgICAg
c2NhbGVkU2l6ZS5zY2FsZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgZmxv
YXQgc2NhbGVkQXJlYSA9IHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCk7
CisgICAgZmxvYXQgc2NhbGVkQXJlYSA9IGFyZWEoc2NhbGVkU2l6ZSk7CiAKICAgICBpZiAoc2Nh
bGVkQXJlYSA8PSBGaWx0ZXJFZmZlY3Q6Om1heEZpbHRlckFyZWEoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229269</attachid>
            <date>2014-04-14 00:58:04 -0700</date>
            <delta_ts>2014-04-14 10:19:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131606-20140414005743.patch</filename>
            <type>text/plain</type>
            <size>35004</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc4MjY3Nzc1NDBjZDk4
MGY3NTNlYzE2NjNlNGI0ZjBkYWNiNjU2Yi4uNWRiNjhhM2JiZjI0OTI4YWE3NWNkOTFjMWIxNTFh
NWJmNTljMjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE0LTA0LTEzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHdpZHRoKmhlaWdo
dCB3aXRoIGNhbGxzIHRvIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMTYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhcmVhKCkgaGVscGVycyB0aGF0IGNhbGN1bGF0ZSB3aWR0aCAqIGhl
aWdodCBmb3IgY29tbW9uCisgICAgICAgIHJlY3Rhbmd1bGFyIGNsYXNzZXMuIFVwZGF0ZSB0aGUg
cGxhY2VzIHRocm91Z2ggV2ViQ29yZSB0aGF0CisgICAgICAgIHVzZSB3aWR0aCAqIGhlaWdodCB0
byB1c2UgZWl0aGVyIHRoZXNlIG5ldyBoZWxwZXJzLCBvciB0aGUKKyAgICAgICAgZXhpc3Rpbmcg
SW50UmVjdDo6YXJlYSgpIG1lbWJlciBmdW5jdGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0RlbGV0YWJsZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OkltYWdlRGF0YSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdCk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6YmV0dGVyQXBwcm94aW1hdGVOb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZWEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJl
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6dG90YWxBcmVhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyUG9vbC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUG9vbDo6YmFja2luZ1N0b3JlQnl0ZXNGb3JTaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVH
YXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVVubXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVByZW11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
OjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUdyaWQ6OmFkanVzdENvdmVyUmVjdEZvclBhZ2VCb3Vu
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6Ynl0ZXNCYWNraW5nTGF5ZXJXaXRo
UGl4ZWxTaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6Zml0c0luTWF4aW11bUltYWdlU2l6ZSk6CisKIDIwMTQt
MDQtMTAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgZWFybHkgcmV0dXJuIG91dCBvZiBkaXNwYXRjaF9hc3luYygpIGJsb2NrIHNvIHdlIGNhbiBy
ZXR1cm4gZnJvbSB3aWxsU2VuZFJlcXVlc3QgcXVpY2tseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggZmIyODc3YzhmMDNlMzE0
NTVkNDI2OWJjZjFmN2QxM2YyODI4YmJlNC4uYTRjYzRmYmQzOTk3OTU1YWVhYzM2OWM2NzYwNWU3
Zjc5NzFmODQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBib29sIGlzRGVsZXRhYmxl
RWxlbWVudChjb25zdCBOb2RlKiBub2RlKQogICAgIGlmIChib3JkZXJCb3VuZGluZ0JveC53aWR0
aCgpIDwgbWluaW11bVdpZHRoIHx8IGJvcmRlckJvdW5kaW5nQm94LmhlaWdodCgpIDwgbWluaW11
bUhlaWdodCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKChib3JkZXJCb3VuZGlu
Z0JveC53aWR0aCgpICogYm9yZGVyQm91bmRpbmdCb3guaGVpZ2h0KCkpIDwgbWluaW11bUFyZWEp
CisgICAgaWYgKGFyZWEoYm9yZGVyQm91bmRpbmdCb3gpIDwgbWluaW11bUFyZWEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChib3gtPmlzVGFibGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNzUxMjEyMzFlY2ZjMzg1NWVjOGU4MmEx
Y2VhZmQwMTU5NTEwMjQwNy4uNjY1Mjk0YWIyMWFjMzBlNjAzN2QzNzRiODAwMzkyNWQ1OTJlMjNj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTU1MCw3
ICs1NTAsNyBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50OjpzaG91bGRBY2NlbGVyYXRlKGNvbnN0
IEludFNpemUmIHNpemUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERv
IG5vdCB1c2UgYWNjZWxlcmF0aW9uIGZvciBzbWFsbCBjYW52YXMuCi0gICAgaWYgKHNpemUud2lk
dGgoKSAqIHNpemUuaGVpZ2h0KCkgPCBzZXR0aW5ncy0+bWluaW11bUFjY2VsZXJhdGVkMmRDYW52
YXNTaXplKCkpCisgICAgaWYgKHNpemUuYXJlYSgpIDwgc2V0dGluZ3MtPm1pbmltdW1BY2NlbGVy
YXRlZDJkQ2FudmFzU2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCFkZXZpY2VTaXplLmlzRXhwcmVzc2libGVBc0lu
dFNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRldmljZVNpemUud2lkdGgoKSAq
IGRldmljZVNpemUuaGVpZ2h0KCkgPiBNYXhDYW52YXNBcmVhKQorICAgIGlmIChhcmVhKGRldmlj
ZVNpemUpID4gTWF4Q2FudmFzQXJlYSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50U2l6ZSBi
dWZmZXJTaXplKGRldmljZVNpemUud2lkdGgoKSwgZGV2aWNlU2l6ZS5oZWlnaHQoKSk7CkBAIC01
OTEsNyArNTkxLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KSBjb25zdAogICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI+KCptX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwot
ICAgIHNpemVfdCBudW1CeXRlcyA9IDQgKiBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS53
aWR0aCgpICogbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkuaGVpZ2h0KCk7CisgICAgc2l6
ZV90IG51bUJ5dGVzID0gNCAqIG1faW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmFyZWEoKTsK
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9y
eUNvc3QobnVtQnl0ZXMpOwogCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQ4MGNhNDQ1OTAxZGI1YjA3MDA1
MTk2YzA3MGQ4ZTVkYzEzMWRkODguLjEzZmU5NmZjZjY4YjAyNTk5MWQxOGUyNmRmNjU0NTRkMDA1
YzEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtNjk5LDIyICs2OTksMjAgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpz
dWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRv
JiByZW5kZXJlciA9IHRvUmVuZGVyRW1iZWRkZWRPYmplY3QoKnRoaXMtPnJlbmRlcmVyKCkpOwog
ICAgIExheW91dFJlY3QgY29udGVudFJlY3QgPSByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpOwot
ICAgIGludCBjb250ZW50V2lkdGggPSBjb250ZW50UmVjdC53aWR0aCgpOwotICAgIGludCBjb250
ZW50SGVpZ2h0ID0gY29udGVudFJlY3QuaGVpZ2h0KCk7CiAKICAgICBpZiAoaW5NYWluRnJhbWUp
IHsKICAgICAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwogICAgICAgICBib29s
IGlzRnVsbFBhZ2UgPSBpczEwMFBlcmNlbnQoc3R5bGUud2lkdGgoKSkgJiYgaXMxMDBQZXJjZW50
KHN0eWxlLmhlaWdodCgpKTsKLSAgICAgICAgSW50U2l6ZSB2aXNpYmxlVmlld1NpemUgPSBkb2N1
bWVudCgpLmZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZVNpemUoKTsKLSAgICAgICAgZmxvYXQgY29u
dGVudEFyZWEgPSBjb250ZW50V2lkdGggKiBjb250ZW50SGVpZ2h0OwotICAgICAgICBmbG9hdCB2
aXNpYmxlQXJlYSA9IHZpc2libGVWaWV3U2l6ZS53aWR0aCgpICogdmlzaWJsZVZpZXdTaXplLmhl
aWdodCgpOwotICAgICAgICBpZiAoaXNGdWxsUGFnZSAmJiBjb250ZW50QXJlYSA+IHZpc2libGVB
cmVhICogc2l6aW5nRnVsbFBhZ2VBcmVhUmF0aW9UaHJlc2hvbGQpIHsKKyAgICAgICAgaWYgKGlz
RnVsbFBhZ2UgJiYgYXJlYShjb250ZW50UmVjdCkgPiBhcmVhKGRvY3VtZW50KCkuZnJhbWUoKS0+
dmlldygpLT52aXNpYmxlU2l6ZSgpKSAqIHNpemluZ0Z1bGxQYWdlQXJlYVJhdGlvVGhyZXNob2xk
KSB7CiAgICAgICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgdG9wIGxldmVsIGZ1
bGwgcGFnZSwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAgICAgIG1fc25hcHNob3REZWNp
c2lvbiA9IE5ldmVyU25hcHNob3Q7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpbnQgY29udGVudFdpZHRoID0gY29udGVudFJlY3Qud2lkdGgoKTsKKyAgICBp
bnQgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodCgpOworICAgIAogICAgIGlmIChj
b250ZW50V2lkdGggPD0gc2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBjb250ZW50SGVp
Z2h0IDw9IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQpIHsKICAgICAgICAgTE9HKFBsdWdp
bnMsICIlcCBQbHVnLWluIGlzIHZlcnkgc21hbGwgJWR4JWQsIHNldCB0byBwbGF5IiwgdGhpcywg
Y29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKICAgICAgICAgbV9zaXplV2hlblNuYXBzaG90
dGVkID0gSW50U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuY3BwCmluZGV4IDc5NDBmNDQ2NWJlZjYwYWNkNGE0NmYxYThlNzRkMzBmZDA5NjVm
YmEuLjM1OGMwZDc0MTYzNjQxYThjOTU1NGFjNGQ4MzA2YTgyYmIzYTNkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0ZUFy
cmF5LAogCiBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDog
bV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQpKQorICAgICwgbV9kYXRh
KFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemUuYXJlYSgpICogNCkp
CiB7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJ
bnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYQogICAg
IDogbV9zaXplKHNpemUpCiAgICAgLCBtX2RhdGEoYnl0ZUFycmF5KQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRo
KCkgKiBzaXplLmhlaWdodCgpICogNCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUuYXJl
YSgpICogNCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IDk2ZTkwNWY0ZDE2N2I3OWJlM2RmMDk0ZGU2ZTBlZmRlMjViYmFlNGQuLjMwOWFj
ZDY1Y2Q1MTBlNDhmODAzNzNlNzlmZGI2NjRlMmU2NDk4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtNzMzLDcgKzczMyw3IEBAIGlubGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50
VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBp
ZiAobV9pc1Zpc3VhbGx5Tm9uRW1wdHkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Zpc3VhbGx5
Tm9uRW1wdHlQaXhlbENvdW50ICs9IHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCk7CisgICAg
bV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCArPSBzaXplLmFyZWEoKTsKICAgICBpZiAobV92
aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCA8PSB2aXN1YWxQaXhlbFRocmVzaG9sZCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHVwZGF0ZUlzVmlzdWFsbHlOb25FbXB0eSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggODUxODE4NzgzNTViYjE3NWQzM2Q1NTJlZmI5ZjQ4Y2U2ZjUwYTcwMS4uNmI1NGRi
MmQ0NzQ1YzhlYThlYWQwYjJiYWIyNGU4N2M5Zjk3ZmYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xNDA3LDcgKzE0MDcsNyBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgogCiAgICAgZmxvYXQg
dG9wUGFpbnRlZEFyZWEgPSBtX3RvcFJlbGV2YW50UGFpbnRlZFJlZ2lvbi50b3RhbEFyZWEoKTsK
ICAgICBmbG9hdCBib3R0b21QYWludGVkQXJlYSA9IG1fYm90dG9tUmVsZXZhbnRQYWludGVkUmVn
aW9uLnRvdGFsQXJlYSgpOwotICAgIGZsb2F0IHZpZXdBcmVhID0gcmVsZXZhbnRSZWN0LndpZHRo
KCkgKiByZWxldmFudFJlY3QuaGVpZ2h0KCk7CisgICAgZmxvYXQgdmlld0FyZWEgPSBhcmVhKHJl
bGV2YW50UmVjdCk7CiAKICAgICBmbG9hdCByYXRpb1RoYXRJc1BhaW50ZWRPblRvcCA9IHRvcFBh
aW50ZWRBcmVhIC8gdmlld0FyZWE7CiAgICAgZmxvYXQgcmF0aW9UaGF0SXNQYWludGVkT25Cb3R0
b20gPSBib3R0b21QYWludGVkQXJlYSAvIHZpZXdBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQppbmRleCA0YjAzN2Q5YmU0NmVkNWI3M2RhYTliMWY2NTFjNDg1OGUwYjcxNzgzLi44
ODZmYjhiYzJlMDRkODNkMmU3NDhjMDYyM2E5NDA5YjJhNjc0YTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9GcmFtZUlPUy5tbQpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgRnJhbWU6OmJldHRlckFw
cHJveGltYXRlTm9kZShjb25zdCBJbnRQb2ludCYgdGVzdFBvaW50LCBOb2RlUXVhbGlmaWVyIG5v
ZGVRCiAgICAgICAgIEludFJlY3QgYmVzdEludGVyc2VjdCA9IGludGVyc2VjdGlvbih0ZXN0UmVj
dCwgYmVzdFJlY3QpOwogICAgICAgICBJbnRSZWN0IGNhbmRpZGF0ZUludGVyc2VjdCA9IGludGVy
c2VjdGlvbih0ZXN0UmVjdCwgY2FuZGlkYXRlUmVjdCk7CiAgICAgICAgIC8vIGlmIHRoZSBjYW5k
aWRhdGUgaW50ZXJzZWN0aW9uIGlzIHNtYWxsZXIgdGhhbiB0aGUgY3VycmVudCBiZXN0IGludGVy
c2VjdGlvbiwgYmFpbC4KLSAgICAgICAgaWYgKGNhbmRpZGF0ZUludGVyc2VjdC53aWR0aCgpICog
Y2FuZGlkYXRlSW50ZXJzZWN0LmhlaWdodCgpIDw9IGJlc3RJbnRlcnNlY3Qud2lkdGgoKSAqIGJl
c3RJbnRlcnNlY3QuaGVpZ2h0KCkpCisgICAgICAgIGlmIChjYW5kaWRhdGVJbnRlcnNlY3QuYXJl
YSgpIDw9IGJlc3RJbnRlcnNlY3QuYXJlYSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAppbmRleCBh
ZGY4OWMwYWFmOTM4YTFkZmE1NDk2ZjkxNjVmNjUyNWZiMWFkNzUyLi41YjFjMzVlNWQ5ZDBlZWNm
MWRlMDA3Mjc3NjI3NzMyNGM2ODM5YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFJlY3QuaApAQCAtMjQ1LDYgKzI0NSwxMSBAQCBpbmxpbmUgYm9vbCBGbG9h
dFJlY3Q6OmlzSW5maW5pdGUoKSBjb25zdAogewogICAgIHJldHVybiAqdGhpcyA9PSBpbmZpbml0
ZVJlY3QoKTsKIH0KKyAgICAKK2lubGluZSBmbG9hdCBhcmVhKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKK3sKKyAgICByZXR1cm4gcmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsKK30KIAogSW50
UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCmluZGV4IDczY2MwZmVhOGQ0ZDU5MjRj
YTFlNDRkZjkyZThjZTI2YjA2ZGUxZGUuLjlkYjVjYTcxNzY0YmQ1MGQzMDZhMTUzOTQ2ODI1ODc0
ZmRiMjc3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6
ZS5oCkBAIC0xOTIsNiArMTkyLDExIEBAIGlubGluZSBJbnRQb2ludCBmbG9vcmVkSW50UG9pbnQo
Y29uc3QgRmxvYXRTaXplJiBwKQogewogICAgIHJldHVybiBJbnRQb2ludChjbGFtcFRvSW50ZWdl
cihmbG9vcmYocC53aWR0aCgpKSksIGNsYW1wVG9JbnRlZ2VyKGZsb29yZihwLmhlaWdodCgpKSkp
OwogfQorICAgIAoraW5saW5lIGZsb2F0IGFyZWEoY29uc3QgRmxvYXRTaXplJiBzaXplKQorewor
ICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpOworfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAppbmRleCA2Zjc1NWUxNTAwY2ZmNTAwMmNkNjcyNDg4NDcxNWJmNDlmZGYyMDdiLi43ZmUwNmNl
ZGEyNDkxNThkMjlkMDYxNTI3YWQ0YmFjNTAxMjUzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xNTksOCArMTU5LDcgQEAgdm9pZCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmwKICAgICAvLyBsYXJnZXIgdGhhbiB0aGUgb3JpZ2luYWwgdGlsZSBpZiB1c2Vy
IHpvb21zIGluIGVub3VnaC4KICAgICBjb25zdCBmbG9hdCBtYXhQYXR0ZXJuVGlsZVBpeGVscyA9
IDUxMiAqIDUxMjsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdl
dENUTSgpLm1hcFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsK
LSAgICBmbG9hdCB0cmFuc2Zvcm1lZFRpbGVTaXplUGl4ZWxzID0gdHJhbnNmb3JtZWRUaWxlU2l6
ZS53aWR0aCgpICogdHJhbnNmb3JtZWRUaWxlU2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAodHJhbnNm
b3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxzKSB7CisgICAgaWYgKGFy
ZWEodHJhbnNmb3JtZWRUaWxlU2l6ZSkgPiBtYXhQYXR0ZXJuVGlsZVBpeGVscykgewogICAgICAg
ICBmbG9hdCBmcm9tWSA9IChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUu
aGVpZ2h0KCk7CiAgICAgICAgIGZsb2F0IHRvWSA9IG9uZVRpbGVSZWN0LnkoKTsKICAgICAgICAg
d2hpbGUgKHRvWSA8IENHUmVjdEdldE1heFkoZGVzdFJlY3QpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKaW5kZXggZWIyZTMxYjljNzUyNWExNzNiYzQ1NDU1
MTFkZDk3MGI5ZmM5NWIzMC4uZjMxNDg3YjVkMzVmN2E1ZjZkYzIzODlkMTlkNTU5ZTZkMWU1NDg0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMjQ2
LDYgKzI0NiwxMSBAQCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgQ0dSZWN0Jik7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dH
RU9NRVRSWV9UWVBFUykKIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1JlY3QmKTsK
ICNlbmRpZgorICAgIAoraW5saW5lIGludCBhcmVhKGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisg
ICAgcmV0dXJuIHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5o
CmluZGV4IDhmMjBhMGRlNzU1YWJmYzgwOTg4NzhiNTBlODY4YmI5ZmYxNWZlODguLjJlMzQ5ZDU1
Nzc1ODE0NzQwNjVhZjNmYWM2MjQ3MTlmOWM2NmQ2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTE4OSw2ICsxODksMTEgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQogewogICAgIHJl
dHVybiBhLndpZHRoKCkgIT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQoKTsK
IH0KKyAgICAKK2lubGluZSBpbnQgYXJlYShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHJl
dHVybiBzaXplLmFyZWEoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKaW5kZXggMWFjYWJhYTU5
MmM4NmI3NmNlNjJkNzgwNzYwZjI1M2Q1NDQ5MjFlYS4uMjA4YmFjYjkxOGQzNDQ4YWU2YTQ3ZTcz
MjdlZTliMjYxMGNjZTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFJlY3QuaApAQCAtMjQ2LDYgKzI0NiwxMSBAQCBpbmxpbmUgRmxvYXRSZWN0IHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5LCBMYXlvdXRVbml0
CiB7CiAgICAgcmV0dXJuIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeCwgeSwg
d2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwogfQorICAgIAoraW5saW5lIGZs
b2F0IGFyZWEoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKaW5kZXggMDczM2Zh
MmNkZGM5NmRhZmM1MDM2YzhlNjA0NTM4YjU1YWM5NjJmYy4uMzc1Mzc0ODhhMTAxZjU3ODA4MjIz
Nzk3NGVhOTM0MmQzYjZhZWFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFNpemUuaApAQCAtMjAxLDcgKzIwMSwxMiBAQCBpbmxpbmUgRmxvYXRTaXplIGZs
b29yZWRGb3JQYWludGluZyhjb25zdCBMYXlvdXRTaXplJiBzaXplLCBmbG9hdCBwaXhlbFNuYXBw
aW5nRgogICAgIHJldHVybiBGbG9hdFNpemUoc2l6ZSk7CiAjZW5kaWYKIH0KLQorICAgIAoraW5s
aW5lIGZsb2F0IGFyZWEoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKTsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIExheW91dFNpemVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXggY2U1NTViNzIxOTViNDMwNTUyZmI3YjIxYzI3YmMzNTBm
NGVhZDdlOS4uMjI1MzRkZmFlY2UxZGZlZDhhZWZlYzRhOGEyNjVmMTFiMDNlZWY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCkBAIC0xMTUsMTAgKzEx
NSw4IEBAIHVuc2lnbmVkIFJlZ2lvbjo6dG90YWxBcmVhKCkgY29uc3QKICAgICBzaXplX3Qgc2l6
ZSA9IHJlY3RzLnNpemUoKTsKICAgICB1bnNpZ25lZCB0b3RhbEFyZWEgPSAwOwogCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0g
cmVjdHNbaV07Ci0gICAgICAgIHRvdGFsQXJlYSArPSAocmVjdC53aWR0aCgpICogcmVjdC5oZWln
aHQoKSk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAg
ICAgICB0b3RhbEFyZWEgKz0gYXJlYShyZWN0c1tpXSk7CiAKICAgICByZXR1cm4gdG90YWxBcmVh
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cAppbmRleCAyZTkxNzg1YTdiMTIxOTFkY2IwNjIxNTQ3OWZmMGJmZDUwN2QxZDdiLi43ZGRlNTU5
OWEyZGQ2MGJiYTZiOGJiNDA4YjhlMWJmMjQ1YThkMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91CiAgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0ID0gc2hhZG93
ZWRSZWN0LnJlY3QoKTsKIAogICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IHJlY3Qud2lk
dGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiByZWN0LmhlaWdodCgpCi0gICAgICAgIHx8
ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291cmNl
UmVjdC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgeworICAgICAgICB8fCBhcmVh
KHRlbXBsYXRlU2l6ZSkgPiBhcmVhKG1fc291cmNlUmVjdCkpIHsKICAgICAgICAgZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBsYXllclJl
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlCiAgICAgY29uc3QgRmxvYXRSZWN0JiBoUmVjdCA9IGhvbGVSZWN0LnJl
Y3QoKTsKIAogICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IGhSZWN0LndpZHRoKCkgfHwg
dGVtcGxhdGVTaXplLmhlaWdodCgpID4gaFJlY3QuaGVpZ2h0KCkKLSAgICAgICAgfHwgKHRlbXBs
YXRlU2l6ZS53aWR0aCgpICogdGVtcGxhdGVTaXplLmhlaWdodCgpID4gaFJlY3Qud2lkdGgoKSAq
IGhSZWN0LmhlaWdodCgpKSkgeworICAgICAgICB8fCBhcmVhKHRlbXBsYXRlU2l6ZSkgPiBhcmVh
KGhSZWN0KSkgewogICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNz
Q29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
TGF5ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xh
eWVyUG9vbC5tbQppbmRleCAzNTY3Nzk2MDUwNmIxMmFhN2FjMzZjY2IyMjM1OGQ5NmE1OTM3Yjk1
Li44NWY3ZGFlYzQzM2JiYjA5YTg1MDQyNjk2YzljZTgyMWQ4ZmNhZmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvTGF5ZXJQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9MYXllclBvb2wubW0KQEAg
LTQ5LDcgKzQ5LDcgQEAgTGF5ZXJQb29sKiBMYXllclBvb2w6OnNoYXJlZFBvb2woKQogCiB1bnNp
Z25lZCBMYXllclBvb2w6OmJhY2tpbmdTdG9yZUJ5dGVzRm9yU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQogewotICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNDsKKyAg
ICByZXR1cm4gc2l6ZS5hcmVhKCkgKiA0OwogfQogCiBMYXllclBvb2w6OkxheWVyTGlzdCYgTGF5
ZXJQb29sOjpsaXN0T2ZMYXllcnNXaXRoU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDI0YmJiYmM1NjQ3ODU4NGQ3Nzk5MTc4NDZk
YjE0MTg0NTc0MjVmYjkuLjUyNTQxMTU2ZTIwZWE1M2MzMmZjZmE1MDc2YmNiZWI1ZGQ1MDlmZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCkBAIC00ODgsNyArNDg4LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28K
ICAgICAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcjsKLSAgICAgICAgZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIHByZW11bHRpcGxpZWREYXRhLT5kYXRh
KCksIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCAw
KSk7CisgICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoRGF0YSgwLCBwcmVtdWx0aXBsaWVkRGF0YS0+ZGF0YSgpLCA0ICogYXJlYShsb2dpY2FsU2l6
ZSgpKSwgMCkpOwogICAgICAgICBpZiAoIWRhdGFQcm92aWRlcikKICAgICAgICAgICAgIHJldHVy
biAiZGF0YTosIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCBlOGFkNThkMmU4NWM4YTYyYTU0ODc2ZmVmNWNl
NDk1ZTE2MDM1MTY5Li45MTQ2YzNmNGYzYzI0OGJjZWRlOTJiNDg5Y2NjMmMyYjRlOGI0NGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24KICAg
ICBpZiAoKG1fYmFzZVN1YnNhbXBsaW5nID09IDApICYmICFtX2lzUHJvZ3Jlc3NpdmUpIHsKICAg
ICAgICAgSW50U2l6ZSBzdWJzYW1wbGVkU2l6ZSh3LCBoKTsKICAgICAgICAgY29uc3QgaW50IGNN
YXhpbXVtSW1hZ2VTaXplQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAg
ICAgIHdoaWxlICgobV9iYXNlU3Vic2FtcGxpbmcgPCAzKSAmJiBzdWJzYW1wbGVkU2l6ZS53aWR0
aCgpICogc3Vic2FtcGxlZFNpemUuaGVpZ2h0KCkgPiBjTWF4aW11bUltYWdlU2l6ZUJlZm9yZVN1
YnNhbXBsaW5nKSB7CisgICAgICAgIHdoaWxlICgobV9iYXNlU3Vic2FtcGxpbmcgPCAzKSAmJiBz
dWJzYW1wbGVkU2l6ZS5hcmVhKCkgPiBjTWF4aW11bUltYWdlU2l6ZUJlZm9yZVN1YnNhbXBsaW5n
KSB7CiAgICAgICAgICAgICAvLyBXZSBrbm93IHRoZSBzaXplLCBidXQgdGhlIGFjdHVhbCBpbWFn
ZSBpcyB2ZXJ5IGxhcmdlIGFuZCBzaG91bGQgYmUgc3ViLXNhbXBsZWQuCiAgICAgICAgICAgICAv
LyBJbmNyZWFzZSB0aGUgYmFzZSBzdWJzYW1wbGluZyBhbmQgYXNrIGZvciB0aGUgc2l6ZSBhZ2Fp
bi4gSWYgdGhlIGltYWdlIGNhbiBiZSBzdWJzYW1wbGVkLCB0aGUgc2l6ZSB3aWxsIGJlCiAgICAg
ICAgICAgICAvLyBncmVhdGx5IHJlZHVjZWQuIDR4IHN1Yi1zYW1wbGluZyB3aWxsIG1ha2UgdXMg
c3VwcG9ydCB1cCB0byAzMjBNUCAoNU1QICogNF4zKSBpbWFnZXMsIHdoaWNoIHNob3VsZCBiZSBw
bGVudHkuCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90IGluZGV4KQogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZy
YW1lU2l6ZUF0SW5kZXgoaW5kZXgsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikpOwotICAgIHJldHVybiBmcmFtZVNpemUud2lkdGgoKSAqIGZyYW1l
U2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkgKiA0OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDlmZTkxMDE3OGJkZGUzYTI5MzU3ZjBlMzc4ZTUzNDdj
NjUwZTAzMWIuLjkwY2UxZmYxZjc0MjQyYjMzNDNhYjFhZWM5NjhmMGNiNWRlZDEwMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1
cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QK
IAogICAgICAgICBJbnRTaXplIGludGVybmFsU2l6ZSA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmlu
dGVybmFsU2l6ZSgpOwogICAgICAgICBzaXplX3Qgb2xkQ2FjaGVkQnl0ZXMgPSBtX2NhY2hlZEJ5
dGVzOwotICAgICAgICBtX2NhY2hlZEJ5dGVzID0gaW50ZXJuYWxTaXplLndpZHRoKCkgKiBpbnRl
cm5hbFNpemUuaGVpZ2h0KCkgKiA0OworICAgICAgICBtX2NhY2hlZEJ5dGVzID0gaW50ZXJuYWxT
aXplLmFyZWEoKSAqIDQ7CiAKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKHRoaXMsIHNhZmVDYXN0PGlu
dD4obV9jYWNoZWRCeXRlcykgLSBzYWZlQ2FzdDxpbnQ+KG9sZENhY2hlZEJ5dGVzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCAyOTdjZTczM2M5Mjk5YWQ5ZTI0MGJmZTE4MTZhNjA0
MTMyNmM3MWYzLi43YjQyMjdkYmNkOTA0ZGI0NmVhZGE4MjEyNzkwOGVjZTU5YmVjMjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIEZFQ29udm9s
dmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBpZiAoY2xpcFJpZ2h0ID49
IDAgJiYgY2xpcEJvdHRvbSA+PSAwKSB7CiAKLSAgICAgICAgaW50IG9wdGltYWxUaHJlYWROdW1i
ZXIgPSAoYWJzb2x1dGVQYWludFJlY3QoKS53aWR0aCgpICogYWJzb2x1dGVQYWludFJlY3QoKS5o
ZWlnaHQoKSkgLyBzX21pbmltYWxSZWN0RGltZW5zaW9uOworICAgICAgICBpbnQgb3B0aW1hbFRo
cmVhZE51bWJlciA9IGFyZWEoYWJzb2x1dGVQYWludFJlY3QoKSkgLyBzX21pbmltYWxSZWN0RGlt
ZW5zaW9uOwogICAgICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEpIHsKICAgICAgICAg
ICAgIFdURjo6UGFyYWxsZWxKb2JzPEludGVyaW9yUGl4ZWxQYXJhbWV0ZXJzPiBwYXJhbGxlbEpv
YnMoJldlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEludGVyaW9yUGl4ZWxzV29ya2VyLCBv
cHRpbWFsVGhyZWFkTnVtYmVyKTsKICAgICAgICAgICAgIGNvbnN0IGludCBudW1PZlRocmVhZHMg
PSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4
IDMzNjRjMDdmYTQwZGI5MGVmNjNhODJiZjY4NjgxYTlmNWYxYThhNmEuLjUyNWYwZGI0MWVlZGI0
NjVkODM4YTVmYTg3Nzk5ZTdhMjY0MWEyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0z
MjEsNyArMzIxLDcgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHko
VWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQKIHsKICAgICBpbnQgc2Nhbmxp
bmUgPSA0ICogcGFpbnRTaXplLndpZHRoKCk7CiAgICAgaW50IGV4dHJhSGVpZ2h0ID0gMyAqIGtl
cm5lbFNpemVZICogMC41ZjsKLSAgICBpbnQgb3B0aW1hbFRocmVhZE51bWJlciA9IChwYWludFNp
emUud2lkdGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSkgLyAoc19taW5pbWFsUmVjdERpbWVuc2lv
biArIGV4dHJhSGVpZ2h0ICogcGFpbnRTaXplLndpZHRoKCkpOworICAgIGludCBvcHRpbWFsVGhy
ZWFkTnVtYmVyID0gYXJlYShwYWludFNpemUpIC8gKHNfbWluaW1hbFJlY3REaW1lbnNpb24gKyBl
eHRyYUhlaWdodCAqIHBhaW50U2l6ZS53aWR0aCgpKTsKIAogICAgIGlmIChvcHRpbWFsVGhyZWFk
TnVtYmVyID4gMSkgewogICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxQbGF0Zm9ybUFwcGx5UGFy
YW1ldGVycz4gcGFyYWxsZWxKb2JzKCZwbGF0Zm9ybUFwcGx5V29ya2VyLCBvcHRpbWFsVGhyZWFk
TnVtYmVyKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5l
bFNpemUoZmlsdGVyKCksIEZsb2F0UG9pbnQobV9zdGRYLCBtX3N0ZFkpKTsKIAogICAgIEludFNp
emUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRl
VW5pbml0aWFsaXplZChwYWludFNpemUud2lkdGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSAqIDQp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFt
cGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYShwYWludFNpemUpICogNCk7CiAgICAg
VWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXkgPSB0bXBJbWFnZURhdGEuZ2V0KCk7CiAK
ICAgICBwbGF0Zm9ybUFwcGx5KHNyY1BpeGVsQXJyYXksIHRtcFBpeGVsQXJyYXksIGtlcm5lbFNp
emUud2lkdGgoKSwga2VybmVsU2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAppbmRleCA5MTdjOTZhMjE3ZmYxOGZjYTU0NjJjMzE3MTZkOTZlYmIzZTYyNTg3Li5mZDIy
MzhmZDZjMzhkZjQ0YjU2NmM2MDc5ZmRmZmEwMzk2NDhkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YShtX3NlZWQsIHJvdW5kZWRJbnRT
aXplKGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLnNpemUoKSkpOwogICAgIGluaXRQYWludChw
YWludGluZ0RhdGEpOwogCi0gICAgaW50IG9wdGltYWxUaHJlYWROdW1iZXIgPSAoYWJzb2x1dGVQ
YWludFJlY3QoKS53aWR0aCgpICogYWJzb2x1dGVQYWludFJlY3QoKS5oZWlnaHQoKSkgLyBzX21p
bmltYWxSZWN0RGltZW5zaW9uOworICAgIGludCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gYXJlYShh
YnNvbHV0ZVBhaW50UmVjdCgpKSAvIHNfbWluaW1hbFJlY3REaW1lbnNpb247CiAgICAgaWYgKG9w
dGltYWxUaHJlYWROdW1iZXIgPiAxKSB7CiAgICAgICAgIC8vIEluaXRpYWxpemUgcGFyYWxsZWwg
am9icwogICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxGaWxsUmVnaW9uUGFyYW1ldGVycz4gcGFy
YWxsZWxKb2JzKCZXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb25Xb3JrZXIsIG9wdGlt
YWxUaHJlYWROdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGQ4NGJjYTI2MDRiMjcwMmEx
MDliYWY5MmFiOTE5YjEwODA3ZjhmY2IuLmQ2NzI1YjI5YmM1MGViOTFhMWRjZWM4Mzk0NzhmNjZh
Zjk3NGY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZUJ1
ZmZlciogRmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIoKQogICAgIHNpemVf
dCBvcmlnaW5bM10gPSB7IDAsIDAsIDAgfTsKICAgICBzaXplX3QgcmVnaW9uWzNdID0geyBtX2Fi
c29sdXRlUGFpbnRSZWN0LndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCksIDEg
fTsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZGVzdGluYXRpb25QaXhlbEFycmF5
ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkg
KiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBkZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlKGFyZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0KTsKIAogICAgIGlmIChjb250ZXh0LT5p
c0ZhaWxlZChjbEZpbmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSkpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpvcGVu
Q0xJbWFnZVRvSW1hZ2VCdWZmZXIoKQogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmls
dGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKHJlY3QpKTsKLSAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKGFyZWEocmVjdCkgKiA0KTsKICAgICBjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoaW1hZ2VE
YXRhLmdldCgpLCByZWN0KTsKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0KQEAg
LTMxNiw3ICszMTYsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZl
Y3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcgogUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJ
bnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7Ci0g
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJh
eTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7
CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhKHJlY3QpICogNCk7CiAgICAgY29weVByZW11
bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwogICAgIHJldHVybiBpbWFnZURh
dGEucmVsZWFzZSgpOwogfQpAQCAtMzc1LDEwICszNzUsMTAgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNv
bnN0IEkKICAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVm
ZmVyUmVzdWx0LT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBt
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChtX2Fic29sdXRlUGFpbnRSZWN0KSk7Ci0gICAgICAg
ICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBh
aW50UmVjdC5oZWlnaHQoKSAqIDQpOworICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFyZWEobV9hYnNv
bHV0ZVBhaW50UmVjdCkgKiA0KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHNvdXJjZUNv
bXBvbmVudCA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbkNvbXBvbmVudCA9IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQtPmRhdGEoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGVuZCA9IHNvdXJj
ZUNvbXBvbmVudCArIChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFp
bnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBlbmQgPSBz
b3VyY2VDb21wb25lbnQgKyBhcmVhKG1fYWJzb2x1dGVQYWludFJlY3QpICogNDsKICAgICAgICAg
ICAgIHdoaWxlIChzb3VyY2VDb21wb25lbnQgPCBlbmQpIHsKICAgICAgICAgICAgICAgICBpbnQg
YWxwaGEgPSBzb3VyY2VDb21wb25lbnRbM107CiAgICAgICAgICAgICAgICAgaWYgKGFscGhhKSB7
CkBAIC00MDksMTAgKzQwOSwxMCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxp
ZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0CiAgICAgICAgICAg
ICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IG1faW1hZ2VCdWZmZXJSZXN1bHQtPmdldFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpc0ZpbHRl
clNpemVWYWxpZChtX2Fic29sdXRlUGFpbnRSZWN0KSk7Ci0gICAgICAgICAgICBtX3ByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0
KCkgKiA0KTsKKyAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYShtX2Fic29sdXRlUGFpbnRSZWN0
KSAqIDQpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQ29tcG9uZW50ID0gbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciogZGVzdGluYXRpb25Db21wb25lbnQgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0
YSgpOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZW5kID0gc291cmNlQ29tcG9uZW50ICsg
KG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0
KCkgKiA0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGVuZCA9IHNvdXJjZUNvbXBvbmVu
dCArIGFyZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0OwogICAgICAgICAgICAgd2hpbGUgKHNv
dXJjZUNvbXBvbmVudCA8IGVuZCkgewogICAgICAgICAgICAgICAgIGludCBhbHBoYSA9IHNvdXJj
ZUNvbXBvbmVudFszXTsKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkNvbXBvbmVudFswXSA9
IHN0YXRpY19jYXN0PGludD4oc291cmNlQ29tcG9uZW50WzBdKSAqIGFscGhhIC8gMjU1OwpAQCAt
NDQ4LDcgKzQ0OCw3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVu
bXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKG1fYWJzb2x1dGVQYWlu
dFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoYXJlYShtX2Fic29sdXRlUGFpbnRSZWN0KSAqIDQpOwogICAgIHJldHVybiBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCkBAIC00NjAsNyArNDYwLDcgQEAgVWlu
dDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0KCkKIAogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBt
X2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhKG1f
YWJzb2x1dGVQYWludFJlY3QpICogNCk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKaW5kZXggMmI5NmNiNTk0Y2JlNzNlNTZkMTY3
ZGFkMGM5NmNmNGIwMmI1ODhhZC4uNDg3NjE4NzE3ODM1ZjFlNDlmNDdiYzhhNzY2N2RkMjVkMWY1
NjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9EcmF3aW5nQnVmZmVyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgRHJhd2luZ0J1ZmZl
cjo6Y2xlYXIoKQogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBp
ZiAoIW1fc2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc19jdXJyZW50UmVzb3VyY2VVc2VQaXhl
bHMgLT0gbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCk7CisgICAgICAgIHNfY3VycmVu
dFJlc291cmNlVXNlUGl4ZWxzIC09IG1fc2l6ZS5hcmVhKCk7CiAgICAgICAgIG1fc2l6ZSA9IElu
dFNpemUoKTsKICAgICB9CiAKQEAgLTI2OCwxMCArMjY4LDEwIEBAIGJvb2wgRHJhd2luZ0J1ZmZl
cjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGludCBwaXhlbERlbHRhID0gbmV3U2l6ZS53aWR0aCgpICogbmV3U2l6ZS5o
ZWlnaHQoKTsKKyAgICBpbnQgcGl4ZWxEZWx0YSA9IG5ld1NpemUuYXJlYSgpOwogICAgIGludCBv
bGRTaXplID0gMDsKICAgICBpZiAoIW1fc2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgb2xkU2l6
ZSA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpOworICAgICAgICBvbGRTaXplID0g
bV9zaXplLmFyZWEoKTsKICAgICAgICAgcGl4ZWxEZWx0YSAtPSBvbGRTaXplOwogICAgIH0KIApA
QCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6
ZSYgbmV3U2l6ZSkKICAgICAgICAgICAgICAgICBjbGVhcigpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBpeGVsRGVsdGEgPSBhZGp1
c3RlZFNpemUud2lkdGgoKSAqIGFkanVzdGVkU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgICAgIHBp
eGVsRGVsdGEgPSBhZGp1c3RlZFNpemUuYXJlYSgpOwogICAgICAgICAgICAgcGl4ZWxEZWx0YSAt
PSBvbGRTaXplOwogICAgICAgICB9CiAgICAgIH0KQEAgLTM2NSw3ICszNjUsNyBAQCBib29sIERy
YXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKICAgICAgICAgfSB3
aGlsZSAoIWFkanVzdGVkU2l6ZS5pc0VtcHR5KCkpOwogCi0gICAgICAgIHBpeGVsRGVsdGEgPSBt
X3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcGl4ZWxEZWx0YSA9IG1f
c2l6ZS5hcmVhKCk7CiAgICAgICAgIHBpeGVsRGVsdGEgLT0gb2xkU2l6ZTsKICAgICAgICAgc19j
dXJyZW50UmVzb3VyY2VVc2VQaXhlbHMgKz0gcGl4ZWxEZWx0YTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tCmluZGV4IDY1MWIwNjkyYzNhY2YwM2U1
ZDQ5NDM4OGYzOGJkNmY4MGM1MzYxNmMuLjc0ZTIzYzBlMmVjMTQxMTczOGJjODMxY2QxYjExY2Uw
MTU4MWE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlR3JpZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdy
aWQubW0KQEAgLTQwNiw3ICs0MDYsNyBAQCBJbnRSZWN0IExlZ2FjeVRpbGVHcmlkOjphZGp1c3RD
b3ZlclJlY3RGb3JQYWdlQm91bmRzKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgYWRq
dXN0ZWRSZWN0ID0gaW50ZXJzZWN0aW9uKGJvdW5kcywgYWRqdXN0ZWRSZWN0KTsKICAgICBpZiAo
YWRqdXN0ZWRSZWN0ID09IHJlY3QgfHwgYWRqdXN0ZWRSZWN0LmlzRW1wdHkoKSB8fCBzaG91bGRV
c2VNaW5pbWFsVGlsZUNvdmVyYWdlKCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RlZFJlY3Q7Ci0g
ICAgaW50IHBpeGVscyA9IGFkanVzdGVkUmVjdC53aWR0aCgpICogYWRqdXN0ZWRSZWN0LmhlaWdo
dCgpOworICAgIGludCBwaXhlbHMgPSBhZGp1c3RlZFJlY3QuYXJlYSgpOwogICAgIGlmIChhZGp1
c3RlZFJlY3Qud2lkdGgoKSAhPSByZWN0LndpZHRoKCkpCiAgICAgICAgIGFkanVzdGVkUmVjdC5p
bmZsYXRlWSgocGl4ZWxzIC8gYWRqdXN0ZWRSZWN0LndpZHRoKCkgLSBhZGp1c3RlZFJlY3QuaGVp
Z2h0KCkpIC8gMik7CiAgICAgZWxzZSBpZiAoYWRqdXN0ZWRSZWN0LmhlaWdodCgpICE9IHJlY3Qu
aGVpZ2h0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyUG9vbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
TGF5ZXJQb29sLm1tCmluZGV4IGU2ZDk1NzQ0ZmU0ZTY0YTY4MzMxYjBiMDAzOTM0OWI3NzE1ZTMw
YTEuLjNjNWYwOGI1OTg0ZGJlNGVmODk2ZjM4Njk0Y2VkZTUyY2JkMWQzNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCkBAIC01
NSw3ICs1NSw3IEBAIExlZ2FjeVRpbGVMYXllclBvb2wqIExlZ2FjeVRpbGVMYXllclBvb2w6OnNo
YXJlZFBvb2woKQogCiB1bnNpZ25lZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpieXRlc0JhY2tpbmdM
YXllcldpdGhQaXhlbFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgcmV0dXJuIHNpemUuYXJlYSgpICog
NDsKIH0KIAogTGVnYWN5VGlsZUxheWVyUG9vbDo6TGF5ZXJMaXN0JiBMZWdhY3lUaWxlTGF5ZXJQ
b29sOjpsaXN0T2ZMYXllcnNXaXRoU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmlu
ZGV4IDU2MzgzNDY2ZWQ1ODZlYzM5NTBjZjBjYThlNmEzNDA1YjExN2IyZWIuLmZkNTA4YTRkNGEx
MWI2MjU3Yzk2NWRjODA2M2E4ZTY0ZDVlMDk2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hv
bGQsIGMKICAgICAgICAgaW50IG1pbkJ1ZmZlclkgPSBzdGQ6Om1heCgwLCBtYXJnaW5SZWN0Lnko
KSAtIGltYWdlUmVjdC55KCkpOwogICAgICAgICBpbnQgbWF4QnVmZmVyWSA9IHN0ZDo6bWluKGlt
YWdlUmVjdC5oZWlnaHQoKSwgbWFyZ2luUmVjdC5tYXhZKCkgLSBpbWFnZVJlY3QueSgpKTsKIAot
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlUmVjdC53aWR0aCgpICogaW1h
Z2VSZWN0LmhlaWdodCgpICogNCkgPT0gcGl4ZWxBcnJheUxlbmd0aCkgeworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZWEoaW1hZ2VSZWN0KSAqIDQpID09IHBpeGVsQXJyYXlM
ZW5ndGgpIHsKICAgICAgICAgICAgIGZvciAoaW50IHkgPSBtaW5CdWZmZXJZOyB5IDwgbWF4QnVm
ZmVyWTsgKyt5KSB7CiAgICAgICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0xOwogICAgICAgICAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VSZWN0LndpZHRoKCk7ICsreCwgcGl4ZWxB
cnJheU9mZnNldCArPSA0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDg3YzhlZTU3NGMxYTMwNzc5
MDk5ZDRhYzA1MzE1YTQxMzdkMTA0ODguLjJlNThmODgxZjcyYzE4NGRhZTFmOGE2OTA1ZDdkMWFi
NjZjM2ZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6Zml0c0luTWF4aW11bUltYWdlU2l6ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIEZsb2EKIHsKICAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZShzaXplKTsKICAgICBz
Y2FsZWRTaXplLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKLSAgICBmbG9h
dCBzY2FsZWRBcmVhID0gc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKTsK
KyAgICBmbG9hdCBzY2FsZWRBcmVhID0gYXJlYShzY2FsZWRTaXplKTsKIAogICAgIGlmIChzY2Fs
ZWRBcmVhIDw9IEZpbHRlckVmZmVjdDo6bWF4RmlsdGVyQXJlYSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229287</attachid>
            <date>2014-04-14 10:19:09 -0700</date>
            <delta_ts>2014-04-16 10:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131606-20140414101848.patch</filename>
            <type>text/plain</type>
            <size>35026</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU5MDU3YTZjNDZlY2I0
Y2ZkYzAwM2FhMTI3MTcyYjNmN2JkYmVmNS4uODFjZmJiMjJmNmM0NGVhZTBmNDdkMDYxYmVlZDg1
YWZkYTY1NmNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE0LTA0LTEzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHdpZHRoKmhlaWdo
dCB3aXRoIGNhbGxzIHRvIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMTYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhcmVhKCkgaGVscGVycyB0aGF0IGNhbGN1bGF0ZSB3aWR0aCAqIGhl
aWdodCBmb3IgY29tbW9uCisgICAgICAgIHJlY3Rhbmd1bGFyIGNsYXNzZXMuIFVwZGF0ZSB0aGUg
cGxhY2VzIHRocm91Z2ggV2ViQ29yZSB0aGF0CisgICAgICAgIHVzZSB3aWR0aCAqIGhlaWdodCB0
byB1c2UgZWl0aGVyIHRoZXNlIG5ldyBoZWxwZXJzLCBvciB0aGUKKyAgICAgICAgZXhpc3Rpbmcg
SW50UmVjdDo6YXJlYSgpIG1lbWJlciBmdW5jdGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0RlbGV0YWJsZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OkltYWdlRGF0YSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdCk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6YmV0dGVyQXBwcm94aW1hdGVOb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZWEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6YXJlYSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YXJl
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6YXJlYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6dG90YWxBcmVhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyUG9vbC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUG9vbDo6YmFja2luZ1N0b3JlQnl0ZXNGb3JTaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVH
YXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVVubXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y29weVByZW11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
OjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUdyaWQ6OmFkanVzdENvdmVyUmVjdEZvclBhZ2VCb3Vu
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6Ynl0ZXNCYWNraW5nTGF5ZXJXaXRo
UGl4ZWxTaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6Zml0c0luTWF4aW11bUltYWdlU2l6ZSk6CisKIDIwMTQt
MDQtMTQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBPcHRpbWl6
ZSBDYW52YXMgZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sIERlc3RpbmF0aW9uSW4s
IFNvdXJjZU91dCwgYW5kIERlc3RpbmF0aW9uQXRvcCB1c2luZyB0cmFuc3BhcmVuY3lMYXllci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3Bw
CmluZGV4IGZiMjg3N2M4ZjAzZTMxNDU1ZDQyNjliY2YxZjdkMTNmMjgyOGJiZTQuLmE0Y2M0ZmJk
Mzk5Nzk1NWFlYWMzNjljNjc2MDVlN2Y3OTcxZjg0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCBz
dGF0aWMgYm9vbCBpc0RlbGV0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICBpZiAo
Ym9yZGVyQm91bmRpbmdCb3gud2lkdGgoKSA8IG1pbmltdW1XaWR0aCB8fCBib3JkZXJCb3VuZGlu
Z0JveC5oZWlnaHQoKSA8IG1pbmltdW1IZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICgoYm9yZGVyQm91bmRpbmdCb3gud2lkdGgoKSAqIGJvcmRlckJvdW5kaW5nQm94Lmhl
aWdodCgpKSA8IG1pbmltdW1BcmVhKQorICAgIGlmIChhcmVhKGJvcmRlckJvdW5kaW5nQm94KSA8
IG1pbmltdW1BcmVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYm94LT5pc1Rh
YmxlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDc1
MTIxMjMxZWNmYzM4NTVlYzhlODJhMWNlYWZkMDE1OTUxMDI0MDcuLjY2NTI5NGFiMjFhYzMwZTYw
MzdkMzc0YjgwMDM5MjVkNTkyZTIzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6
c2hvdWxkQWNjZWxlcmF0ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBEbyBub3QgdXNlIGFjY2VsZXJhdGlvbiBmb3Igc21hbGwgY2Fu
dmFzLgotICAgIGlmIChzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpIDwgc2V0dGluZ3MtPm1p
bmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZSgpKQorICAgIGlmIChzaXplLmFyZWEoKSA8IHNl
dHRpbmdzLT5taW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlmICghZGV2aWNl
U2l6ZS5pc0V4cHJlc3NpYmxlQXNJbnRTaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChkZXZpY2VTaXplLndpZHRoKCkgKiBkZXZpY2VTaXplLmhlaWdodCgpID4gTWF4Q2FudmFzQXJl
YSkKKyAgICBpZiAoYXJlYShkZXZpY2VTaXplKSA+IE1heENhbnZhc0FyZWEpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEludFNpemUgYnVmZmVyU2l6ZShkZXZpY2VTaXplLndpZHRoKCksIGRldmlj
ZVNpemUuaGVpZ2h0KCkpOwpAQCAtNTkxLDcgKzU5MSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1l
bnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpKTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT52bSgpKTsKLSAgICBzaXplX3QgbnVtQnl0ZXMgPSA0ICogbV9pbWFnZUJ1
ZmZlci0+aW50ZXJuYWxTaXplKCkud2lkdGgoKSAqIG1faW1hZ2VCdWZmZXItPmludGVybmFsU2l6
ZSgpLmhlaWdodCgpOworICAgIHNpemVfdCBudW1CeXRlcyA9IDQgKiBtX2ltYWdlQnVmZmVyLT5p
bnRlcm5hbFNpemUoKS5hcmVhKCk7CiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgp
LmhlYXAucmVwb3J0RXh0cmFNZW1vcnlDb3N0KG51bUJ5dGVzKTsKIAogI2lmIFVTRShJT1NVUkZB
Q0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCBkODBjYTQ0NTkwMWRiNWIwNzAwNTE5NmMwNzBkOGU1ZGMxMzFkZDg4Li4xM2ZlOTZmY2Y2OGIw
MjU5OTFkMThlMjZkZjY1NDU0ZDAwNWMxMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTY5OSwyMiArNjk5LDIwIEBAIHZvaWQgSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0
IFVSTCYgdXJsKQogCiAgICAgYXV0byYgcmVuZGVyZXIgPSB0b1JlbmRlckVtYmVkZGVkT2JqZWN0
KCp0aGlzLT5yZW5kZXJlcigpKTsKICAgICBMYXlvdXRSZWN0IGNvbnRlbnRSZWN0ID0gcmVuZGVy
ZXIuY29udGVudEJveFJlY3QoKTsKLSAgICBpbnQgY29udGVudFdpZHRoID0gY29udGVudFJlY3Qu
d2lkdGgoKTsKLSAgICBpbnQgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodCgpOwog
CiAgICAgaWYgKGluTWFpbkZyYW1lKSB7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIu
c3R5bGUoKTsKICAgICAgICAgYm9vbCBpc0Z1bGxQYWdlID0gaXMxMDBQZXJjZW50KHN0eWxlLndp
ZHRoKCkpICYmIGlzMTAwUGVyY2VudChzdHlsZS5oZWlnaHQoKSk7Ci0gICAgICAgIEludFNpemUg
dmlzaWJsZVZpZXdTaXplID0gZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCktPnZpc2libGVTaXpl
KCk7Ci0gICAgICAgIGZsb2F0IGNvbnRlbnRBcmVhID0gY29udGVudFdpZHRoICogY29udGVudEhl
aWdodDsKLSAgICAgICAgZmxvYXQgdmlzaWJsZUFyZWEgPSB2aXNpYmxlVmlld1NpemUud2lkdGgo
KSAqIHZpc2libGVWaWV3U2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgaWYgKGlzRnVsbFBhZ2UgJiYg
Y29udGVudEFyZWEgPiB2aXNpYmxlQXJlYSAqIHNpemluZ0Z1bGxQYWdlQXJlYVJhdGlvVGhyZXNo
b2xkKSB7CisgICAgICAgIGlmIChpc0Z1bGxQYWdlICYmIGFyZWEoY29udGVudFJlY3QpID4gYXJl
YShkb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZVNpemUoKSkgKiBzaXppbmdGdWxs
UGFnZUFyZWFSYXRpb1RocmVzaG9sZCkgewogICAgICAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQ
bHVnLWluIGlzIHRvcCBsZXZlbCBmdWxsIHBhZ2UsIHNldCB0byBwbGF5IiwgdGhpcyk7CiAgICAg
ICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCisgICAgaW50IGNvbnRlbnRXaWR0aCA9IGNvbnRl
bnRSZWN0LndpZHRoKCk7CisgICAgaW50IGNvbnRlbnRIZWlnaHQgPSBjb250ZW50UmVjdC5oZWln
aHQoKTsKKyAgICAKICAgICBpZiAoY29udGVudFdpZHRoIDw9IHNpemluZ1RpbnlEaW1lbnNpb25U
aHJlc2hvbGQgfHwgY29udGVudEhlaWdodCA8PSBzaXppbmdUaW55RGltZW5zaW9uVGhyZXNob2xk
KSB7CiAgICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyB2ZXJ5IHNtYWxsICVkeCVk
LCBzZXQgdG8gcGxheSIsIHRoaXMsIGNvbnRlbnRXaWR0aCwgY29udGVudEhlaWdodCk7CiAgICAg
ICAgIG1fc2l6ZVdoZW5TbmFwc2hvdHRlZCA9IEludFNpemUoY29udGVudFdpZHRoLCBjb250ZW50
SGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCA3OTQwZjQ0NjViZWY2MGFj
ZDRhNDZmMWE4ZTc0ZDMwZmQwOTY1ZmJhLi4zNThjMGQ3NDE2MzY0MWE4Yzk1NTRhYzRkODMwNmE4
MmJiM2EzZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC0xMTEsNyArMTExLDcg
QEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGJ5dGVBcnJheSwKIAogSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9kYXRhKFVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0
KCkgKiA0KSkKKyAgICAsIG1fZGF0YShVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFs
aXplZChzaXplLmFyZWEoKSAqIDQpKQogewogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgSW1hZ2VE
YXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gYnl0ZUFycmEKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kYXRhKGJ5dGVB
cnJheSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQpIDw9IG1fZGF0YS0+
bGVuZ3RoKCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzaXplLmFyZWEoKSAqIDQpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA5NmU5MDVmNGQxNjdiNzliZTNkZjA5NGRl
NmUwZWZkZTI1YmJhZTRkLi4zMDlhY2Q2NWNkNTEwZTQ4ZjgwMzczZTc5ZmRiNjY0ZTJlNjQ5ODI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTczMyw3ICs3MzMsNyBAQCBpbmxpbmUgdm9p
ZCBGcmFtZVZpZXc6OmluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50KGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1faXNWaXN1YWxseU5vbkVtcHR5KQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV92aXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCArPSBzaXplLndpZHRoKCkg
KiBzaXplLmhlaWdodCgpOworICAgIG1fdmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQgKz0gc2l6
ZS5hcmVhKCk7CiAgICAgaWYgKG1fdmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQgPD0gdmlzdWFs
UGl4ZWxUaHJlc2hvbGQpCiAgICAgICAgIHJldHVybjsKICAgICB1cGRhdGVJc1Zpc3VhbGx5Tm9u
RW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDg1MTgxODc4MzU1YmIxNzVkMzNkNTUyZWZi
OWY0OGNlNmY1MGE3MDEuLjZiNTRkYjJkNDc0NWM4ZWE4ZWFkMGIyYmFiMjRlODdjOWY5N2ZmMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTQwNyw3ICsxNDA3LDcgQEAgdm9pZCBQYWdlOjphZGRS
ZWxldmFudFJlcGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgb2IKIAogICAgIGZsb2F0IHRvcFBhaW50ZWRBcmVhID0gbV90b3BSZWxldmFudFBhaW50
ZWRSZWdpb24udG90YWxBcmVhKCk7CiAgICAgZmxvYXQgYm90dG9tUGFpbnRlZEFyZWEgPSBtX2Jv
dHRvbVJlbGV2YW50UGFpbnRlZFJlZ2lvbi50b3RhbEFyZWEoKTsKLSAgICBmbG9hdCB2aWV3QXJl
YSA9IHJlbGV2YW50UmVjdC53aWR0aCgpICogcmVsZXZhbnRSZWN0LmhlaWdodCgpOworICAgIGZs
b2F0IHZpZXdBcmVhID0gYXJlYShyZWxldmFudFJlY3QpOwogCiAgICAgZmxvYXQgcmF0aW9UaGF0
SXNQYWludGVkT25Ub3AgPSB0b3BQYWludGVkQXJlYSAvIHZpZXdBcmVhOwogICAgIGZsb2F0IHJh
dGlvVGhhdElzUGFpbnRlZE9uQm90dG9tID0gYm90dG9tUGFpbnRlZEFyZWEgLyB2aWV3QXJlYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggNGIwMzdkOWJlNDZlZDViNzNkYWE5
YjFmNjUxYzQ4NThlMGI3MTc4My4uODg2ZmI4YmMyZTA0ZDgzZDJlNzQ4YzA2MjNhOTQwOWIyYTY3
NGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTM4MSw3ICszODEsNyBA
QCB2b2lkIEZyYW1lOjpiZXR0ZXJBcHByb3hpbWF0ZU5vZGUoY29uc3QgSW50UG9pbnQmIHRlc3RQ
b2ludCwgTm9kZVF1YWxpZmllciBub2RlUQogICAgICAgICBJbnRSZWN0IGJlc3RJbnRlcnNlY3Qg
PSBpbnRlcnNlY3Rpb24odGVzdFJlY3QsIGJlc3RSZWN0KTsKICAgICAgICAgSW50UmVjdCBjYW5k
aWRhdGVJbnRlcnNlY3QgPSBpbnRlcnNlY3Rpb24odGVzdFJlY3QsIGNhbmRpZGF0ZVJlY3QpOwog
ICAgICAgICAvLyBpZiB0aGUgY2FuZGlkYXRlIGludGVyc2VjdGlvbiBpcyBzbWFsbGVyIHRoYW4g
dGhlIGN1cnJlbnQgYmVzdCBpbnRlcnNlY3Rpb24sIGJhaWwuCi0gICAgICAgIGlmIChjYW5kaWRh
dGVJbnRlcnNlY3Qud2lkdGgoKSAqIGNhbmRpZGF0ZUludGVyc2VjdC5oZWlnaHQoKSA8PSBiZXN0
SW50ZXJzZWN0LndpZHRoKCkgKiBiZXN0SW50ZXJzZWN0LmhlaWdodCgpKQorICAgICAgICBpZiAo
Y2FuZGlkYXRlSW50ZXJzZWN0LmFyZWEoKSA8PSBiZXN0SW50ZXJzZWN0LmFyZWEoKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRSZWN0LmgKaW5kZXggYWRmODljMGFhZjkzOGExZGZhNTQ5NmY5MTY1ZjY1MjVmYjFh
ZDc1Mi4uNWIxYzM1ZTVkOWQwZWVjZjFkZTAwNzI3NzYyNzczMjRjNjgzOWIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKQEAgLTI0NSw2ICsyNDUs
MTEgQEAgaW5saW5lIGJvb2wgRmxvYXRSZWN0Ojppc0luZmluaXRlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gKnRoaXMgPT0gaW5maW5pdGVSZWN0KCk7CiB9CisgICAgCitpbmxpbmUgZmxvYXQgYXJl
YShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgcmV0dXJuIHJlY3Qud2lkdGgoKSAqIHJl
Y3QuaGVpZ2h0KCk7Cit9CiAKIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaApp
bmRleCA3M2NjMGZlYThkNGQ1OTI0Y2ExZTQ0ZGY5MmU4Y2UyNmIwNmRlMWRlLi45ZGI1Y2E3MTc2
NGJkNTBkMzA2YTE1Mzk0NjgyNTg3NGZkYjI3NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaApAQCAtMTkyLDYgKzE5MiwxMSBAQCBpbmxpbmUgSW50
UG9pbnQgZmxvb3JlZEludFBvaW50KGNvbnN0IEZsb2F0U2l6ZSYgcCkKIHsKICAgICByZXR1cm4g
SW50UG9pbnQoY2xhbXBUb0ludGVnZXIoZmxvb3JmKHAud2lkdGgoKSkpLCBjbGFtcFRvSW50ZWdl
cihmbG9vcmYocC5oZWlnaHQoKSkpKTsKIH0KKyAgICAKK2lubGluZSBmbG9hdCBhcmVhKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWln
aHQoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNmY3NTVlMTUwMGNmZjUwMDJjZDY3MjQ4ODQ3
MTViZjQ5ZmRmMjA3Yi4uN2ZlMDZjZWRhMjQ5MTU4ZDI5ZDA2MTUyN2FkNGJhYzUwMTI1MzY3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTU5LDgg
KzE1OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgLy8gbGFyZ2VyIHRoYW4gdGhl
IG9yaWdpbmFsIHRpbGUgaWYgdXNlciB6b29tcyBpbiBlbm91Z2guCiAgICAgY29uc3QgZmxvYXQg
bWF4UGF0dGVyblRpbGVQaXhlbHMgPSA1MTIgKiA1MTI7CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkVGlsZVNpemUgPSBjdHh0LT5nZXRDVE0oKS5tYXBSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIHNjYWxlZFRpbGVTaXplKSk7Ci0gICAgZmxvYXQgdHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVs
cyA9IHRyYW5zZm9ybWVkVGlsZVNpemUud2lkdGgoKSAqIHRyYW5zZm9ybWVkVGlsZVNpemUuaGVp
Z2h0KCk7Ci0gICAgaWYgKHRyYW5zZm9ybWVkVGlsZVNpemVQaXhlbHMgPiBtYXhQYXR0ZXJuVGls
ZVBpeGVscykgeworICAgIGlmIChhcmVhKHRyYW5zZm9ybWVkVGlsZVNpemUpID4gbWF4UGF0dGVy
blRpbGVQaXhlbHMpIHsKICAgICAgICAgZmxvYXQgZnJvbVkgPSAoZGVzdFJlY3QueSgpIC0gb25l
VGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpOwogICAgICAgICBmbG9hdCB0b1kgPSBvbmVU
aWxlUmVjdC55KCk7CiAgICAgICAgIHdoaWxlICh0b1kgPCBDR1JlY3RHZXRNYXhZKGRlc3RSZWN0
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCmluZGV4IGVi
MmUzMWI5Yzc1MjVhMTczYmM0NTQ1NTExZGQ5NzBiOWZjOTViMzAuLmYzMTQ4N2I1ZDM1ZjdhNWY2
ZGMyMzg5ZDE5ZDU1OWU2ZDFlNTQ4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmgKQEAgLTI0Niw2ICsyNDYsMTEgQEAgSW50UmVjdCBlbmNsb3NpbmdJbnRS
ZWN0KGNvbnN0IENHUmVjdCYpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoTlNHRU9N
RVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCiBJbnRSZWN0IGVuY2xvc2luZ0lu
dFJlY3QoY29uc3QgTlNSZWN0Jik7CiAjZW5kaWYKKyAgICAKK2lubGluZSBpbnQgYXJlYShjb25z
dCBJbnRSZWN0JiByZWN0KQoreworICAgIHJldHVybiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdo
dCgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRleCA4ZjIwYTBkZTc1NWFiZmM4MDk4ODc4YjUwZTg2
OGJiOWZmMTVmZTg4Li4yZTM0OWQ1NTc3NTgxNDc0MDY1YWYzZmFjNjI0NzE5ZjljNjZkNjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCkBAIC0xODksNiAr
MTg5LDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50U2l6ZSYgYSwgY29uc3Qg
SW50U2l6ZSYgYikKIHsKICAgICByZXR1cm4gYS53aWR0aCgpICE9IGIud2lkdGgoKSB8fCBhLmhl
aWdodCgpICE9IGIuaGVpZ2h0KCk7CiB9CisgICAgCitpbmxpbmUgaW50IGFyZWEoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gc2l6ZS5hcmVhKCk7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0
UmVjdC5oCmluZGV4IDFhY2FiYWE1OTJjODZiNzZjZTYyZDc4MDc2MGYyNTNkNTQ0OTIxZWEuLjIw
OGJhY2I5MThkMzQ0OGFlNmE0N2U3MzI3ZWU5YjI2MTBjY2UyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTI0Niw2ICsyNDYsMTEgQEAg
aW5saW5lIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRVbml0IHgsIExh
eW91dFVuaXQgeSwgTGF5b3V0VW5pdAogewogICAgIHJldHVybiBwaXhlbFNuYXBwZWRGb3JQYWlu
dGluZyhMYXlvdXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBwaXhlbFNuYXBwaW5nRmFjdG9y
KTsKIH0KKyAgICAKK2lubGluZSBmbG9hdCBhcmVhKGNvbnN0IExheW91dFJlY3QmIHJlY3QpCit7
CisgICAgcmV0dXJuIHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5
b3V0U2l6ZS5oCmluZGV4IDA3MzNmYTJjZGRjOTZkYWZjNTAzNmM4ZTYwNDUzOGI1NWFjOTYyZmMu
LjM3NTM3NDg4YTEwMWY1NzgwODIyMzc5NzRlYTkzNDJkM2I2YWVhZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKQEAgLTIwMSw3ICsyMDEsMTIg
QEAgaW5saW5lIEZsb2F0U2l6ZSBmbG9vcmVkRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSwgZmxvYXQgcGl4ZWxTbmFwcGluZ0YKICAgICByZXR1cm4gRmxvYXRTaXplKHNpemUpOwog
I2VuZGlmCiB9Ci0KKyAgICAKK2lubGluZSBmbG9hdCBhcmVhKGNvbnN0IExheW91dFNpemUmIHNp
emUpCit7CisgICAgcmV0dXJuIHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCk7Cit9CisgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBMYXlvdXRTaXplX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4IGNlNTU1YjcyMTk1
YjQzMDU1MmZiN2IyMWMyN2JjMzUwZjRlYWQ3ZTkuLjIyNTM0ZGZhZWNlMWRmZWQ4YWVmZWM0YThh
MjY1ZjExYjAzZWVmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmNwcApAQCAtMTE1LDEwICsxMTUsOCBAQCB1bnNpZ25lZCBSZWdpb246OnRvdGFsQXJlYSgp
IGNvbnN0CiAgICAgc2l6ZV90IHNpemUgPSByZWN0cy5zaXplKCk7CiAgICAgdW5zaWduZWQgdG90
YWxBcmVhID0gMDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIEludFJlY3QgcmVjdCA9IHJlY3RzW2ldOwotICAgICAgICB0b3RhbEFyZWEgKz0gKHJl
Y3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkpOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgdG90YWxBcmVhICs9IGFyZWEocmVjdHNbaV0pOwog
CiAgICAgcmV0dXJuIHRvdGFsQXJlYTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggMmU5MTc4NWE3YjEyMTkxZGNiMDYyMTU0Nzlm
ZjBiZmQ1MDdkMWQ3Yi4uN2RkZTU1OTlhMmRkNjBiYmE2YjhiYjQwOGI4ZTFiZjI0NWE4ZDE1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
QEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJvdQogICAgIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCA9IHNoYWRvd2VkUmVjdC5yZWN0KCk7CiAKICAgICBpZiAodGVtcGxhdGVT
aXplLndpZHRoKCkgPiByZWN0LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhlaWdodCgpID4gcmVj
dC5oZWlnaHQoKQotICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkgPiBtX3NvdXJjZVJlY3Qud2lkdGgoKSAqIG1fc291cmNlUmVjdC5oZWlnaHQo
KSkpIHsKKyAgICAgICAgfHwgYXJlYSh0ZW1wbGF0ZVNpemUpID4gYXJlYShtX3NvdXJjZVJlY3Qp
KSB7CiAgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQs
IHNoYWRvd2VkUmVjdCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU1
Nyw3ICs1NTcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZQogICAgIGNvbnN0IEZsb2F0UmVj
dCYgaFJlY3QgPSBob2xlUmVjdC5yZWN0KCk7CiAKICAgICBpZiAodGVtcGxhdGVTaXplLndpZHRo
KCkgPiBoUmVjdC53aWR0aCgpIHx8IHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhSZWN0LmhlaWdo
dCgpCi0gICAgICAgIHx8ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWln
aHQoKSA+IGhSZWN0LndpZHRoKCkgKiBoUmVjdC5oZWlnaHQoKSkpIHsKKyAgICAgICAgfHwgYXJl
YSh0ZW1wbGF0ZVNpemUpID4gYXJlYShoUmVjdCkpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyUG9vbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9MYXllclBvb2wubW0KaW5kZXggMzU2Nzc5NjA1MDZiMTJhYTdh
YzM2Y2NiMjIzNThkOTZhNTkzN2I5NS4uODVmN2RhZWM0MzNiYmIwOWE4NTA0MjY5NmM5Y2U4MjFk
OGZjYWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL0xheWVyUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvTGF5ZXJQb29sLm1tCkBAIC00OSw3ICs0OSw3IEBAIExheWVyUG9vbCogTGF5ZXJQb29s
OjpzaGFyZWRQb29sKCkKIAogdW5zaWduZWQgTGF5ZXJQb29sOjpiYWNraW5nU3RvcmVCeXRlc0Zv
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc2l6ZS53aWR0aCgpICog
c2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgcmV0dXJuIHNpemUuYXJlYSgpICogNDsKIH0KIAogTGF5
ZXJQb29sOjpMYXllckxpc3QmIExheWVyUG9vbDo6bGlzdE9mTGF5ZXJzV2l0aFNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCAyNGJi
YmJjNTY0Nzg1ODRkNzc5OTE3ODQ2ZGIxNDE4NDU3NDI1ZmI5Li41MjU0MTE1NmUyMGVhNTNjMzJm
Y2ZhNTA3NmJjYmViNWRkNTA5ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtNDg4LDcgKzQ4OCw3IEBAIFN0
cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IGRvdWJsZSogcXVhbGl0eSwgQ29vCiAgICAgICAgICAgICByZXR1cm4gImRhdGE6LCI7CiAKICAg
ICAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXI7Ci0gICAgICAg
IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBw
cmVtdWx0aXBsaWVkRGF0YS0+ZGF0YSgpLCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpICogbG9n
aWNhbFNpemUoKS5oZWlnaHQoKSwgMCkpOworICAgICAgICBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgcHJlbXVsdGlwbGllZERhdGEtPmRhdGEo
KSwgNCAqIGFyZWEobG9naWNhbFNpemUoKSksIDApKTsKICAgICAgICAgaWYgKCFkYXRhUHJvdmlk
ZXIpCiAgICAgICAgICAgICByZXR1cm4gImRhdGE6LCI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggZThhZDU4
ZDJlODVjOGE2MmE1NDg3NmZlZjVjZTQ5NWUxNjAzNTE2OS4uOTE0NmMzZjRmM2MyNDhiY2VkZTky
YjQ4OWNjYzJjMmI0ZThiNDRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBJbnRT
aXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uCiAgICAgaWYgKChtX2Jhc2VTdWJzYW1wbGluZyA9PSAwKSAmJiAh
bV9pc1Byb2dyZXNzaXZlKSB7CiAgICAgICAgIEludFNpemUgc3Vic2FtcGxlZFNpemUodywgaCk7
CiAgICAgICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlU2l6ZUJlZm9yZVN1YnNhbXBsaW5nID0g
NSAqIDEwMjQgKiAxMDI0OwotICAgICAgICB3aGlsZSAoKG1fYmFzZVN1YnNhbXBsaW5nIDwgMykg
JiYgc3Vic2FtcGxlZFNpemUud2lkdGgoKSAqIHN1YnNhbXBsZWRTaXplLmhlaWdodCgpID4gY01h
eGltdW1JbWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZykgeworICAgICAgICB3aGlsZSAoKG1fYmFz
ZVN1YnNhbXBsaW5nIDwgMykgJiYgc3Vic2FtcGxlZFNpemUuYXJlYSgpID4gY01heGltdW1JbWFn
ZVNpemVCZWZvcmVTdWJzYW1wbGluZykgewogICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgc2l6
ZSwgYnV0IHRoZSBhY3R1YWwgaW1hZ2UgaXMgdmVyeSBsYXJnZSBhbmQgc2hvdWxkIGJlIHN1Yi1z
YW1wbGVkLgogICAgICAgICAgICAgLy8gSW5jcmVhc2UgdGhlIGJhc2Ugc3Vic2FtcGxpbmcgYW5k
IGFzayBmb3IgdGhlIHNpemUgYWdhaW4uIElmIHRoZSBpbWFnZSBjYW4gYmUgc3Vic2FtcGxlZCwg
dGhlIHNpemUgd2lsbCBiZQogICAgICAgICAgICAgLy8gZ3JlYXRseSByZWR1Y2VkLiA0eCBzdWIt
c2FtcGxpbmcgd2lsbCBtYWtlIHVzIHN1cHBvcnQgdXAgdG8gMzIwTVAgKDVNUCAqIDReMykgaW1h
Z2VzLCB3aGljaCBzaG91bGQgYmUgcGxlbnR5LgpAQCAtNTE4LDcgKzUxOCw3IEBAIGJvb2wgSW1h
Z2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHVuc2lnbmVkIElt
YWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAg
SW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb24pKTsKLSAgICByZXR1cm4gZnJh
bWVTaXplLndpZHRoKCkgKiBmcmFtZVNpemUuaGVpZ2h0KCkgKiA0OworICAgIHJldHVybiBmcmFt
ZVNpemUuYXJlYSgpICogNDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCA5ZmU5MTAxNzhi
ZGRlM2EyOTM1N2YwZTM3OGU1MzQ3YzY1MGUwMzFiLi45MGNlMWZmMWY3NDI0MmIzMzQzYWIxYWVj
OTY4ZjBjYjVkZWQxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0CiAKICAgICAgICAgSW50U2l6ZSBpbnRlcm5hbFNpemUgPSBt
X2NhY2hlZEltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKTsKICAgICAgICAgc2l6ZV90IG9sZENh
Y2hlZEJ5dGVzID0gbV9jYWNoZWRCeXRlczsKLSAgICAgICAgbV9jYWNoZWRCeXRlcyA9IGludGVy
bmFsU2l6ZS53aWR0aCgpICogaW50ZXJuYWxTaXplLmhlaWdodCgpICogNDsKKyAgICAgICAgbV9j
YWNoZWRCeXRlcyA9IGludGVybmFsU2l6ZS5hcmVhKCkgKiA0OwogCiAgICAgICAgIGlmIChpbWFn
ZU9ic2VydmVyKCkpCiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hh
bmdlZCh0aGlzLCBzYWZlQ2FzdDxpbnQ+KG1fY2FjaGVkQnl0ZXMpIC0gc2FmZUNhc3Q8aW50Pihv
bGRDYWNoZWRCeXRlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXggMjk3Y2U3MzNj
OTI5OWFkOWUyNDBiZmUxODE2YTYwNDEzMjZjNzFmMy4uN2I0MjI3ZGJjZDkwNGRiNDZlYWRhODIx
Mjc5MDhlY2U1OWJlYzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBAIC00NDksNyAr
NDQ5LDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgaWYgKGNsaXBSaWdodCA+PSAwICYmIGNsaXBCb3R0b20gPj0gMCkgewogCi0gICAgICAg
IGludCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gKGFic29sdXRlUGFpbnRSZWN0KCkud2lkdGgoKSAq
IGFic29sdXRlUGFpbnRSZWN0KCkuaGVpZ2h0KCkpIC8gc19taW5pbWFsUmVjdERpbWVuc2lvbjsK
KyAgICAgICAgaW50IG9wdGltYWxUaHJlYWROdW1iZXIgPSBhcmVhKGFic29sdXRlUGFpbnRSZWN0
KCkpIC8gc19taW5pbWFsUmVjdERpbWVuc2lvbjsKICAgICAgICAgaWYgKG9wdGltYWxUaHJlYWRO
dW1iZXIgPiAxKSB7CiAgICAgICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxJbnRlcmlvclBpeGVs
UGFyYW1ldGVycz4gcGFyYWxsZWxKb2JzKCZXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRJ
bnRlcmlvclBpeGVsc1dvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CiAgICAgICAgICAgICBj
b25zdCBpbnQgbnVtT2ZUaHJlYWRzID0gcGFyYWxsZWxKb2JzLm51bWJlck9mSm9icygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmNwcAppbmRleCAzMzY0YzA3ZmE0MGRiOTBlZjYzYTgyYmY2ODY4MWE5ZjVm
MWE4YTZhLi41MjVmMGRiNDFlZWRiNDY1ZDgzOGE1ZmE4Nzc5OWU3YTI2NDFhMmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5KFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBV
aW50CiB7CiAgICAgaW50IHNjYW5saW5lID0gNCAqIHBhaW50U2l6ZS53aWR0aCgpOwogICAgIGlu
dCBleHRyYUhlaWdodCA9IDMgKiBrZXJuZWxTaXplWSAqIDAuNWY7Ci0gICAgaW50IG9wdGltYWxU
aHJlYWROdW1iZXIgPSAocGFpbnRTaXplLndpZHRoKCkgKiBwYWludFNpemUuaGVpZ2h0KCkpIC8g
KHNfbWluaW1hbFJlY3REaW1lbnNpb24gKyBleHRyYUhlaWdodCAqIHBhaW50U2l6ZS53aWR0aCgp
KTsKKyAgICBpbnQgb3B0aW1hbFRocmVhZE51bWJlciA9IGFyZWEocGFpbnRTaXplKSAvIChzX21p
bmltYWxSZWN0RGltZW5zaW9uICsgZXh0cmFIZWlnaHQgKiBwYWludFNpemUud2lkdGgoKSk7CiAK
ICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEpIHsKICAgICAgICAgV1RGOjpQYXJhbGxl
bEpvYnM8UGxhdGZvcm1BcHBseVBhcmFtZXRlcnM+IHBhcmFsbGVsSm9icygmcGxhdGZvcm1BcHBs
eVdvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBG
RUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBJbnRTaXplIGtlcm5l
bFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCBGbG9hdFBvaW50KG1fc3RkWCwg
bV9zdGRZKSk7CiAKICAgICBJbnRTaXplIHBhaW50U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCku
c2l6ZSgpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdG1wSW1hZ2VEYXRhID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocGFpbnRTaXplLndpZHRoKCkgKiBw
YWludFNpemUuaGVpZ2h0KCkgKiA0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHRt
cEltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFyZWEo
cGFpbnRTaXplKSAqIDQpOwogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5ID0g
dG1wSW1hZ2VEYXRhLmdldCgpOwogCiAgICAgcGxhdGZvcm1BcHBseShzcmNQaXhlbEFycmF5LCB0
bXBQaXhlbEFycmF5LCBrZXJuZWxTaXplLndpZHRoKCksIGtlcm5lbFNpemUuaGVpZ2h0KCksIHBh
aW50U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKaW5kZXggOTE3Yzk2YTIxN2ZmMThmY2E1NDYyYzMx
NzE2ZDk2ZWJiM2U2MjU4Ny4uZmQyMjM4ZmQ2YzM4ZGY0NGI1NjZjNjA3OWZkZmZhMDM5NjQ4ZDZj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgRkVUdXJidWxl
bmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0Rh
dGEobV9zZWVkLCByb3VuZGVkSW50U2l6ZShmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKS5zaXpl
KCkpKTsKICAgICBpbml0UGFpbnQocGFpbnRpbmdEYXRhKTsKIAotICAgIGludCBvcHRpbWFsVGhy
ZWFkTnVtYmVyID0gKGFic29sdXRlUGFpbnRSZWN0KCkud2lkdGgoKSAqIGFic29sdXRlUGFpbnRS
ZWN0KCkuaGVpZ2h0KCkpIC8gc19taW5pbWFsUmVjdERpbWVuc2lvbjsKKyAgICBpbnQgb3B0aW1h
bFRocmVhZE51bWJlciA9IGFyZWEoYWJzb2x1dGVQYWludFJlY3QoKSkgLyBzX21pbmltYWxSZWN0
RGltZW5zaW9uOwogICAgIGlmIChvcHRpbWFsVGhyZWFkTnVtYmVyID4gMSkgewogICAgICAgICAv
LyBJbml0aWFsaXplIHBhcmFsbGVsIGpvYnMKICAgICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8Rmls
bFJlZ2lvblBhcmFtZXRlcnM+IHBhcmFsbGVsSm9icygmV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpm
aWxsUmVnaW9uV29ya2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApp
bmRleCBkODRiY2EyNjA0YjI3MDJhMTA5YmFmOTJhYjkxOWIxMDgwN2Y4ZmNiLi5kNjcyNWIyOWJj
NTBlYjkxYTFkY2VjODM5NDc4ZjY2YWY5NzRmNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0y
ODksNyArMjg5LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0lt
YWdlQnVmZmVyKCkKICAgICBzaXplX3Qgb3JpZ2luWzNdID0geyAwLCAwLCAwIH07CiAgICAgc2l6
ZV90IHJlZ2lvblszXSA9IHsgbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRl
UGFpbnRSZWN0LmhlaWdodCgpLCAxIH07CiAKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9hYnNv
bHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZGVzdGluYXRpb25QaXhlbEFycmF5ID0g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShhcmVhKG1fYWJzb2x1dGVQYWludFJlY3QpICogNCk7
CiAKICAgICBpZiAoY29udGV4dC0+aXNGYWlsZWQoY2xGaW5pc2goY29udGV4dC0+Y29tbWFuZFF1
ZXVlKCkpKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMDgsNyArMzA4LDcgQEAgSW1hZ2VCdWZm
ZXIqIEZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKCkKIFBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZShjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7
Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICog
NCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEgPSBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhKHJlY3QpICogNCk7CiAgICAgY29weVVu
bXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7CiAgICAgcmV0dXJuIGltYWdl
RGF0YS5yZWxlYXNlKCk7CiB9CkBAIC0zMTYsNyArMzE2LDcgQEAgUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmIHIKIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQoaXNGaWx0
ZXJTaXplVmFsaWQocmVjdCkpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VE
YXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgp
ICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1h
Z2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYShyZWN0
KSAqIDQpOwogICAgIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0
KTsKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0KQEAgLTM3NSwxMCArMzc1LDEw
IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVk
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJCiAgICAgICAgICAgICBtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRh
KEludFJlY3QoSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQobV9hYnNvbHV0
ZVBhaW50UmVjdCkpOwotICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKG1fYWJzb2x1dGVQYWludFJlY3Qu
d2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICAgICAgICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZChhcmVhKG1fYWJzb2x1dGVQYWludFJlY3QpICogNCk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyKiBzb3VyY2VDb21wb25lbnQgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dC0+ZGF0YSgpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGVzdGluYXRpb25Db21wb25l
bnQgPSBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBjaGFyKiBlbmQgPSBzb3VyY2VDb21wb25lbnQgKyAobV9hYnNvbHV0ZVBhaW50UmVjdC53
aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciogZW5kID0gc291cmNlQ29tcG9uZW50ICsgYXJlYShtX2Fic29sdXRlUGFp
bnRSZWN0KSAqIDQ7CiAgICAgICAgICAgICB3aGlsZSAoc291cmNlQ29tcG9uZW50IDwgZW5kKSB7
CiAgICAgICAgICAgICAgICAgaW50IGFscGhhID0gc291cmNlQ29tcG9uZW50WzNdOwogICAgICAg
ICAgICAgICAgIGlmIChhbHBoYSkgewpAQCAtNDA5LDEwICs0MDksMTAgQEAgdm9pZCBGaWx0ZXJF
ZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0
aW9uLCBjb25zdAogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2lt
YWdlQnVmZmVyUmVzdWx0LT5nZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9p
bnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQobV9hYnNvbHV0ZVBhaW50UmVjdCkpOwot
ICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJh
eTo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fi
c29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgICAgICAgICBtX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFy
ZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkgKiA0KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIq
IHNvdXJjZUNvbXBvbmVudCA9IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gbV9wcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGVu
ZCA9IHNvdXJjZUNvbXBvbmVudCArIChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fi
c29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
KiBlbmQgPSBzb3VyY2VDb21wb25lbnQgKyBhcmVhKG1fYWJzb2x1dGVQYWludFJlY3QpICogNDsK
ICAgICAgICAgICAgIHdoaWxlIChzb3VyY2VDb21wb25lbnQgPCBlbmQpIHsKICAgICAgICAgICAg
ICAgICBpbnQgYWxwaGEgPSBzb3VyY2VDb21wb25lbnRbM107CiAgICAgICAgICAgICAgICAgZGVz
dGluYXRpb25Db21wb25lbnRbMF0gPSBzdGF0aWNfY2FzdDxpbnQ+KHNvdXJjZUNvbXBvbmVudFsw
XSkgKiBhbHBoYSAvIDI1NTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBVaW50OENsYW1wZWRBcnJheSog
RmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBpZiAo
bV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0
aWFsaXplZChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0
LmhlaWdodCgpICogNCk7CisgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFyZWEobV9hYnNvbHV0ZVBhaW50UmVjdCkg
KiA0KTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApA
QCAtNDYwLDcgKzQ2MCw3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9hYnNvbHV0
ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwor
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoYXJlYShtX2Fic29sdXRlUGFpbnRSZWN0KSAqIDQpOwogICAgIHJldHVy
biBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCmluZGV4
IDJiOTZjYjU5NGNiZTczZTU2ZDE2N2RhZDBjOTZjZjRiMDJiNTg4YWQuLjQ4NzYxODcxNzgzNWYx
ZTQ5ZjQ3YmM4YTc2NjdkZDI1ZDFmNTYzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKQEAgLTEyMCw3ICsxMjAs
NyBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OmNsZWFyKCkKICAgICBtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKCFtX3NpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNf
Y3VycmVudFJlc291cmNlVXNlUGl4ZWxzIC09IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdo
dCgpOworICAgICAgICBzX2N1cnJlbnRSZXNvdXJjZVVzZVBpeGVscyAtPSBtX3NpemUuYXJlYSgp
OwogICAgICAgICBtX3NpemUgPSBJbnRTaXplKCk7CiAgICAgfQogCkBAIC0yNjgsMTAgKzI2OCwx
MCBAQCBib29sIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbnQgcGl4ZWxEZWx0YSA9IG5ld1Np
emUud2lkdGgoKSAqIG5ld1NpemUuaGVpZ2h0KCk7CisgICAgaW50IHBpeGVsRGVsdGEgPSBuZXdT
aXplLmFyZWEoKTsKICAgICBpbnQgb2xkU2l6ZSA9IDA7CiAgICAgaWYgKCFtX3NpemUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIG9sZFNpemUgPSBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQo
KTsKKyAgICAgICAgb2xkU2l6ZSA9IG1fc2l6ZS5hcmVhKCk7CiAgICAgICAgIHBpeGVsRGVsdGEg
LT0gb2xkU2l6ZTsKICAgICB9CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIERyYXdpbmdCdWZm
ZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgICAgICAgICAgY2xlYXIo
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBwaXhlbERlbHRhID0gYWRqdXN0ZWRTaXplLndpZHRoKCkgKiBhZGp1c3RlZFNpemUuaGVp
Z2h0KCk7CisgICAgICAgICAgICBwaXhlbERlbHRhID0gYWRqdXN0ZWRTaXplLmFyZWEoKTsKICAg
ICAgICAgICAgIHBpeGVsRGVsdGEgLT0gb2xkU2l6ZTsKICAgICAgICAgfQogICAgICB9CkBAIC0z
NjUsNyArMzY1LDcgQEAgYm9vbCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBu
ZXdTaXplKQogCiAgICAgICAgIH0gd2hpbGUgKCFhZGp1c3RlZFNpemUuaXNFbXB0eSgpKTsKIAot
ICAgICAgICBwaXhlbERlbHRhID0gbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCk7Cisg
ICAgICAgIHBpeGVsRGVsdGEgPSBtX3NpemUuYXJlYSgpOwogICAgICAgICBwaXhlbERlbHRhIC09
IG9sZFNpemU7CiAgICAgICAgIHNfY3VycmVudFJlc291cmNlVXNlUGl4ZWxzICs9IHBpeGVsRGVs
dGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
R3JpZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5tbQpp
bmRleCA2NTFiMDY5MmMzYWNmMDNlNWQ0OTQzODhmMzhiZDZmODBjNTM2MTZjLi43NGUyM2MwZTJl
YzE0MTE3MzhiYzgzMWNkMWIxMWNlMDE1ODFhNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLm1tCkBAIC00MDYsNyArNDA2LDcgQEAgSW50UmVjdCBM
ZWdhY3lUaWxlR3JpZDo6YWRqdXN0Q292ZXJSZWN0Rm9yUGFnZUJvdW5kcyhjb25zdCBJbnRSZWN0
JiByZWN0KSBjb25zdAogICAgIGFkanVzdGVkUmVjdCA9IGludGVyc2VjdGlvbihib3VuZHMsIGFk
anVzdGVkUmVjdCk7CiAgICAgaWYgKGFkanVzdGVkUmVjdCA9PSByZWN0IHx8IGFkanVzdGVkUmVj
dC5pc0VtcHR5KCkgfHwgc2hvdWxkVXNlTWluaW1hbFRpbGVDb3ZlcmFnZSgpKQogICAgICAgICBy
ZXR1cm4gYWRqdXN0ZWRSZWN0OwotICAgIGludCBwaXhlbHMgPSBhZGp1c3RlZFJlY3Qud2lkdGgo
KSAqIGFkanVzdGVkUmVjdC5oZWlnaHQoKTsKKyAgICBpbnQgcGl4ZWxzID0gYWRqdXN0ZWRSZWN0
LmFyZWEoKTsKICAgICBpZiAoYWRqdXN0ZWRSZWN0LndpZHRoKCkgIT0gcmVjdC53aWR0aCgpKQog
ICAgICAgICBhZGp1c3RlZFJlY3QuaW5mbGF0ZVkoKHBpeGVscyAvIGFkanVzdGVkUmVjdC53aWR0
aCgpIC0gYWRqdXN0ZWRSZWN0LmhlaWdodCgpKSAvIDIpOwogICAgIGVsc2UgaWYgKGFkanVzdGVk
UmVjdC5oZWlnaHQoKSAhPSByZWN0LmhlaWdodCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQppbmRleCBlNmQ5NTc0NGZlNGU2NGE2
ODMzMWIwYjAwMzkzNDliNzcxNWUzMGExLi4zYzVmMDhiNTk4NGRiZTRlZjg5NmYzODY5NGNlZGU1
MmNiZDFkMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyUG9vbC5tbQpAQCAtNTUsNyArNTUsNyBAQCBMZWdhY3lUaWxlTGF5ZXJQb29sKiBM
ZWdhY3lUaWxlTGF5ZXJQb29sOjpzaGFyZWRQb29sKCkKIAogdW5zaWduZWQgTGVnYWN5VGlsZUxh
eWVyUG9vbDo6Ynl0ZXNCYWNraW5nTGF5ZXJXaXRoUGl4ZWxTaXplKGNvbnN0IEludFNpemUmIHNp
emUpCiB7Ci0gICAgcmV0dXJuIHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0OworICAg
IHJldHVybiBzaXplLmFyZWEoKSAqIDQ7CiB9CiAKIExlZ2FjeVRpbGVMYXllclBvb2w6OkxheWVy
TGlzdCYgTGVnYWN5VGlsZUxheWVyUG9vbDo6bGlzdE9mTGF5ZXJzV2l0aFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA1NjM4MzQ2NmVkNTg2ZWMzOTUwY2YwY2E4ZTZhMzQw
NWIxMTdiMmViLi5mZDUwOGE0ZDRhMTFiNjI1N2M5NjVkYzgwNjNhOGU2NGQ1ZTA5NjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTk1LDcgKzE5NSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdl
KiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgICAgIGludCBtaW5CdWZmZXJZID0gc3Rk
OjptYXgoMCwgbWFyZ2luUmVjdC55KCkgLSBpbWFnZVJlY3QueSgpKTsKICAgICAgICAgaW50IG1h
eEJ1ZmZlclkgPSBzdGQ6Om1pbihpbWFnZVJlY3QuaGVpZ2h0KCksIG1hcmdpblJlY3QubWF4WSgp
IC0gaW1hZ2VSZWN0LnkoKSk7CiAKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bWFnZVJlY3Qud2lkdGgoKSAqIGltYWdlUmVjdC5oZWlnaHQoKSAqIDQpID09IHBpeGVsQXJyYXlM
ZW5ndGgpIHsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmVhKGltYWdlUmVj
dCkgKiA0KSA9PSBwaXhlbEFycmF5TGVuZ3RoKSB7CiAgICAgICAgICAgICBmb3IgKGludCB5ID0g
bWluQnVmZmVyWTsgeSA8IG1heEJ1ZmZlclk7ICsreSkgewogICAgICAgICAgICAgICAgIGludCBz
dGFydFggPSAtMTsKICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlUmVj
dC53aWR0aCgpOyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApp
bmRleCA4N2M4ZWU1NzRjMWEzMDc3OTA5OWQ0YWMwNTMxNWE0MTM3ZDEwNDg4Li4yZTU4Zjg4MWY3
MmMxODRkYWUxZjhhNjkwNWQ3ZDFhYjY2YzNmY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpdHNJbk1heGltdW1J
bWFnZVNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBGbG9hCiB7CiAgICAgRmxvYXRTaXplIHNj
YWxlZFNpemUoc2l6ZSk7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZShzY2FsZS53aWR0aCgpLCBzY2Fs
ZS5oZWlnaHQoKSk7Ci0gICAgZmxvYXQgc2NhbGVkQXJlYSA9IHNjYWxlZFNpemUud2lkdGgoKSAq
IHNjYWxlZFNpemUuaGVpZ2h0KCk7CisgICAgZmxvYXQgc2NhbGVkQXJlYSA9IGFyZWEoc2NhbGVk
U2l6ZSk7CiAKICAgICBpZiAoc2NhbGVkQXJlYSA8PSBGaWx0ZXJFZmZlY3Q6Om1heEZpbHRlckFy
ZWEoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Cg==
</data>
<flag name="review"
          id="253658"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>