<?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>123355</bug_id>
          
          <creation_ts>2013-10-25 13:08:51 -0700</creation_ts>
          <short_desc>Move InlineTextBox&apos;s text painting to its own class</short_desc>
          <delta_ts>2013-10-29 15:41:08 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>enrica</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mitz</cc>
    
    <cc>rakuco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943710</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 13:08:51 -0700</bug_when>
    <thetext>Drawing text isn&apos;t modular</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943715</commentid>
    <comment_count>1</comment_count>
      <attachid>215201</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 13:15:17 -0700</bug_when>
    <thetext>Created attachment 215201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943716</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-25 13:16:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/15322614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943727</commentid>
    <comment_count>3</comment_count>
      <attachid>215206</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 13:34:26 -0700</bug_when>
    <thetext>Created attachment 215206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943741</commentid>
    <comment_count>4</comment_count>
      <attachid>215206</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-25 14:08:46 -0700</bug_when>
    <thetext>Comment on attachment 215206
Patch

Attachment 215206 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/11948005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943762</commentid>
    <comment_count>5</comment_count>
      <attachid>215214</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 14:47:51 -0700</bug_when>
    <thetext>Created attachment 215214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944201</commentid>
    <comment_count>6</comment_count>
      <attachid>215328</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-28 13:41:18 -0700</bug_when>
    <thetext>Created attachment 215328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944622</commentid>
    <comment_count>7</comment_count>
      <attachid>215328</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-29 14:48:18 -0700</bug_when>
    <thetext>Comment on attachment 215328
Patch

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

Looks good, just needs license change.

&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj:11736
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug_WinCairo|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug_WinCairo|x64&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;DebugSuffix|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;DebugSuffix|x64&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Release_WinCairo|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Release_WinCairo|x64&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Production|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Production|x64&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;

I&apos;m not sure we need all this crap. I tend to leave it out and see what breaks.

&gt; Source/WebCore/rendering/TextPainter.cpp:18
&gt; + * Copyright (C) 2013 Apple Inc. All rights reserved.
&gt; + *
&gt; + * This library is free software; you can redistribute it and/or
&gt; + * modify it under the terms of the GNU Library General Public
&gt; + * License as published by the Free Software Foundation; either
&gt; + * version 2 of the License, or (at your option) any later version.
&gt; + *
&gt; + * This library is distributed in the hope that it will be useful,
&gt; + * but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt; + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt; + * Library General Public License for more details.
&gt; + *
&gt; + * You should have received a copy of the GNU Library General Public License
&gt; + * along with this library; see the file COPYING.LIB.  If not, write to
&gt; + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; + * Boston, MA 02110-1301, USA.
&gt; + *

This is not the right license. Look for a recently added file by an apple contributor and copy it from there. e.g. Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm

&gt; Source/WebCore/rendering/TextPainter.h:18
&gt; + * Copyright (C) 2013 Apple Inc. All rights reserved.
&gt; + *
&gt; + * This library is free software; you can redistribute it and/or
&gt; + * modify it under the terms of the GNU Library General Public
&gt; + * License as published by the Free Software Foundation; either
&gt; + * version 2 of the License, or (at your option) any later version.
&gt; + *
&gt; + * This library is distributed in the hope that it will be useful,
&gt; + * but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt; + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt; + * Library General Public License for more details.
&gt; + *
&gt; + * You should have received a copy of the GNU Library General Public License
&gt; + * along with this library; see the file COPYING.LIB.  If not, write to
&gt; + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; + * Boston, MA 02110-1301, USA.
&gt; + *

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944627</commentid>
    <comment_count>8</comment_count>
      <attachid>215431</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-29 14:55:20 -0700</bug_when>
    <thetext>Created attachment 215431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944628</commentid>
    <comment_count>9</comment_count>
      <attachid>215431</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-29 14:56:48 -0700</bug_when>
    <thetext>Comment on attachment 215431
Patch

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

&gt; Source/WebCore/ChangeLog:21
&gt; +        * CMakeLists.txt: Adding new TextPainter class
&gt; +        * GNUmakefile.list.am: Adding new TextPainter class
&gt; +        * WebCore.vcxproj/WebCore.vcxproj: Adding new TextPainter class
&gt; +        * WebCore.vcxproj/WebCore.vcxproj.filters: Adding new TextPainter
&gt; +        class
&gt; +        * WebCore.xcodeproj/project.pbxproj: Adding new TextPainter class

People tend to just say &quot;Ditto&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944648</commentid>
    <comment_count>10</comment_count>
      <attachid>215431</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 15:27:44 -0700</bug_when>
    <thetext>Comment on attachment 215431
Patch

Clearing flags on attachment: 215431

Committed r158232: &lt;http://trac.webkit.org/changeset/158232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944649</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 15:27:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944651</commentid>
    <comment_count>12</comment_count>
      <attachid>215431</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-29 15:40:50 -0700</bug_when>
    <thetext>Comment on attachment 215431
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:576
&gt; +    TextPainter textPainter(*context, paintSelectedTextOnly, paintSelectedTextSeparately, font, sPos, ePos, length, emphasisMark, combinedText, textRun, boxRect, textOrigin, emphasisMarkOffset, textShadow, selectionShadow, isHorizontal(), textPaintStyle, selectionPaintStyle);

This is bit excessive and confusing. It would be better to use a struct for passing this many arguments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215201</attachid>
            <date>2013-10-25 13:15:17 -0700</date>
            <delta_ts>2013-10-25 13:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123355-20131025131516.patch</filename>
            <type>text/plain</type>
            <size>34359</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzOTRlMzgyMjI1ZDYz
OGNlNTFiMGQzYzZhZmMzNGJiNWM3YmUxYS4uN2EzZjBmMDllZGZhMjVkZjZjY2VjMGRkYWFjNGFh
MzViZDc5MzQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyB0
ZXh0IGlzbid0IG1vZHVsYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMzM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudGluZyB0ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIHJlcXVpcmVz
IGRyYXdpbmcgdGV4dAorICAgICAgICB0d2ljZSAob25jZSByZWd1bGFybHksIGFuZCBvbmNlIHdp
dGggYSB0aGljayBvdXRsaW5lIGludG8gYSBtYXNrKS4KKyAgICAgICAgVGhpcyBwYXRjaCBwdWxs
cyBvdXQgdGhlIHJlbGV2YW50IHRleHQgZHJhd2luZyBjb2RlIGZyb20KKyAgICAgICAgSW5saW5l
VGV4dEJveCBpbnRvIGEgbmV3IGNsYXNzIHdoaWNoIGNhbiBiZSByZS11c2VkIHRvIGRyYXcgdGV4
dAorICAgICAgICBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNs
YXNzCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkaW5nIG5ldyBUZXh0UGFpbnRl
ciBjbGFzcworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IEFkZGlu
ZyBuZXcgVGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6IEFkZGluZyBuZXcgVGV4dFBhaW50ZXIKKyAgICAgICAgY2xhc3MK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGluZyBuZXcg
VGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6IE1vdmluZyB0ZXh0IGRy
YXdpbmcgY29kZSBmcm9tCisgICAgICAgIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwOiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNsYXNzCisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRlcjo6VGV4dFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1Rl
eHRPckVtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRUZXh0V2l0aFNoYWRv
d3MpOgorICAgICAgICAoV2ViQ29yZTo6cm90YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFBhaW50ZXI6OnBhaW50VGV4dCk6IE5ldyBsb2NhdGlvbiBmb3IgdGV4dCBkcmF3aW5nCisgICAg
ICAgIGNvZGUKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRJbkNvbnRl
eHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNhdmVkRHJhd2luZ1N0YXRlRm9yTWFzazo6U2F2ZWREcmF3aW5nU3RhdGVGb3JN
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpib3hSZWN0KToKKwogMjAxMy0x
MC0yNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5jb21w
bGljYXRlIHNvbWUgb2YgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGNlMzUzMzRiMWI0MzYxMWI2N2ZkOGU4N2M2MTdhZTMyNDFhYTQ0OGUuLjhmNjhm
ZDMxN2MwNWY4NTg1MWJlYzIzMGNjMmNjZTQyNjZjOWJlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yMTc5LDYgKzIxNzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRBdXRvc2l6
ZXIuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorICAgIHJlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHAKICAgICByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCiAKICAgICByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggMzdlNDJmZjA1ZGZiMTZhOWQ5NzQyOGYxYjdkNWNjMWE0YmJjZTYzNC4uMGMx
Yjg0YzFlOGZlNDE5Yjk3MGY5NjQ0ZjBiN2ZiNTNlMDAzOGNlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC00NDkxLDYgKzQ0OTEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludFN0eWxlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVmVydGljYWxQb3NpdGlvbkNhY2hlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGU4YTc2ZTgyMTc4OGY5
NTJkM2Y4ZWE1MmI1OGY2MTFjYjIyMjcxZDYuLjkxODYzMDc4ZWQxZjVmNjdlNTBjYmY5MDNlMTAw
ZTUxYTg0MmNmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagpAQCAtMTE3MjAsNiArMTE3MjAsMjAgQEAKICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50ZXIuY3BwIj4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx4bWxcRE9NUGFyc2Vy
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHhtbFxOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuY3BwIiAvPgpAQCAtMTk2OTcsNiArMTk3MTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRhYmxlTGF5b3V0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50U3R5bGUuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRyYWlsaW5nRmxvYXRzUm9vdElubGlu
ZUJveC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXG1hdGhtbFxS
ZW5kZXJNYXRoTUxCbG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXG1hdGhtbFxSZW5kZXJNYXRoTUxGZW5jZWQuaCIgLz4KQEAgLTIwNzYwLDQgKzIwNzc1LDQg
QEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdl
dHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDkyZGE4OWVkZGM0ZWRmOTZkOGNj
YzQ5OGQ5ZjhkYWJiOTFjYjM4ZGQuLmIzYzFlZTUxOWU2NDQ1YjU0ZmMxY2IyZjk1ZTBiZTBiYTgx
NDI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI5NDAsNiArMjk0MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzdmc8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5jcHAi
PgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHhtbFxET01QYXJzZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+eG1sPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05NjE5LDYgKzk2MjIsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRhYmxlTGF5b3V0LmgiPgogICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5oIj4KKyAgICAgIDxGaWx0
ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgiPgogICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE0OTgx
LDQgKzE0OTg3LDQgQEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAg
PC9NQVNNPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDllMjRjN2ZmNjRhNzNmYjk2Mjc5OWNlODQyZDdiMjQw
YmEzNDA3OS4uYTMzMzZmZjRkZDU2ODJkNTI2YWE2NGU1ZjA2ZDZiNTlmMTU4NDY2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODI2LDYgKzgyNiw4IEBACiAJCTFDMTFDQ0M2MEFBNjA5MzcwMERBREIyMCAvKiBET01Eb2N1bWVu
dEZyYWdtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRG
cmFnbWVudC5oICovOyB9OwogCQkxQzExQ0NDNzBBQTYwOTM3MDBEQURCMjAgLyogRE9NQ0RBVEFT
ZWN0aW9uLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9u
LmggKi87IH07CiAJCTFDMTFDQ0M4MEFBNjA5MzcwMERBREIyMCAvKiBET01IVE1MRWxlbWVudC5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODVERjJFRUIwQUEzODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50LmggKi87IH07
CisJCTFDMThEQTU4MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4REE1NjE4MUFGNkE1MDBD
NEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovOyB9OworCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVG
MjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDMThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovOyB9
OwogCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdF
MjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKIAkJMUMyNjQ5N0Mw
RDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMu
Y3BwICovOyB9OwogCQkxQzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM0QzhGMDAwQUQ4NUQ4NzAwOTQ3NUNFIC8qIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzMxMSw2ICs3
MzEzLDggQEAKIAkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8qIFByb3h5U2VydmVyQ0ZOZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlTZXJ2ZXJDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkUxMTk3MENCRkZDQzQwMDMw
MTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0
Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNl
dFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxOERBNTYxODFBRjZB
NTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRleHRQYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBG
MiAvKiBQYWdlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2VNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzNUNEMzE0RTg1NDRG
MDA0RTEwRUEgLyogSW5zcGVjdG9yLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW5zcGVjdG9yLmpzb247IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc4Nyw2ICsyMDc5MSw4IEBACiAJCQkJRTRDOTFBMEQx
ODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8sCiAJCQkJMzdGQzk2REExMTA0
RUQ3MTAwM0UxRkFEIC8qIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovLAogCQkJCUJD
QTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLywKKwkJ
CQkxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovLAorCQkJCTFD
MThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSByZW5kZXJpbmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjE1NjksNiAr
MjE1NzUsNyBAQAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQgLyog
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4
MTIzOTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJp
bGl0eVNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk0ODlGQzcxMkMwMEYwMzAwRDgz
RjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA5
RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNzI0Niw2ICsyNzI1Myw3IEBACiAJCQkJRkVBRDdEODcxNkMzMzlFRTAwRDQ2NzBC
IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdC
QzZBNTQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTU2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMThEQTU4MTgxQUY2QTUwMEM0RUYy
MiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTM2RkQxNjE2Qzc4MjY1
MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4RTA4RkYxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTVBMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5
bmMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggMzQ3MDM2ZDZkNzc1YzFkNzBiYmE3YTA3ODg3ODY4YzU3MTJkN2E3OC4u
ZTE2NWY5MDhmNDU0N2E0YmU1NTVjMzFhOTg3NjhkZDc4MWVhMzQ4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIKICNpbmNs
dWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
Mzk3LDU0ICszOTgsNiBAQCBGbG9hdFNpemUgSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dy
YXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIGV4dHJh
T2Zmc2V0OwogfQogCi1zdGF0aWMgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4s
IGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGludCB0cnVuY2F0aW9uUG9pbnQsIGNv
bnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywg
Ym9vbCBzdHJva2VkLCBib29sIGhvcml6b250YWwpCi17Ci0gICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNv
bnRleHQtPmZpbGxDb2xvclNwYWNlKCk7Ci0gICAgYm9vbCBvcGFxdWUgPSBmaWxsQ29sb3IuYWxw
aGEoKSA9PSAyNTU7Ci0gICAgaWYgKCFvcGFxdWUpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKLQotICAgIGRvIHsKLSAgICAgICAg
SW50U2l6ZSBleHRyYU9mZnNldDsKLSAgICAgICAgaWYgKHNoYWRvdykKLSAgICAgICAgICAgIGV4
dHJhT2Zmc2V0ID0gcm91bmRlZEludFNpemUoSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dy
YXBoaWNzQ29udGV4dChjb250ZXh0LCBzaGFkb3csIGJveFJlY3QsIHN0cm9rZWQsIG9wYXF1ZSwg
aG9yaXpvbnRhbCkpOwotICAgICAgICBlbHNlIGlmICghb3BhcXVlKQotICAgICAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOwotCi0gICAgICAg
IGlmIChzdGFydE9mZnNldCA8PSBlbmRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmIChlbXBoYXNp
c01hcmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQs
IHRleHRSdW4sIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhh
c2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFP
ZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lzTWFya09mZnNldCksIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAp
IHsKLSAgICAgICAgICAgICAgICBpZiAoZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiAr
IGV4dHJhT2Zmc2V0LCAgMCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4s
IGVtcGhhc2lzTWFyaywgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0ICsgSW50U2l6ZSgwLCBlbXBo
YXNpc01hcmtPZmZzZXQpLCAgMCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChzdGFydE9mZnNldCA8IHRydW5jYXRpb25Qb2ludCkgewotICAgICAgICAgICAgICAg
IGlmIChlbXBoYXNpc01hcmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0
T2Zmc2V0LCB0cnVuY2F0aW9uUG9pbnQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1w
aGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lz
TWFya09mZnNldCksICBzdGFydE9mZnNldCwgdHJ1bmNhdGlvblBvaW50KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICghc2hhZG93KQotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bmV4dCgpIHx8IHN0cm9rZWQgfHwgIW9wYXF1ZSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLQotICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQo
KTsKLSAgICB9IHdoaWxlIChzaGFkb3cgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKTsKLX0KLQogYm9v
bCBJbmxpbmVUZXh0Qm94OjpnZXRFbXBoYXNpc01hcmtQb3NpdGlvbihjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFRleHRFbXBoYXNpc1Bvc2l0aW9uJiBlbXBoYXNpc1Bvc2l0aW9uKSBjb25zdAog
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSB0ZXh0IGVt
cGhhc2lzIG1hcmtzIGFuZCB0aGV5IGFyZSBzdXBwcmVzc2VkIGJ5IHJ1YnkgdGV4dC4KQEAgLTYy
OCw1OSArNTgxLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAgY29uc3QgU2hhZG93
RGF0YSogdGV4dFNoYWRvdyA9IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8gMCA6IGxpbmVT
dHlsZS50ZXh0U2hhZG93KCk7CiAKLSAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0T25seSkgewot
ICAgICAgICAvLyBGb3Igc3Ryb2tlZCBwYWludGluZywgd2UgaGF2ZSB0byBjaGFuZ2UgdGhlIHRl
eHQgZHJhd2luZyBtb2RlLiAgSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVhdmUgdGhhdCBt
dXRhdGVkIGFzIGEgc2lkZQotICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hlbiB3ZSBrbm93
IHdlJ3JlIHN0cm9raW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VX
aWR0aCA+IDApOwotCi0gICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCgqY29udGV4dCwgdGV4
dFBhaW50U3R5bGUpOwotICAgICAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSB8
fCBlUG9zIDw9IHNQb3MpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdodC10
by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
Y29udGV4dCwgZm9udCwgdGV4dFJ1biwgbnVsbEF0b20sIDAsIDAsIGxlbmd0aCwgbGVuZ3RoLCB0
ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VXaWR0
aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwYWlu
dFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBudWxsQXRvbSwgMCwgZVBv
cywgc1BvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFp
bnRTdHlsZS5zdHJva2VXaWR0aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLQotICAgICAgICBpZiAo
IWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dCgqY29udGV4dCwgdGV4dFBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKLQot
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXh0UnVuLCBvYmplY3RSZXBsYWNlbWVu
dENoYXJhY3RlclRleHRSdW4sICgmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKLSAg
ICAgICAgICAgIFRleHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBjb21iaW5lZFRleHQgPyBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiB0ZXh0UnVuOwotICAgICAgICAgICAg
RmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gY29tYmluZWRUZXh0ID8gRmxvYXRQ
b2ludChib3hPcmlnaW4ueCgpICsgYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSAr
IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiB0ZXh0T3JpZ2luOwotICAgICAgICAgICAg
aWYgKGNvbWJpbmVkVGV4dCkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90
YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7Ci0KLSAgICAgICAgICAgIGlmICghcGFpbnRTZWxl
Y3RlZFRleHRTZXBhcmF0ZWx5IHx8IGVQb3MgPD0gc1BvcykgewotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAgICAgICAg
ICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGNvbWJpbmVkVGV4dCA/IGNvbWJp
bmVkVGV4dC0+b3JpZ2luYWxGb250KCkgOiBmb250LCBlbXBoYXNpc01hcmtUZXh0UnVuLCBlbXBo
YXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgMCwgbGVuZ3RoLCBsZW5ndGgsIGVtcGhhc2lz
TWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWludFN0eWxlLnN0cm9r
ZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgY29tYmluZWRUZXh0ID8gY29t
YmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IGZvbnQsIGVtcGhhc2lzTWFya1RleHRSdW4sIGVt
cGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCBlUG9zLCBzUG9zLCBsZW5ndGgsIGVtcGhh
c2lzTWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWludFN0eWxlLnN0
cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAgICAgICBpZiAoY29tYmlu
ZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihib3hS
ZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoKHBh
aW50U2VsZWN0ZWRUZXh0T25seSB8fCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpICYmIHNQ
b3MgPCBlUG9zKSB7Ci0gICAgICAgIC8vIHBhaW50IG9ubHkgdGhlIHRleHQgdGhhdCBpcyBzZWxl
Y3RlZAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQsIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKLQotICAgICAgICB1cGRh
dGVHcmFwaGljc0NvbnRleHQoKmNvbnRleHQsIHNlbGVjdGlvblBhaW50U3R5bGUpOwotICAgICAg
ICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBudWxsQXRvbSwg
MCwgc1BvcywgZVBvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCBzZWxlY3Rpb25TaGFk
b3csIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwLCBpc0hvcml6b250YWwoKSk7
Ci0gICAgICAgIGlmICghZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgdXBk
YXRlR3JhcGhpY3NDb250ZXh0KCpjb250ZXh0LCBzZWxlY3Rpb25QYWludFN0eWxlLCBVc2VFbXBo
YXNpc01hcmtDb2xvcik7Ci0KLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1
biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50
Q2hhcmFjdGVyLCAxKSk7Ci0gICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVu
ID0gY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuIDogdGV4
dFJ1bjsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IGNv
bWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAv
IDIsIGJveE9yaWdpbi55KCkgKyBmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogdGV4dE9y
aWdpbjsKLSAgICAgICAgICAgIGlmIChjb21iaW5lZFRleHQpCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwotCi0gICAgICAg
ICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBjb21iaW5lZFRleHQgPyBjb21iaW5l
ZFRleHQtPm9yaWdpbmFsRm9udCgpIDogZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1biwgZW1waGFz
aXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHNQb3MsIGVQb3MsIGxlbmd0aCwgZW1waGFzaXNN
YXJrVGV4dE9yaWdpbiwgYm94UmVjdCwgc2VsZWN0aW9uU2hhZG93LCBzZWxlY3Rpb25QYWludFN0
eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAgICAgICBpZiAo
Y29tYmluZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3RhdGlv
bihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgVGV4
dFBhaW50ZXIgdGV4dFBhaW50ZXIoKmNvbnRleHQsIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgcGFp
bnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBmb250LCBzUG9zLCBlUG9zLCBsZW5ndGgsIGVtcGhh
c2lzTWFyaywgY29tYmluZWRUZXh0LCB0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCBlbXBo
YXNpc01hcmtPZmZzZXQsIHRleHRTaGFkb3csIHNlbGVjdGlvblNoYWRvdywgaXNIb3Jpem9udGFs
KCksIHRleHRQYWludFN0eWxlLCBzZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICB0ZXh0UGFpbnRl
ci5wYWludFRleHQoKTsKIAogICAgIC8vIFBhaW50IGRlY29yYXRpb25zCiAgICAgVGV4dERlY29y
YXRpb24gdGV4dERlY29yYXRpb25zID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5P
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcApp
bmRleCBhNzFjMTRjN2U4Mzc2N2VmNGI5ZTk2OTQ5ODIzOTQ4MTE5NzlmODllLi4zNjY3ZDgyYmE1
YjVlODhlMjZiZjAzMDY0NjRmM2I3YzIzMzgxMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTEyMCw1ICsxMjAsNiBAQAogI2luY2x1
ZGUgIlJlbmRlcldpZGdldC5jcHAiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5jcHAiCiAjaW5j
bHVkZSAiU2Nyb2xsQmVoYXZpb3IuY3BwIgorI2luY2x1ZGUgIlRleHRQYWludGVyLmNwcCIKICNp
bmNsdWRlICJicmVha19saW5lcy5jcHAiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4NzQzM2FjNDYxOWY3ZjEyMGY1ZDU4NTdiZjY1MjFjNTI4
NjE1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXh0UGFpbnRlci5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0Lmgi
CisjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitU
ZXh0UGFpbnRlcjo6VGV4dFBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29sIHBh
aW50U2VsZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHksIGNv
bnN0IEZvbnQmIGZvbnQsCisgICAgaW50IHN0YXJ0UG9zaXRpb25JblRleHRSdW4sIGludCBlbmRQ
b3NpdGlvbkluVGV4dEJveFN0cmluZywgaW50IGxlbmd0aCwgY29uc3QgQXRvbWljU3RyaW5nJiBl
bXBoYXNpc01hcmssIFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5lZFRleHQsIFRleHRSdW4mIHRl
eHRSdW4sCisgICAgRmxvYXRSZWN0JiBib3hSZWN0LCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBp
bnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25z
dCBTaGFkb3dEYXRhKiBzZWxlY3Rpb25TaGFkb3csCisgICAgYm9vbCB0ZXh0Qm94SXNIb3Jpem9u
dGFsLCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIFRleHRQYWludFN0eWxlJiBzZWxl
Y3Rpb25QYWludFN0eWxlKQorICAgIDogbV9wYWludFNlbGVjdGVkVGV4dE9ubHkocGFpbnRTZWxl
Y3RlZFRleHRPbmx5KQorICAgICwgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkocGFpbnRT
ZWxlY3RlZFRleHRTZXBhcmF0ZWx5KQorICAgICwgbV9mb250KGZvbnQpCisgICAgLCBtX3N0YXJ0
UG9zaXRpb25JblRleHRSdW4oc3RhcnRQb3NpdGlvbkluVGV4dFJ1bikKKyAgICAsIG1fZW5kUG9z
aXRpb25JblRleHRSdW4oZW5kUG9zaXRpb25JblRleHRCb3hTdHJpbmcpCisgICAgLCBtX2xlbmd0
aChsZW5ndGgpCisgICAgLCBtX2VtcGhhc2lzTWFyayhlbXBoYXNpc01hcmspCisgICAgLCBtX2Nv
bWJpbmVkVGV4dChjb21iaW5lZFRleHQpCisgICAgLCBtX3RleHRSdW4odGV4dFJ1bikKKyAgICAs
IG1fYm94UmVjdChib3hSZWN0KQorICAgICwgbV90ZXh0T3JpZ2luKHRleHRPcmlnaW4pCisgICAg
LCBtX2VtcGhhc2lzTWFya09mZnNldChlbXBoYXNpc01hcmtPZmZzZXQpCisgICAgLCBtX3RleHRC
b3hJc0hvcml6b250YWwodGV4dEJveElzSG9yaXpvbnRhbCkKKyAgICAsIG1fc2F2ZWREcmF3aW5n
U3RhdGVGb3JNYXNrKCZjb250ZXh0LCAmdGV4dFBhaW50U3R5bGUsICZzZWxlY3Rpb25QYWludFN0
eWxlLCB0ZXh0U2hhZG93LCBzZWxlY3Rpb25TaGFkb3cpCit7Cit9CisKK3N0YXRpYyB2b2lkIGRy
YXdUZXh0T3JFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBo
YXNpc01hcmssCisgICAgaW50IGVtcGhhc2lzTWFya09mZnNldCwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGNvbnN0IGludCBmcm9tLCBjb25zdCBpbnQgdG8pCit7CisgICAgaWYgKGVtcGhhc2lz
TWFyay5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwg
cG9pbnQsIGZyb20sIHRvKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJhd0VtcGhhc2lz
TWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBwb2ludCArIEludFNpemUoMCwgZW1w
aGFzaXNNYXJrT2Zmc2V0KSwgZnJvbSwgdG8pOworfQorCitzdGF0aWMgdm9pZCBwYWludFRleHRX
aXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLAor
ICAgIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgaW50IHRydW5jYXRpb25Qb2ludCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0LAorICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgYm9v
bCBzdHJva2VkLCBib29sIGhvcml6b250YWwpCit7CisgICAgQ29sb3IgZmlsbENvbG9yID0gY29u
dGV4dC0+ZmlsbENvbG9yKCk7CisgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRl
eHQtPmZpbGxDb2xvclNwYWNlKCk7CisgICAgYm9vbCBvcGFxdWUgPSAhZmlsbENvbG9yLmhhc0Fs
cGhhKCk7CisgICAgaWYgKCFvcGFxdWUpCisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKKworICAgIGRvIHsKKyAgICAgICAgSW50U2l6
ZSBleHRyYU9mZnNldDsKKyAgICAgICAgaWYgKHNoYWRvdykKKyAgICAgICAgICAgIGV4dHJhT2Zm
c2V0ID0gcm91bmRlZEludFNpemUoSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNz
Q29udGV4dChjb250ZXh0LCBzaGFkb3csIGJveFJlY3QsIHN0cm9rZWQsIG9wYXF1ZSwgaG9yaXpv
bnRhbCkpOworICAgICAgICBlbHNlIGlmICghb3BhcXVlKQorICAgICAgICAgICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworCisgICAgICAgIGlmIChz
dGFydE9mZnNldCA8PSBlbmRPZmZzZXQpCisgICAgICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNN
YXJrcygqY29udGV4dCwgZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtP
ZmZzZXQsIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGVuZE9mZnNldCA+IDApCisgICAgICAg
ICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoKmNvbnRleHQsIGZvbnQsIHRleHRSdW4s
IGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZz
ZXQsIDAsIGVuZE9mZnNldCk7CisgICAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCB0cnVuY2F0
aW9uUG9pbnQpCisgICAgICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoKmNvbnRl
eHQsIGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0
T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0T2Zmc2V0LCB0cnVuY2F0aW9uUG9pbnQpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFzaGFkb3cpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKQorICAgICAgICAg
ICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250ZXh0
LT5jbGVhclNoYWRvdygpOworCisgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOworICAg
IH0gd2hpbGUgKHNoYWRvdyB8fCBzdHJva2VkIHx8ICFvcGFxdWUpOworfQorCitlbnVtIFJvdGF0
aW9uRGlyZWN0aW9uIHsgQ291bnRlcmNsb2Nrd2lzZSwgQ2xvY2t3aXNlIH07CisKK3N0YXRpYyBp
bmxpbmUgQWZmaW5lVHJhbnNmb3JtIHJvdGF0aW9uKGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwg
Um90YXRpb25EaXJlY3Rpb24gY2xvY2t3aXNlKQoreworICAgIHJldHVybiBjbG9ja3dpc2UgPyBB
ZmZpbmVUcmFuc2Zvcm0oMCwgMSwgLTEsIDAsIGJveFJlY3QueCgpICsgYm94UmVjdC5tYXhZKCks
IGJveFJlY3QubWF4WSgpIC0gYm94UmVjdC54KCkpCisgICAgICAgIDogQWZmaW5lVHJhbnNmb3Jt
KDAsIC0xLCAxLCAwLCBib3hSZWN0LngoKSAtIGJveFJlY3QubWF4WSgpLCBib3hSZWN0LngoKSAr
IGJveFJlY3QubWF4WSgpKTsKK30KKwordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KCkKK3sK
KyAgICBBU1NFUlQobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0UGFpbnRTdHlsZSk7
CisgICAgQVNTRVJUKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uUGFpbnRT
dHlsZSk7CisgICAgCisgICAgRmxvYXRQb2ludCBib3hPcmlnaW4gPSBib3hSZWN0KCkubG9jYXRp
b24oKTsKKworICAgIGlmICghbV9wYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKKyAgICAgICAgLy8g
Rm9yIHN0cm9rZWQgcGFpbnRpbmcsIHdlIGhhdmUgdG8gY2hhbmdlIHRoZSB0ZXh0IGRyYXdpbmcg
bW9kZS4gSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVhdmUgdGhhdCBtdXRhdGVkIGFzIGEg
c2lkZQorICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hlbiB3ZSBrbm93IHdlJ3JlIHN0cm9r
aW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fc2F2
ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0cm9rZVdpZHRoID4gMCk7
CisKKyAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCptX3NhdmVkRHJhd2luZ1N0YXRlRm9y
TWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0
eWxlKTsKKyAgICAgICAgaWYgKCFtX3BhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSB8fCBtX2Vu
ZFBvc2l0aW9uSW5UZXh0UnVuIDw9IG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1bikgeworICAgICAg
ICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRvLWxlZnQgdGV4dCBjb3JyZWN0bHkuCisg
ICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFz
ay5tX2NvbnRleHQsIG1fZm9udCwgbV90ZXh0UnVuLCBudWxsQXRvbSwgMCwgMCwgbV9sZW5ndGgs
IG1fbGVuZ3RoLCBtX3RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZv
ck1hc2subV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWlu
dFN0eWxlLT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MobV9zYXZlZERyYXdpbmdT
dGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2ZvbnQsIG1fdGV4dFJ1biwgbnVsbEF0b20sIDAsIG1f
ZW5kUG9zaXRpb25JblRleHRSdW4sIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgs
IG1fdGV4dE9yaWdpbiwgbV9ib3hSZWN0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3Rl
eHRTaGFkb3csIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0
cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKworICAgICAgICBpZiAoIW1f
ZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250
ZXh0KCptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2lu
Z1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlLCBVc2VFbXBoYXNpc01hcmtDb2xvcik7CisK
KyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1biwgb2JqZWN0UmVwbGFjZW1l
bnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7Cisg
ICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQg
PyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiBtX3RleHRSdW47CisgICAgICAg
ICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/
IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1fYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3Jp
Z2luLnkoKSArIG1fZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpKSA6IG1fdGV4dE9yaWdpbjsK
KyAgICAgICAgICAgIGlmIChtX2NvbWJpbmVkVGV4dCkKKyAgICAgICAgICAgICAgICBtX3NhdmVk
RHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJl
Y3QsIENsb2Nrd2lzZSkpOworCisgICAgICAgICAgICBpZiAoIW1fcGFpbnRTZWxlY3RlZFRleHRT
ZXBhcmF0ZWx5IHx8IG1fZW5kUG9zaXRpb25JblRleHRSdW4gPD0gbV9zdGFydFBvc2l0aW9uSW5U
ZXh0UnVuKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRvLWxl
ZnQgdGV4dCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
bV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2NvbWJpbmVkVGV4dCA/IG1f
Y29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IG1fZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1
biwgbV9lbXBoYXNpc01hcmssIG1fZW1waGFzaXNNYXJrT2Zmc2V0LCAwLCBtX2xlbmd0aCwgbV9s
ZW5ndGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdT
dGF0ZUZvck1hc2subV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3Rl
eHRQYWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyht
X3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fY29tYmluZWRUZXh0ID8gbV9j
b21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9mb250LCBlbXBoYXNpc01hcmtUZXh0UnVu
LCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtPZmZzZXQsIG1fZW5kUG9zaXRpb25JblRl
eHRSdW4sIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgsIGVtcGhhc2lzTWFya1Rl
eHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0U2hh
ZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlLT5zdHJva2VX
aWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7CisKKyAgICAgICAgICAgIGlmIChtX2Nv
bWJpbmVkVGV4dCkKKyAgICAgICAgICAgICAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5t
X2NvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJlY3QsIENvdW50ZXJjbG9ja3dpc2Up
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgobV9wYWludFNlbGVjdGVkVGV4dE9ubHkg
fHwgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpICYmIG1fc3RhcnRQb3NpdGlvbkluVGV4
dFJ1biA8IG1fZW5kUG9zaXRpb25JblRleHRSdW4pIHsKKyAgICAgICAgLy8gcGFpbnQgb25seSB0
aGUgdGV4dCB0aGF0IGlzIHNlbGVjdGVkCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBtX3Nh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlvblBhaW50U3R5bGUtPnN0cm9rZVdpZHRo
ID4gMCk7CisKKyAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCptX3NhdmVkRHJhd2luZ1N0
YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVj
dGlvblBhaW50U3R5bGUpOworICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJh
d2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fZm9udCwgbV90ZXh0UnVuLCBudWxsQXRvbSwg
MCwgbV9zdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuLCBtX2xl
bmd0aCwgbV90ZXh0T3JpZ2luLCBtX2JveFJlY3QsIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNr
Lm1fc2VsZWN0aW9uU2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlv
blBhaW50U3R5bGUtPnN0cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKyAg
ICAgICAgaWYgKCFtX2VtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHVwZGF0
ZUdyYXBoaWNzQ29udGV4dCgqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCAq
bV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxlLCBVc2VFbXBo
YXNpc01hcmtDb2xvcik7CisKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1
biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50
Q2hhcmFjdGVyLCAxKSk7CisgICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVu
ID0gbV9jb21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiBt
X3RleHRSdW47CisgICAgICAgICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4g
PSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1fYm94UmVjdC53
aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSArIG1fZm9udC5mb250TWV0cmljcygpLmFzY2VudCgp
KSA6IG1fdGV4dE9yaWdpbjsKKyAgICAgICAgICAgIGlmIChtX2NvbWJpbmVkVGV4dCkKKyAgICAg
ICAgICAgICAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQtPmNvbmNhdENU
TShyb3RhdGlvbihtX2JveFJlY3QsIENsb2Nrd2lzZSkpOworCisgICAgICAgICAgICBwYWludFRl
eHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fY29t
YmluZWRUZXh0ID8gbV9jb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9mb250LCBlbXBo
YXNpc01hcmtUZXh0UnVuLCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtPZmZzZXQsIG1f
c3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9lbmRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgs
IGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZv
ck1hc2subV9zZWxlY3Rpb25TaGFkb3csIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2Vs
ZWN0aW9uUGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwLCBtX3RleHRCb3hJc0hvcml6b250YWwp
OworCisgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCisgICAgICAgICAgICAgICAgbV9z
YXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24obV9i
b3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
VGV4dFBhaW50ZXI6OnBhaW50VGV4dEluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IGFtb3VudFRvSW5jcmVhc2VTdHJva2VXaWR0aEJ5KQoreworICAgIFNhdmVkRHJhd2lu
Z1N0YXRlRm9yTWFzayBzYXZlZERyYXdpbmdTdGF0ZUZvck1hc2sgPSBtX3NhdmVkRHJhd2luZ1N0
YXRlRm9yTWFzazsKKyAgICAKKyAgICBBU1NFUlQobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2su
bV90ZXh0UGFpbnRTdHlsZSk7CisgICAgQVNTRVJUKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNr
Lm1fc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2su
bV9jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90
ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggKz0gYW1vdW50VG9JbmNyZWFzZVN0cm9rZVdpZHRo
Qnk7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxl
LT5zdHJva2VXaWR0aCArPSBhbW91bnRUb0luY3JlYXNlU3Ryb2tlV2lkdGhCeTsKKyAgICBtX3Nh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRTaGFkb3cgPSBudWxscHRyOworICAgIG1fc2F2
ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uU2hhZG93ID0gbnVsbHB0cjsKKyAgICBw
YWludFRleHQoKTsKKworICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrID0gc2F2ZWREcmF3
aW5nU3RhdGVGb3JNYXNrOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYzNlZjY4ZDQ2MmRjYTZmYjk5
MGU2YmNjYWNkNmQ0NTI2NGQ0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgVGV4
dFBhaW50ZXJfaAorI2RlZmluZSBUZXh0UGFpbnRlcl9oCisKKyNpbmNsdWRlICJSZW5kZXJUZXh0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyQ29tYmluZVRleHQ7CisK
K3N0cnVjdCBUZXh0UGFpbnRTdHlsZTsKKworc3RydWN0IFNhdmVkRHJhd2luZ1N0YXRlRm9yTWFz
ayB7CisgICAgU2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgVGV4dFBhaW50U3R5bGUqIHRleHRQYWludFN0eWxlLCBUZXh0UGFpbnRTdHlsZSogc2VsZWN0
aW9uUGFpbnRTdHlsZSwKKyAgICBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25zdCBT
aGFkb3dEYXRhKiBzZWxlY3Rpb25TaGFkb3cpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CisgICAgICAgICwgbV90ZXh0UGFpbnRTdHlsZSh0ZXh0UGFpbnRTdHlsZSkKKyAgICAgICAgLCBt
X3NlbGVjdGlvblBhaW50U3R5bGUoc2VsZWN0aW9uUGFpbnRTdHlsZSkKKyAgICAgICAgLCBtX3Rl
eHRTaGFkb3codGV4dFNoYWRvdykKKyAgICAgICAgLCBtX3NlbGVjdGlvblNoYWRvdyhzZWxlY3Rp
b25TaGFkb3cpCisgICAgeworICAgIH0KKyAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsK
KyAgICBUZXh0UGFpbnRTdHlsZSogbV90ZXh0UGFpbnRTdHlsZTsKKyAgICBUZXh0UGFpbnRTdHls
ZSogbV9zZWxlY3Rpb25QYWludFN0eWxlOworICAgIGNvbnN0IFNoYWRvd0RhdGEqIG1fdGV4dFNo
YWRvdzsKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3NlbGVjdGlvblNoYWRvdzsKK307CisKK2Ns
YXNzIFRleHRQYWludGVyIHsKK3B1YmxpYzoKKyAgICBUZXh0UGFpbnRlcihHcmFwaGljc0NvbnRl
eHQmLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNl
cGFyYXRlbHksIGNvbnN0IEZvbnQmLAorICAgIGludCBzdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBp
bnQgZW5kUG9zaXRpb25JblRleHRCb3hTdHJpbmcsIGludCBsZW5ndGgsIGNvbnN0IEF0b21pY1N0
cmluZyYgZW1waGFzaXNNYXJrLCBSZW5kZXJDb21iaW5lVGV4dCosCisgICAgVGV4dFJ1biYsIEZs
b2F0UmVjdCYgYm94UmVjdCwgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgaW50IGVtcGhhc2lzTWFy
a09mZnNldCwgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSog
c2VsZWN0aW9uU2hhZG93LAorICAgIGJvb2wgdGV4dEJveElzSG9yaXpvbnRhbCwgVGV4dFBhaW50
U3R5bGUmIG5vblNlbGVjdGlvblBhaW50U3R5bGUsIFRleHRQYWludFN0eWxlJiBzZWxlY3Rpb25Q
YWludFN0eWxlKTsKKyAgICAKKyAgICBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2JveFJlY3Q7IH0KKyAgICB2b2lkIHBhaW50VGV4dCgpOworICAgIHZvaWQgcGFp
bnRUZXh0SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IGFtb3VudFRvSW5jcmVhc2VT
dHJva2VXaWR0aEJ5KTsKKworcHJpdmF0ZToKKyAgICBib29sIG1fcGFpbnRTZWxlY3RlZFRleHRP
bmx5OworICAgIGJvb2wgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHk7CisgICAgY29uc3Qg
Rm9udCYgbV9mb250OworICAgIGludCBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW47CisgICAgaW50
IG1fZW5kUG9zaXRpb25JblRleHRSdW47CisgICAgaW50IG1fbGVuZ3RoOworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbV9lbXBoYXNpc01hcms7CisgICAgUmVuZGVyQ29tYmluZVRleHQqIG1fY29t
YmluZWRUZXh0OworICAgIFRleHRSdW4mIG1fdGV4dFJ1bjsKKyAgICBGbG9hdFJlY3QmIG1fYm94
UmVjdDsKKyAgICBGbG9hdFBvaW50JiBtX3RleHRPcmlnaW47CisgICAgaW50IG1fZW1waGFzaXNN
YXJrT2Zmc2V0OworICAgIGJvb2wgbV90ZXh0Qm94SXNIb3Jpem9udGFsOworICAgIFNhdmVkRHJh
d2luZ1N0YXRlRm9yTWFzayBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzazsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRleHRQYWludGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215206</attachid>
            <date>2013-10-25 13:34:26 -0700</date>
            <delta_ts>2013-10-25 14:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123355-20131025133425.patch</filename>
            <type>text/plain</type>
            <size>34416</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzOTRlMzgyMjI1ZDYz
OGNlNTFiMGQzYzZhZmMzNGJiNWM3YmUxYS4uNTQ4ODhhOWQ3NjlhYTkxYzc0NzJhYjY2M2M0MmFk
YWQ1MGZkNzhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyB0
ZXh0IGlzbid0IG1vZHVsYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMzM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudGluZyB0ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIHJlcXVpcmVz
IGRyYXdpbmcgdGV4dAorICAgICAgICB0d2ljZSAob25jZSByZWd1bGFybHksIGFuZCBvbmNlIHdp
dGggYSB0aGljayBvdXRsaW5lIGludG8gYSBtYXNrKS4KKyAgICAgICAgVGhpcyBwYXRjaCBwdWxs
cyBvdXQgdGhlIHJlbGV2YW50IHRleHQgZHJhd2luZyBjb2RlIGZyb20KKyAgICAgICAgSW5saW5l
VGV4dEJveCBpbnRvIGEgbmV3IGNsYXNzIHdoaWNoIGNhbiBiZSByZS11c2VkIHRvIGRyYXcgdGV4
dAorICAgICAgICBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICBCZWNhdXNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBvYnNlcnZhYmxlIGRpZmZlcmVuY2UsIG5vIHRlc3RzIG5lZWQgdG8gYmUgdXBkYXRl
ZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNs
YXNzCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkaW5nIG5ldyBUZXh0UGFpbnRl
ciBjbGFzcworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IEFkZGlu
ZyBuZXcgVGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6IEFkZGluZyBuZXcgVGV4dFBhaW50ZXIKKyAgICAgICAgY2xhc3MK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGluZyBuZXcg
VGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6IE1vdmluZyB0ZXh0IGRy
YXdpbmcgY29kZSBmcm9tCisgICAgICAgIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwOiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNsYXNzCisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRlcjo6VGV4dFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1Rl
eHRPckVtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRUZXh0V2l0aFNoYWRv
d3MpOgorICAgICAgICAoV2ViQ29yZTo6cm90YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFBhaW50ZXI6OnBhaW50VGV4dCk6IE5ldyBsb2NhdGlvbiBmb3IgdGV4dCBkcmF3aW5nCisgICAg
ICAgIGNvZGUKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRJbkNvbnRl
eHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNhdmVkRHJhd2luZ1N0YXRlRm9yTWFzazo6U2F2ZWREcmF3aW5nU3RhdGVGb3JN
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpib3hSZWN0KToKKwogMjAxMy0x
MC0yNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5jb21w
bGljYXRlIHNvbWUgb2YgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGNlMzUzMzRiMWI0MzYxMWI2N2ZkOGU4N2M2MTdhZTMyNDFhYTQ0OGUuLjhmNjhm
ZDMxN2MwNWY4NTg1MWJlYzIzMGNjMmNjZTQyNjZjOWJlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yMTc5LDYgKzIxNzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRBdXRvc2l6
ZXIuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorICAgIHJlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHAKICAgICByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCiAKICAgICByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggMzdlNDJmZjA1ZGZiMTZhOWQ5NzQyOGYxYjdkNWNjMWE0YmJjZTYzNC4uMGMx
Yjg0YzFlOGZlNDE5Yjk3MGY5NjQ0ZjBiN2ZiNTNlMDAzOGNlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC00NDkxLDYgKzQ0OTEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludFN0eWxlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVmVydGljYWxQb3NpdGlvbkNhY2hlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGU4YTc2ZTgyMTc4OGY5
NTJkM2Y4ZWE1MmI1OGY2MTFjYjIyMjcxZDYuLjkxODYzMDc4ZWQxZjVmNjdlNTBjYmY5MDNlMTAw
ZTUxYTg0MmNmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagpAQCAtMTE3MjAsNiArMTE3MjAsMjAgQEAKICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50ZXIuY3BwIj4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx4bWxcRE9NUGFyc2Vy
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHhtbFxOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuY3BwIiAvPgpAQCAtMTk2OTcsNiArMTk3MTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRhYmxlTGF5b3V0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50U3R5bGUuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRyYWlsaW5nRmxvYXRzUm9vdElubGlu
ZUJveC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXG1hdGhtbFxS
ZW5kZXJNYXRoTUxCbG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXG1hdGhtbFxSZW5kZXJNYXRoTUxGZW5jZWQuaCIgLz4KQEAgLTIwNzYwLDQgKzIwNzc1LDQg
QEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdl
dHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDkyZGE4OWVkZGM0ZWRmOTZkOGNj
YzQ5OGQ5ZjhkYWJiOTFjYjM4ZGQuLmIzYzFlZTUxOWU2NDQ1YjU0ZmMxY2IyZjk1ZTBiZTBiYTgx
NDI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI5NDAsNiArMjk0MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzdmc8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5jcHAi
PgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHhtbFxET01QYXJzZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+eG1sPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05NjE5LDYgKzk2MjIsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRhYmxlTGF5b3V0LmgiPgogICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5oIj4KKyAgICAgIDxGaWx0
ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgiPgogICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE0OTgx
LDQgKzE0OTg3LDQgQEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAg
PC9NQVNNPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDllMjRjN2ZmNjRhNzNmYjk2Mjc5OWNlODQyZDdiMjQw
YmEzNDA3OS4uYTMzMzZmZjRkZDU2ODJkNTI2YWE2NGU1ZjA2ZDZiNTlmMTU4NDY2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODI2LDYgKzgyNiw4IEBACiAJCTFDMTFDQ0M2MEFBNjA5MzcwMERBREIyMCAvKiBET01Eb2N1bWVu
dEZyYWdtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRG
cmFnbWVudC5oICovOyB9OwogCQkxQzExQ0NDNzBBQTYwOTM3MDBEQURCMjAgLyogRE9NQ0RBVEFT
ZWN0aW9uLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9u
LmggKi87IH07CiAJCTFDMTFDQ0M4MEFBNjA5MzcwMERBREIyMCAvKiBET01IVE1MRWxlbWVudC5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODVERjJFRUIwQUEzODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50LmggKi87IH07
CisJCTFDMThEQTU4MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4REE1NjE4MUFGNkE1MDBD
NEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovOyB9OworCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVG
MjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDMThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovOyB9
OwogCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdF
MjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKIAkJMUMyNjQ5N0Mw
RDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMu
Y3BwICovOyB9OwogCQkxQzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM0QzhGMDAwQUQ4NUQ4NzAwOTQ3NUNFIC8qIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzMxMSw2ICs3
MzEzLDggQEAKIAkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8qIFByb3h5U2VydmVyQ0ZOZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlTZXJ2ZXJDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkUxMTk3MENCRkZDQzQwMDMw
MTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0
Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNl
dFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxOERBNTYxODFBRjZB
NTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRleHRQYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBG
MiAvKiBQYWdlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2VNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzNUNEMzE0RTg1NDRG
MDA0RTEwRUEgLyogSW5zcGVjdG9yLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW5zcGVjdG9yLmpzb247IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc4Nyw2ICsyMDc5MSw4IEBACiAJCQkJRTRDOTFBMEQx
ODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8sCiAJCQkJMzdGQzk2REExMTA0
RUQ3MTAwM0UxRkFEIC8qIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovLAogCQkJCUJD
QTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLywKKwkJ
CQkxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovLAorCQkJCTFD
MThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSByZW5kZXJpbmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjE1NjksNiAr
MjE1NzUsNyBAQAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQgLyog
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4
MTIzOTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJp
bGl0eVNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk0ODlGQzcxMkMwMEYwMzAwRDgz
RjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA5
RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNzI0Niw2ICsyNzI1Myw3IEBACiAJCQkJRkVBRDdEODcxNkMzMzlFRTAwRDQ2NzBC
IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdC
QzZBNTQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTU2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMThEQTU4MTgxQUY2QTUwMEM0RUYy
MiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTM2RkQxNjE2Qzc4MjY1
MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4RTA4RkYxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTVBMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5
bmMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggMzQ3MDM2ZDZkNzc1YzFkNzBiYmE3YTA3ODg3ODY4YzU3MTJkN2E3OC4u
ZTE2NWY5MDhmNDU0N2E0YmU1NTVjMzFhOTg3NjhkZDc4MWVhMzQ4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIKICNpbmNs
dWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
Mzk3LDU0ICszOTgsNiBAQCBGbG9hdFNpemUgSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dy
YXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIGV4dHJh
T2Zmc2V0OwogfQogCi1zdGF0aWMgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4s
IGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGludCB0cnVuY2F0aW9uUG9pbnQsIGNv
bnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywg
Ym9vbCBzdHJva2VkLCBib29sIGhvcml6b250YWwpCi17Ci0gICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNv
bnRleHQtPmZpbGxDb2xvclNwYWNlKCk7Ci0gICAgYm9vbCBvcGFxdWUgPSBmaWxsQ29sb3IuYWxw
aGEoKSA9PSAyNTU7Ci0gICAgaWYgKCFvcGFxdWUpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKLQotICAgIGRvIHsKLSAgICAgICAg
SW50U2l6ZSBleHRyYU9mZnNldDsKLSAgICAgICAgaWYgKHNoYWRvdykKLSAgICAgICAgICAgIGV4
dHJhT2Zmc2V0ID0gcm91bmRlZEludFNpemUoSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dy
YXBoaWNzQ29udGV4dChjb250ZXh0LCBzaGFkb3csIGJveFJlY3QsIHN0cm9rZWQsIG9wYXF1ZSwg
aG9yaXpvbnRhbCkpOwotICAgICAgICBlbHNlIGlmICghb3BhcXVlKQotICAgICAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOwotCi0gICAgICAg
IGlmIChzdGFydE9mZnNldCA8PSBlbmRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmIChlbXBoYXNp
c01hcmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQs
IHRleHRSdW4sIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhh
c2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFP
ZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lzTWFya09mZnNldCksIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAp
IHsKLSAgICAgICAgICAgICAgICBpZiAoZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiAr
IGV4dHJhT2Zmc2V0LCAgMCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4s
IGVtcGhhc2lzTWFyaywgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0ICsgSW50U2l6ZSgwLCBlbXBo
YXNpc01hcmtPZmZzZXQpLCAgMCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChzdGFydE9mZnNldCA8IHRydW5jYXRpb25Qb2ludCkgewotICAgICAgICAgICAgICAg
IGlmIChlbXBoYXNpc01hcmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0
T2Zmc2V0LCB0cnVuY2F0aW9uUG9pbnQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1w
aGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lz
TWFya09mZnNldCksICBzdGFydE9mZnNldCwgdHJ1bmNhdGlvblBvaW50KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICghc2hhZG93KQotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bmV4dCgpIHx8IHN0cm9rZWQgfHwgIW9wYXF1ZSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLQotICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQo
KTsKLSAgICB9IHdoaWxlIChzaGFkb3cgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKTsKLX0KLQogYm9v
bCBJbmxpbmVUZXh0Qm94OjpnZXRFbXBoYXNpc01hcmtQb3NpdGlvbihjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFRleHRFbXBoYXNpc1Bvc2l0aW9uJiBlbXBoYXNpc1Bvc2l0aW9uKSBjb25zdAog
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSB0ZXh0IGVt
cGhhc2lzIG1hcmtzIGFuZCB0aGV5IGFyZSBzdXBwcmVzc2VkIGJ5IHJ1YnkgdGV4dC4KQEAgLTYy
OCw1OSArNTgxLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAgY29uc3QgU2hhZG93
RGF0YSogdGV4dFNoYWRvdyA9IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8gMCA6IGxpbmVT
dHlsZS50ZXh0U2hhZG93KCk7CiAKLSAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0T25seSkgewot
ICAgICAgICAvLyBGb3Igc3Ryb2tlZCBwYWludGluZywgd2UgaGF2ZSB0byBjaGFuZ2UgdGhlIHRl
eHQgZHJhd2luZyBtb2RlLiAgSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVhdmUgdGhhdCBt
dXRhdGVkIGFzIGEgc2lkZQotICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hlbiB3ZSBrbm93
IHdlJ3JlIHN0cm9raW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VX
aWR0aCA+IDApOwotCi0gICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCgqY29udGV4dCwgdGV4
dFBhaW50U3R5bGUpOwotICAgICAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSB8
fCBlUG9zIDw9IHNQb3MpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdodC10
by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
Y29udGV4dCwgZm9udCwgdGV4dFJ1biwgbnVsbEF0b20sIDAsIDAsIGxlbmd0aCwgbGVuZ3RoLCB0
ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VXaWR0
aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwYWlu
dFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBudWxsQXRvbSwgMCwgZVBv
cywgc1BvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFp
bnRTdHlsZS5zdHJva2VXaWR0aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLQotICAgICAgICBpZiAo
IWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dCgqY29udGV4dCwgdGV4dFBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKLQot
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXh0UnVuLCBvYmplY3RSZXBsYWNlbWVu
dENoYXJhY3RlclRleHRSdW4sICgmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKLSAg
ICAgICAgICAgIFRleHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBjb21iaW5lZFRleHQgPyBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiB0ZXh0UnVuOwotICAgICAgICAgICAg
RmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gY29tYmluZWRUZXh0ID8gRmxvYXRQ
b2ludChib3hPcmlnaW4ueCgpICsgYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSAr
IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiB0ZXh0T3JpZ2luOwotICAgICAgICAgICAg
aWYgKGNvbWJpbmVkVGV4dCkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90
YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7Ci0KLSAgICAgICAgICAgIGlmICghcGFpbnRTZWxl
Y3RlZFRleHRTZXBhcmF0ZWx5IHx8IGVQb3MgPD0gc1BvcykgewotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAgICAgICAg
ICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGNvbWJpbmVkVGV4dCA/IGNvbWJp
bmVkVGV4dC0+b3JpZ2luYWxGb250KCkgOiBmb250LCBlbXBoYXNpc01hcmtUZXh0UnVuLCBlbXBo
YXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgMCwgbGVuZ3RoLCBsZW5ndGgsIGVtcGhhc2lz
TWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWludFN0eWxlLnN0cm9r
ZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgY29tYmluZWRUZXh0ID8gY29t
YmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IGZvbnQsIGVtcGhhc2lzTWFya1RleHRSdW4sIGVt
cGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCBlUG9zLCBzUG9zLCBsZW5ndGgsIGVtcGhh
c2lzTWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWludFN0eWxlLnN0
cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAgICAgICBpZiAoY29tYmlu
ZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihib3hS
ZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoKHBh
aW50U2VsZWN0ZWRUZXh0T25seSB8fCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpICYmIHNQ
b3MgPCBlUG9zKSB7Ci0gICAgICAgIC8vIHBhaW50IG9ubHkgdGhlIHRleHQgdGhhdCBpcyBzZWxl
Y3RlZAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQsIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKLQotICAgICAgICB1cGRh
dGVHcmFwaGljc0NvbnRleHQoKmNvbnRleHQsIHNlbGVjdGlvblBhaW50U3R5bGUpOwotICAgICAg
ICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBudWxsQXRvbSwg
MCwgc1BvcywgZVBvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCBzZWxlY3Rpb25TaGFk
b3csIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwLCBpc0hvcml6b250YWwoKSk7
Ci0gICAgICAgIGlmICghZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgdXBk
YXRlR3JhcGhpY3NDb250ZXh0KCpjb250ZXh0LCBzZWxlY3Rpb25QYWludFN0eWxlLCBVc2VFbXBo
YXNpc01hcmtDb2xvcik7Ci0KLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1
biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50
Q2hhcmFjdGVyLCAxKSk7Ci0gICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVu
ID0gY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuIDogdGV4
dFJ1bjsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IGNv
bWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAv
IDIsIGJveE9yaWdpbi55KCkgKyBmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogdGV4dE9y
aWdpbjsKLSAgICAgICAgICAgIGlmIChjb21iaW5lZFRleHQpCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwotCi0gICAgICAg
ICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBjb21iaW5lZFRleHQgPyBjb21iaW5l
ZFRleHQtPm9yaWdpbmFsRm9udCgpIDogZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1biwgZW1waGFz
aXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHNQb3MsIGVQb3MsIGxlbmd0aCwgZW1waGFzaXNN
YXJrVGV4dE9yaWdpbiwgYm94UmVjdCwgc2VsZWN0aW9uU2hhZG93LCBzZWxlY3Rpb25QYWludFN0
eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAgICAgICBpZiAo
Y29tYmluZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3RhdGlv
bihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgVGV4
dFBhaW50ZXIgdGV4dFBhaW50ZXIoKmNvbnRleHQsIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgcGFp
bnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBmb250LCBzUG9zLCBlUG9zLCBsZW5ndGgsIGVtcGhh
c2lzTWFyaywgY29tYmluZWRUZXh0LCB0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCBlbXBo
YXNpc01hcmtPZmZzZXQsIHRleHRTaGFkb3csIHNlbGVjdGlvblNoYWRvdywgaXNIb3Jpem9udGFs
KCksIHRleHRQYWludFN0eWxlLCBzZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICB0ZXh0UGFpbnRl
ci5wYWludFRleHQoKTsKIAogICAgIC8vIFBhaW50IGRlY29yYXRpb25zCiAgICAgVGV4dERlY29y
YXRpb24gdGV4dERlY29yYXRpb25zID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5P
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcApp
bmRleCBhNzFjMTRjN2U4Mzc2N2VmNGI5ZTk2OTQ5ODIzOTQ4MTE5NzlmODllLi4zNjY3ZDgyYmE1
YjVlODhlMjZiZjAzMDY0NjRmM2I3YzIzMzgxMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTEyMCw1ICsxMjAsNiBAQAogI2luY2x1
ZGUgIlJlbmRlcldpZGdldC5jcHAiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5jcHAiCiAjaW5j
bHVkZSAiU2Nyb2xsQmVoYXZpb3IuY3BwIgorI2luY2x1ZGUgIlRleHRQYWludGVyLmNwcCIKICNp
bmNsdWRlICJicmVha19saW5lcy5jcHAiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4NzQzM2FjNDYxOWY3ZjEyMGY1ZDU4NTdiZjY1MjFjNTI4
NjE1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXh0UGFpbnRlci5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0Lmgi
CisjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitU
ZXh0UGFpbnRlcjo6VGV4dFBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29sIHBh
aW50U2VsZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHksIGNv
bnN0IEZvbnQmIGZvbnQsCisgICAgaW50IHN0YXJ0UG9zaXRpb25JblRleHRSdW4sIGludCBlbmRQ
b3NpdGlvbkluVGV4dEJveFN0cmluZywgaW50IGxlbmd0aCwgY29uc3QgQXRvbWljU3RyaW5nJiBl
bXBoYXNpc01hcmssIFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5lZFRleHQsIFRleHRSdW4mIHRl
eHRSdW4sCisgICAgRmxvYXRSZWN0JiBib3hSZWN0LCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBp
bnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25z
dCBTaGFkb3dEYXRhKiBzZWxlY3Rpb25TaGFkb3csCisgICAgYm9vbCB0ZXh0Qm94SXNIb3Jpem9u
dGFsLCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIFRleHRQYWludFN0eWxlJiBzZWxl
Y3Rpb25QYWludFN0eWxlKQorICAgIDogbV9wYWludFNlbGVjdGVkVGV4dE9ubHkocGFpbnRTZWxl
Y3RlZFRleHRPbmx5KQorICAgICwgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkocGFpbnRT
ZWxlY3RlZFRleHRTZXBhcmF0ZWx5KQorICAgICwgbV9mb250KGZvbnQpCisgICAgLCBtX3N0YXJ0
UG9zaXRpb25JblRleHRSdW4oc3RhcnRQb3NpdGlvbkluVGV4dFJ1bikKKyAgICAsIG1fZW5kUG9z
aXRpb25JblRleHRSdW4oZW5kUG9zaXRpb25JblRleHRCb3hTdHJpbmcpCisgICAgLCBtX2xlbmd0
aChsZW5ndGgpCisgICAgLCBtX2VtcGhhc2lzTWFyayhlbXBoYXNpc01hcmspCisgICAgLCBtX2Nv
bWJpbmVkVGV4dChjb21iaW5lZFRleHQpCisgICAgLCBtX3RleHRSdW4odGV4dFJ1bikKKyAgICAs
IG1fYm94UmVjdChib3hSZWN0KQorICAgICwgbV90ZXh0T3JpZ2luKHRleHRPcmlnaW4pCisgICAg
LCBtX2VtcGhhc2lzTWFya09mZnNldChlbXBoYXNpc01hcmtPZmZzZXQpCisgICAgLCBtX3RleHRC
b3hJc0hvcml6b250YWwodGV4dEJveElzSG9yaXpvbnRhbCkKKyAgICAsIG1fc2F2ZWREcmF3aW5n
U3RhdGVGb3JNYXNrKCZjb250ZXh0LCAmdGV4dFBhaW50U3R5bGUsICZzZWxlY3Rpb25QYWludFN0
eWxlLCB0ZXh0U2hhZG93LCBzZWxlY3Rpb25TaGFkb3cpCit7Cit9CisKK3N0YXRpYyB2b2lkIGRy
YXdUZXh0T3JFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBo
YXNpc01hcmssCisgICAgaW50IGVtcGhhc2lzTWFya09mZnNldCwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGNvbnN0IGludCBmcm9tLCBjb25zdCBpbnQgdG8pCit7CisgICAgaWYgKGVtcGhhc2lz
TWFyay5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwg
cG9pbnQsIGZyb20sIHRvKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJhd0VtcGhhc2lz
TWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBwb2ludCArIEludFNpemUoMCwgZW1w
aGFzaXNNYXJrT2Zmc2V0KSwgZnJvbSwgdG8pOworfQorCitzdGF0aWMgdm9pZCBwYWludFRleHRX
aXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLAor
ICAgIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgaW50IHRydW5jYXRpb25Qb2ludCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0LAorICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgYm9v
bCBzdHJva2VkLCBib29sIGhvcml6b250YWwpCit7CisgICAgQ29sb3IgZmlsbENvbG9yID0gY29u
dGV4dC0+ZmlsbENvbG9yKCk7CisgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRl
eHQtPmZpbGxDb2xvclNwYWNlKCk7CisgICAgYm9vbCBvcGFxdWUgPSAhZmlsbENvbG9yLmhhc0Fs
cGhhKCk7CisgICAgaWYgKCFvcGFxdWUpCisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKKworICAgIGRvIHsKKyAgICAgICAgSW50U2l6
ZSBleHRyYU9mZnNldDsKKyAgICAgICAgaWYgKHNoYWRvdykKKyAgICAgICAgICAgIGV4dHJhT2Zm
c2V0ID0gcm91bmRlZEludFNpemUoSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNz
Q29udGV4dChjb250ZXh0LCBzaGFkb3csIGJveFJlY3QsIHN0cm9rZWQsIG9wYXF1ZSwgaG9yaXpv
bnRhbCkpOworICAgICAgICBlbHNlIGlmICghb3BhcXVlKQorICAgICAgICAgICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworCisgICAgICAgIGlmIChz
dGFydE9mZnNldCA8PSBlbmRPZmZzZXQpCisgICAgICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNN
YXJrcygqY29udGV4dCwgZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtP
ZmZzZXQsIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGVuZE9mZnNldCA+IDApCisgICAgICAg
ICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoKmNvbnRleHQsIGZvbnQsIHRleHRSdW4s
IGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZz
ZXQsIDAsIGVuZE9mZnNldCk7CisgICAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCB0cnVuY2F0
aW9uUG9pbnQpCisgICAgICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoKmNvbnRl
eHQsIGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0
T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0T2Zmc2V0LCB0cnVuY2F0aW9uUG9pbnQpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFzaGFkb3cpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKQorICAgICAgICAg
ICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250ZXh0
LT5jbGVhclNoYWRvdygpOworCisgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOworICAg
IH0gd2hpbGUgKHNoYWRvdyB8fCBzdHJva2VkIHx8ICFvcGFxdWUpOworfQorCitlbnVtIFJvdGF0
aW9uRGlyZWN0aW9uIHsgQ291bnRlcmNsb2Nrd2lzZSwgQ2xvY2t3aXNlIH07CisKK3N0YXRpYyBp
bmxpbmUgQWZmaW5lVHJhbnNmb3JtIHJvdGF0aW9uKGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwg
Um90YXRpb25EaXJlY3Rpb24gY2xvY2t3aXNlKQoreworICAgIHJldHVybiBjbG9ja3dpc2UgPyBB
ZmZpbmVUcmFuc2Zvcm0oMCwgMSwgLTEsIDAsIGJveFJlY3QueCgpICsgYm94UmVjdC5tYXhZKCks
IGJveFJlY3QubWF4WSgpIC0gYm94UmVjdC54KCkpCisgICAgICAgIDogQWZmaW5lVHJhbnNmb3Jt
KDAsIC0xLCAxLCAwLCBib3hSZWN0LngoKSAtIGJveFJlY3QubWF4WSgpLCBib3hSZWN0LngoKSAr
IGJveFJlY3QubWF4WSgpKTsKK30KKwordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KCkKK3sK
KyAgICBBU1NFUlQobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0UGFpbnRTdHlsZSk7
CisgICAgQVNTRVJUKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uUGFpbnRT
dHlsZSk7CisgICAgCisgICAgRmxvYXRQb2ludCBib3hPcmlnaW4gPSBib3hSZWN0KCkubG9jYXRp
b24oKTsKKworICAgIGlmICghbV9wYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKKyAgICAgICAgLy8g
Rm9yIHN0cm9rZWQgcGFpbnRpbmcsIHdlIGhhdmUgdG8gY2hhbmdlIHRoZSB0ZXh0IGRyYXdpbmcg
bW9kZS4gSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVhdmUgdGhhdCBtdXRhdGVkIGFzIGEg
c2lkZQorICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hlbiB3ZSBrbm93IHdlJ3JlIHN0cm9r
aW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fc2F2
ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0cm9rZVdpZHRoID4gMCk7
CisKKyAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCptX3NhdmVkRHJhd2luZ1N0YXRlRm9y
TWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0
eWxlKTsKKyAgICAgICAgaWYgKCFtX3BhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSB8fCBtX2Vu
ZFBvc2l0aW9uSW5UZXh0UnVuIDw9IG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1bikgeworICAgICAg
ICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRvLWxlZnQgdGV4dCBjb3JyZWN0bHkuCisg
ICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFz
ay5tX2NvbnRleHQsIG1fZm9udCwgbV90ZXh0UnVuLCBudWxsQXRvbSwgMCwgMCwgbV9sZW5ndGgs
IG1fbGVuZ3RoLCBtX3RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZv
ck1hc2subV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWlu
dFN0eWxlLT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MobV9zYXZlZERyYXdpbmdT
dGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2ZvbnQsIG1fdGV4dFJ1biwgbnVsbEF0b20sIDAsIG1f
ZW5kUG9zaXRpb25JblRleHRSdW4sIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgs
IG1fdGV4dE9yaWdpbiwgbV9ib3hSZWN0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3Rl
eHRTaGFkb3csIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0
cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKworICAgICAgICBpZiAoIW1f
ZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250
ZXh0KCptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2lu
Z1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlLCBVc2VFbXBoYXNpc01hcmtDb2xvcik7CisK
KyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1biwgb2JqZWN0UmVwbGFjZW1l
bnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7Cisg
ICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQg
PyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiBtX3RleHRSdW47CisgICAgICAg
ICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/
IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1fYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3Jp
Z2luLnkoKSArIG1fZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpKSA6IG1fdGV4dE9yaWdpbjsK
KyAgICAgICAgICAgIGlmIChtX2NvbWJpbmVkVGV4dCkKKyAgICAgICAgICAgICAgICBtX3NhdmVk
RHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJl
Y3QsIENsb2Nrd2lzZSkpOworCisgICAgICAgICAgICBpZiAoIW1fcGFpbnRTZWxlY3RlZFRleHRT
ZXBhcmF0ZWx5IHx8IG1fZW5kUG9zaXRpb25JblRleHRSdW4gPD0gbV9zdGFydFBvc2l0aW9uSW5U
ZXh0UnVuKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRvLWxl
ZnQgdGV4dCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
bV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2NvbWJpbmVkVGV4dCA/IG1f
Y29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IG1fZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1
biwgbV9lbXBoYXNpc01hcmssIG1fZW1waGFzaXNNYXJrT2Zmc2V0LCAwLCBtX2xlbmd0aCwgbV9s
ZW5ndGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdT
dGF0ZUZvck1hc2subV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3Rl
eHRQYWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyht
X3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fY29tYmluZWRUZXh0ID8gbV9j
b21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9mb250LCBlbXBoYXNpc01hcmtUZXh0UnVu
LCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtPZmZzZXQsIG1fZW5kUG9zaXRpb25JblRl
eHRSdW4sIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgsIGVtcGhhc2lzTWFya1Rl
eHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0U2hh
ZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlLT5zdHJva2VX
aWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7CisKKyAgICAgICAgICAgIGlmIChtX2Nv
bWJpbmVkVGV4dCkKKyAgICAgICAgICAgICAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5t
X2NvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJlY3QsIENvdW50ZXJjbG9ja3dpc2Up
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgobV9wYWludFNlbGVjdGVkVGV4dE9ubHkg
fHwgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpICYmIG1fc3RhcnRQb3NpdGlvbkluVGV4
dFJ1biA8IG1fZW5kUG9zaXRpb25JblRleHRSdW4pIHsKKyAgICAgICAgLy8gcGFpbnQgb25seSB0
aGUgdGV4dCB0aGF0IGlzIHNlbGVjdGVkCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBtX3Nh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlvblBhaW50U3R5bGUtPnN0cm9rZVdpZHRo
ID4gMCk7CisKKyAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCptX3NhdmVkRHJhd2luZ1N0
YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVj
dGlvblBhaW50U3R5bGUpOworICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJh
d2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fZm9udCwgbV90ZXh0UnVuLCBudWxsQXRvbSwg
MCwgbV9zdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuLCBtX2xl
bmd0aCwgbV90ZXh0T3JpZ2luLCBtX2JveFJlY3QsIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNr
Lm1fc2VsZWN0aW9uU2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlv
blBhaW50U3R5bGUtPnN0cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKyAg
ICAgICAgaWYgKCFtX2VtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHVwZGF0
ZUdyYXBoaWNzQ29udGV4dCgqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCAq
bV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxlLCBVc2VFbXBo
YXNpc01hcmtDb2xvcik7CisKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1
biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50
Q2hhcmFjdGVyLCAxKSk7CisgICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVu
ID0gbV9jb21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiBt
X3RleHRSdW47CisgICAgICAgICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4g
PSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1fYm94UmVjdC53
aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSArIG1fZm9udC5mb250TWV0cmljcygpLmFzY2VudCgp
KSA6IG1fdGV4dE9yaWdpbjsKKyAgICAgICAgICAgIGlmIChtX2NvbWJpbmVkVGV4dCkKKyAgICAg
ICAgICAgICAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQtPmNvbmNhdENU
TShyb3RhdGlvbihtX2JveFJlY3QsIENsb2Nrd2lzZSkpOworCisgICAgICAgICAgICBwYWludFRl
eHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fY29t
YmluZWRUZXh0ID8gbV9jb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9mb250LCBlbXBo
YXNpc01hcmtUZXh0UnVuLCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtPZmZzZXQsIG1f
c3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9lbmRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgs
IGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZv
ck1hc2subV9zZWxlY3Rpb25TaGFkb3csIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2Vs
ZWN0aW9uUGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwLCBtX3RleHRCb3hJc0hvcml6b250YWwp
OworCisgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCisgICAgICAgICAgICAgICAgbV9z
YXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24obV9i
b3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
VGV4dFBhaW50ZXI6OnBhaW50VGV4dEluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IGFtb3VudFRvSW5jcmVhc2VTdHJva2VXaWR0aEJ5KQoreworICAgIFNhdmVkRHJhd2lu
Z1N0YXRlRm9yTWFzayBzYXZlZERyYXdpbmdTdGF0ZUZvck1hc2sgPSBtX3NhdmVkRHJhd2luZ1N0
YXRlRm9yTWFzazsKKyAgICAKKyAgICBBU1NFUlQobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2su
bV90ZXh0UGFpbnRTdHlsZSk7CisgICAgQVNTRVJUKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNr
Lm1fc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2su
bV9jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90
ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggKz0gYW1vdW50VG9JbmNyZWFzZVN0cm9rZVdpZHRo
Qnk7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxl
LT5zdHJva2VXaWR0aCArPSBhbW91bnRUb0luY3JlYXNlU3Ryb2tlV2lkdGhCeTsKKyAgICBtX3Nh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRTaGFkb3cgPSBudWxscHRyOworICAgIG1fc2F2
ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uU2hhZG93ID0gbnVsbHB0cjsKKyAgICBw
YWludFRleHQoKTsKKworICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrID0gc2F2ZWREcmF3
aW5nU3RhdGVGb3JNYXNrOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYzNlZjY4ZDQ2MmRjYTZmYjk5
MGU2YmNjYWNkNmQ0NTI2NGQ0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgVGV4
dFBhaW50ZXJfaAorI2RlZmluZSBUZXh0UGFpbnRlcl9oCisKKyNpbmNsdWRlICJSZW5kZXJUZXh0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyQ29tYmluZVRleHQ7CisK
K3N0cnVjdCBUZXh0UGFpbnRTdHlsZTsKKworc3RydWN0IFNhdmVkRHJhd2luZ1N0YXRlRm9yTWFz
ayB7CisgICAgU2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgVGV4dFBhaW50U3R5bGUqIHRleHRQYWludFN0eWxlLCBUZXh0UGFpbnRTdHlsZSogc2VsZWN0
aW9uUGFpbnRTdHlsZSwKKyAgICBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25zdCBT
aGFkb3dEYXRhKiBzZWxlY3Rpb25TaGFkb3cpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CisgICAgICAgICwgbV90ZXh0UGFpbnRTdHlsZSh0ZXh0UGFpbnRTdHlsZSkKKyAgICAgICAgLCBt
X3NlbGVjdGlvblBhaW50U3R5bGUoc2VsZWN0aW9uUGFpbnRTdHlsZSkKKyAgICAgICAgLCBtX3Rl
eHRTaGFkb3codGV4dFNoYWRvdykKKyAgICAgICAgLCBtX3NlbGVjdGlvblNoYWRvdyhzZWxlY3Rp
b25TaGFkb3cpCisgICAgeworICAgIH0KKyAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsK
KyAgICBUZXh0UGFpbnRTdHlsZSogbV90ZXh0UGFpbnRTdHlsZTsKKyAgICBUZXh0UGFpbnRTdHls
ZSogbV9zZWxlY3Rpb25QYWludFN0eWxlOworICAgIGNvbnN0IFNoYWRvd0RhdGEqIG1fdGV4dFNo
YWRvdzsKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3NlbGVjdGlvblNoYWRvdzsKK307CisKK2Ns
YXNzIFRleHRQYWludGVyIHsKK3B1YmxpYzoKKyAgICBUZXh0UGFpbnRlcihHcmFwaGljc0NvbnRl
eHQmLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNl
cGFyYXRlbHksIGNvbnN0IEZvbnQmLAorICAgIGludCBzdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBp
bnQgZW5kUG9zaXRpb25JblRleHRCb3hTdHJpbmcsIGludCBsZW5ndGgsIGNvbnN0IEF0b21pY1N0
cmluZyYgZW1waGFzaXNNYXJrLCBSZW5kZXJDb21iaW5lVGV4dCosCisgICAgVGV4dFJ1biYsIEZs
b2F0UmVjdCYgYm94UmVjdCwgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgaW50IGVtcGhhc2lzTWFy
a09mZnNldCwgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSog
c2VsZWN0aW9uU2hhZG93LAorICAgIGJvb2wgdGV4dEJveElzSG9yaXpvbnRhbCwgVGV4dFBhaW50
U3R5bGUmIG5vblNlbGVjdGlvblBhaW50U3R5bGUsIFRleHRQYWludFN0eWxlJiBzZWxlY3Rpb25Q
YWludFN0eWxlKTsKKyAgICAKKyAgICBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2JveFJlY3Q7IH0KKyAgICB2b2lkIHBhaW50VGV4dCgpOworICAgIHZvaWQgcGFp
bnRUZXh0SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IGFtb3VudFRvSW5jcmVhc2VT
dHJva2VXaWR0aEJ5KTsKKworcHJpdmF0ZToKKyAgICBib29sIG1fcGFpbnRTZWxlY3RlZFRleHRP
bmx5OworICAgIGJvb2wgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHk7CisgICAgY29uc3Qg
Rm9udCYgbV9mb250OworICAgIGludCBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW47CisgICAgaW50
IG1fZW5kUG9zaXRpb25JblRleHRSdW47CisgICAgaW50IG1fbGVuZ3RoOworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbV9lbXBoYXNpc01hcms7CisgICAgUmVuZGVyQ29tYmluZVRleHQqIG1fY29t
YmluZWRUZXh0OworICAgIFRleHRSdW4mIG1fdGV4dFJ1bjsKKyAgICBGbG9hdFJlY3QmIG1fYm94
UmVjdDsKKyAgICBGbG9hdFBvaW50JiBtX3RleHRPcmlnaW47CisgICAgaW50IG1fZW1waGFzaXNN
YXJrT2Zmc2V0OworICAgIGJvb2wgbV90ZXh0Qm94SXNIb3Jpem9udGFsOworICAgIFNhdmVkRHJh
d2luZ1N0YXRlRm9yTWFzayBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzazsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRleHRQYWludGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215214</attachid>
            <date>2013-10-25 14:47:51 -0700</date>
            <delta_ts>2013-10-28 13:41:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123355-20131025144750.patch</filename>
            <type>text/plain</type>
            <size>35230</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzOTRlMzgyMjI1ZDYz
OGNlNTFiMGQzYzZhZmMzNGJiNWM3YmUxYS4uNTQ4ODhhOWQ3NjlhYTkxYzc0NzJhYjY2M2M0MmFk
YWQ1MGZkNzhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyB0
ZXh0IGlzbid0IG1vZHVsYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMzM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudGluZyB0ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIHJlcXVpcmVz
IGRyYXdpbmcgdGV4dAorICAgICAgICB0d2ljZSAob25jZSByZWd1bGFybHksIGFuZCBvbmNlIHdp
dGggYSB0aGljayBvdXRsaW5lIGludG8gYSBtYXNrKS4KKyAgICAgICAgVGhpcyBwYXRjaCBwdWxs
cyBvdXQgdGhlIHJlbGV2YW50IHRleHQgZHJhd2luZyBjb2RlIGZyb20KKyAgICAgICAgSW5saW5l
VGV4dEJveCBpbnRvIGEgbmV3IGNsYXNzIHdoaWNoIGNhbiBiZSByZS11c2VkIHRvIGRyYXcgdGV4
dAorICAgICAgICBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICBCZWNhdXNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBvYnNlcnZhYmxlIGRpZmZlcmVuY2UsIG5vIHRlc3RzIG5lZWQgdG8gYmUgdXBkYXRl
ZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNs
YXNzCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkaW5nIG5ldyBUZXh0UGFpbnRl
ciBjbGFzcworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IEFkZGlu
ZyBuZXcgVGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6IEFkZGluZyBuZXcgVGV4dFBhaW50ZXIKKyAgICAgICAgY2xhc3MK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGluZyBuZXcg
VGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6IE1vdmluZyB0ZXh0IGRy
YXdpbmcgY29kZSBmcm9tCisgICAgICAgIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwOiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNsYXNzCisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRlcjo6VGV4dFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1Rl
eHRPckVtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRUZXh0V2l0aFNoYWRv
d3MpOgorICAgICAgICAoV2ViQ29yZTo6cm90YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFBhaW50ZXI6OnBhaW50VGV4dCk6IE5ldyBsb2NhdGlvbiBmb3IgdGV4dCBkcmF3aW5nCisgICAg
ICAgIGNvZGUKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRJbkNvbnRl
eHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNhdmVkRHJhd2luZ1N0YXRlRm9yTWFzazo6U2F2ZWREcmF3aW5nU3RhdGVGb3JN
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpib3hSZWN0KToKKwogMjAxMy0x
MC0yNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5jb21w
bGljYXRlIHNvbWUgb2YgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGNlMzUzMzRiMWI0MzYxMWI2N2ZkOGU4N2M2MTdhZTMyNDFhYTQ0OGUuLjhmNjhm
ZDMxN2MwNWY4NTg1MWJlYzIzMGNjMmNjZTQyNjZjOWJlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yMTc5LDYgKzIxNzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRBdXRvc2l6
ZXIuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorICAgIHJlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHAKICAgICByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCiAKICAgICByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggMzdlNDJmZjA1ZGZiMTZhOWQ5NzQyOGYxYjdkNWNjMWE0YmJjZTYzNC4uMGMx
Yjg0YzFlOGZlNDE5Yjk3MGY5NjQ0ZjBiN2ZiNTNlMDAzOGNlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC00NDkxLDYgKzQ0OTEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludFN0eWxlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVmVydGljYWxQb3NpdGlvbkNhY2hlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGU4YTc2ZTgyMTc4OGY5
NTJkM2Y4ZWE1MmI1OGY2MTFjYjIyMjcxZDYuLjkxODYzMDc4ZWQxZjVmNjdlNTBjYmY5MDNlMTAw
ZTUxYTg0MmNmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagpAQCAtMTE3MjAsNiArMTE3MjAsMjAgQEAKICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50ZXIuY3BwIj4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx4bWxcRE9NUGFyc2Vy
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHhtbFxOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuY3BwIiAvPgpAQCAtMTk2OTcsNiArMTk3MTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRhYmxlTGF5b3V0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50U3R5bGUuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRyYWlsaW5nRmxvYXRzUm9vdElubGlu
ZUJveC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXG1hdGhtbFxS
ZW5kZXJNYXRoTUxCbG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXG1hdGhtbFxSZW5kZXJNYXRoTUxGZW5jZWQuaCIgLz4KQEAgLTIwNzYwLDQgKzIwNzc1LDQg
QEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdl
dHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDkyZGE4OWVkZGM0ZWRmOTZkOGNj
YzQ5OGQ5ZjhkYWJiOTFjYjM4ZGQuLmIzYzFlZTUxOWU2NDQ1YjU0ZmMxY2IyZjk1ZTBiZTBiYTgx
NDI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI5NDAsNiArMjk0MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzdmc8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5jcHAi
PgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHhtbFxET01QYXJzZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+eG1sPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05NjE5LDYgKzk2MjIsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRhYmxlTGF5b3V0LmgiPgogICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFpbnRlci5oIj4KKyAgICAgIDxGaWx0
ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgiPgogICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE0OTgx
LDQgKzE0OTg3LDQgQEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAg
PC9NQVNNPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDllMjRjN2ZmNjRhNzNmYjk2Mjc5OWNlODQyZDdiMjQw
YmEzNDA3OS4uYTMzMzZmZjRkZDU2ODJkNTI2YWE2NGU1ZjA2ZDZiNTlmMTU4NDY2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODI2LDYgKzgyNiw4IEBACiAJCTFDMTFDQ0M2MEFBNjA5MzcwMERBREIyMCAvKiBET01Eb2N1bWVu
dEZyYWdtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRG
cmFnbWVudC5oICovOyB9OwogCQkxQzExQ0NDNzBBQTYwOTM3MDBEQURCMjAgLyogRE9NQ0RBVEFT
ZWN0aW9uLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9u
LmggKi87IH07CiAJCTFDMTFDQ0M4MEFBNjA5MzcwMERBREIyMCAvKiBET01IVE1MRWxlbWVudC5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODVERjJFRUIwQUEzODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50LmggKi87IH07
CisJCTFDMThEQTU4MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4REE1NjE4MUFGNkE1MDBD
NEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovOyB9OworCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVG
MjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDMThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovOyB9
OwogCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdF
MjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKIAkJMUMyNjQ5N0Mw
RDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMu
Y3BwICovOyB9OwogCQkxQzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM0QzhGMDAwQUQ4NUQ4NzAwOTQ3NUNFIC8qIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzMxMSw2ICs3
MzEzLDggQEAKIAkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8qIFByb3h5U2VydmVyQ0ZOZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlTZXJ2ZXJDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkUxMTk3MENCRkZDQzQwMDMw
MTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0
Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNl
dFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxOERBNTYxODFBRjZB
NTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRleHRQYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBG
MiAvKiBQYWdlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2VNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzNUNEMzE0RTg1NDRG
MDA0RTEwRUEgLyogSW5zcGVjdG9yLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW5zcGVjdG9yLmpzb247IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc4Nyw2ICsyMDc5MSw4IEBACiAJCQkJRTRDOTFBMEQx
ODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8sCiAJCQkJMzdGQzk2REExMTA0
RUQ3MTAwM0UxRkFEIC8qIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovLAogCQkJCUJD
QTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLywKKwkJ
CQkxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovLAorCQkJCTFD
MThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSByZW5kZXJpbmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjE1NjksNiAr
MjE1NzUsNyBAQAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQgLyog
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4
MTIzOTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJp
bGl0eVNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk0ODlGQzcxMkMwMEYwMzAwRDgz
RjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA5
RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNzI0Niw2ICsyNzI1Myw3IEBACiAJCQkJRkVBRDdEODcxNkMzMzlFRTAwRDQ2NzBC
IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdC
QzZBNTQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTU2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMThEQTU4MTgxQUY2QTUwMEM0RUYy
MiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTM2RkQxNjE2Qzc4MjY1
MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4RTA4RkYxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTVBMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5
bmMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggMzQ3MDM2ZDZkNzc1YzFkNzBiYmE3YTA3ODg3ODY4YzU3MTJkN2E3OC4u
ZWQwZjg4Nzg5Yjg4NzU1N2Q3MDRjYjQ2MTdmOWE2NDA4NDRkNDQ3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIKICNpbmNs
dWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
Mzk3LDU0ICszOTgsNiBAQCBGbG9hdFNpemUgSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dy
YXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIGV4dHJh
T2Zmc2V0OwogfQogCi1zdGF0aWMgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4s
IGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGludCB0cnVuY2F0aW9uUG9pbnQsIGNv
bnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywg
Ym9vbCBzdHJva2VkLCBib29sIGhvcml6b250YWwpCi17Ci0gICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNv
bnRleHQtPmZpbGxDb2xvclNwYWNlKCk7Ci0gICAgYm9vbCBvcGFxdWUgPSBmaWxsQ29sb3IuYWxw
aGEoKSA9PSAyNTU7Ci0gICAgaWYgKCFvcGFxdWUpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKLQotICAgIGRvIHsKLSAgICAgICAg
SW50U2l6ZSBleHRyYU9mZnNldDsKLSAgICAgICAgaWYgKHNoYWRvdykKLSAgICAgICAgICAgIGV4
dHJhT2Zmc2V0ID0gcm91bmRlZEludFNpemUoSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dy
YXBoaWNzQ29udGV4dChjb250ZXh0LCBzaGFkb3csIGJveFJlY3QsIHN0cm9rZWQsIG9wYXF1ZSwg
aG9yaXpvbnRhbCkpOwotICAgICAgICBlbHNlIGlmICghb3BhcXVlKQotICAgICAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOwotCi0gICAgICAg
IGlmIChzdGFydE9mZnNldCA8PSBlbmRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmIChlbXBoYXNp
c01hcmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQs
IHRleHRSdW4sIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhh
c2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFP
ZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lzTWFya09mZnNldCksIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAp
IHsKLSAgICAgICAgICAgICAgICBpZiAoZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiAr
IGV4dHJhT2Zmc2V0LCAgMCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4s
IGVtcGhhc2lzTWFyaywgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0ICsgSW50U2l6ZSgwLCBlbXBo
YXNpc01hcmtPZmZzZXQpLCAgMCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChzdGFydE9mZnNldCA8IHRydW5jYXRpb25Qb2ludCkgewotICAgICAgICAgICAgICAg
IGlmIChlbXBoYXNpc01hcmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0
T2Zmc2V0LCB0cnVuY2F0aW9uUG9pbnQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1w
aGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lz
TWFya09mZnNldCksICBzdGFydE9mZnNldCwgdHJ1bmNhdGlvblBvaW50KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICghc2hhZG93KQotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bmV4dCgpIHx8IHN0cm9rZWQgfHwgIW9wYXF1ZSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLQotICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQo
KTsKLSAgICB9IHdoaWxlIChzaGFkb3cgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKTsKLX0KLQogYm9v
bCBJbmxpbmVUZXh0Qm94OjpnZXRFbXBoYXNpc01hcmtQb3NpdGlvbihjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFRleHRFbXBoYXNpc1Bvc2l0aW9uJiBlbXBoYXNpc1Bvc2l0aW9uKSBjb25zdAog
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSB0ZXh0IGVt
cGhhc2lzIG1hcmtzIGFuZCB0aGV5IGFyZSBzdXBwcmVzc2VkIGJ5IHJ1YnkgdGV4dC4KQEAgLTQ2
OCwxNCArNDIxLDYgQEAgYm9vbCBJbmxpbmVUZXh0Qm94OjpnZXRFbXBoYXNpc01hcmtQb3NpdGlv
bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFRleHRFbXBoYXMKICAgICByZXR1cm4gIXJ1YnlU
ZXh0IHx8ICFydWJ5VGV4dC0+aGFzTGluZXMoKTsKIH0KIAotZW51bSBSb3RhdGlvbkRpcmVjdGlv
biB7IENvdW50ZXJjbG9ja3dpc2UsIENsb2Nrd2lzZSB9OwotCi1zdGF0aWMgaW5saW5lIEFmZmlu
ZVRyYW5zZm9ybSByb3RhdGlvbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIFJvdGF0aW9uRGly
ZWN0aW9uIGNsb2Nrd2lzZSkKLXsKLSAgICByZXR1cm4gY2xvY2t3aXNlID8gQWZmaW5lVHJhbnNm
b3JtKDAsIDEsIC0xLCAwLCBib3hSZWN0LngoKSArIGJveFJlY3QubWF4WSgpLCBib3hSZWN0Lm1h
eFkoKSAtIGJveFJlY3QueCgpKQotICAgICAgICA6IEFmZmluZVRyYW5zZm9ybSgwLCAtMSwgMSwg
MCwgYm94UmVjdC54KCkgLSBib3hSZWN0Lm1heFkoKSwgYm94UmVjdC54KCkgKyBib3hSZWN0Lm1h
eFkoKSk7Ci19Ci0KIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCAvKmxpbmVUb3Aq
LywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLykKIHsKICAgICBpZiAoaXNMaW5lQnJlYWsoKSB8
fCAhcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJl
cigpLnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFCkBAIC02MjgsNTkgKzU3Myw4IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFk
b3cgPSBwYWludEluZm8uZm9yY2VCbGFja1RleHQoKSA/IDAgOiBsaW5lU3R5bGUudGV4dFNoYWRv
dygpOwogCi0gICAgaWYgKCFwYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKLSAgICAgICAgLy8gRm9y
IHN0cm9rZWQgcGFpbnRpbmcsIHdlIGhhdmUgdG8gY2hhbmdlIHRoZSB0ZXh0IGRyYXdpbmcgbW9k
ZS4gIEl0J3MgcHJvYmFibHkgZGFuZ2Vyb3VzIHRvIGxlYXZlIHRoYXQgbXV0YXRlZCBhcyBhIHNp
ZGUKLSAgICAgICAgLy8gZWZmZWN0LCBzbyBvbmx5IHdoZW4gd2Uga25vdyB3ZSdyZSBzdHJva2lu
ZywgZG8gYSBzYXZlL3Jlc3RvcmUuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCwgdGV4dFBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKLQot
ICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKmNvbnRleHQsIHRleHRQYWludFN0eWxlKTsK
LSAgICAgICAgaWYgKCFwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgfHwgZVBvcyA8PSBzUG9z
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVHJ1bmNhdGUgcmlnaHQtdG8tbGVmdCB0ZXh0IGNv
cnJlY3RseS4KLSAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGZvbnQs
IHRleHRSdW4sIG51bGxBdG9tLCAwLCAwLCBsZW5ndGgsIGxlbmd0aCwgdGV4dE9yaWdpbiwgYm94
UmVjdCwgdGV4dFNoYWRvdywgdGV4dFBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwLCBpc0hvcml6
b250YWwoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRv
d3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgbnVsbEF0b20sIDAsIGVQb3MsIHNQb3MsIGxlbmd0
aCwgdGV4dE9yaWdpbiwgYm94UmVjdCwgdGV4dFNoYWRvdywgdGV4dFBhaW50U3R5bGUuc3Ryb2tl
V2lkdGggPiAwLCBpc0hvcml6b250YWwoKSk7Ci0KLSAgICAgICAgaWYgKCFlbXBoYXNpc01hcmsu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKmNvbnRleHQs
IHRleHRQYWludFN0eWxlLCBVc2VFbXBoYXNpc01hcmtDb2xvcik7Ci0KLSAgICAgICAgICAgIERF
RklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0
UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7Ci0gICAgICAgICAgICBUZXh0
UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1l
bnRDaGFyYWN0ZXJUZXh0UnVuIDogdGV4dFJ1bjsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgZW1w
aGFzaXNNYXJrVGV4dE9yaWdpbiA9IGNvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2lu
LngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBmb250LmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkpIDogdGV4dE9yaWdpbjsKLSAgICAgICAgICAgIGlmIChjb21iaW5lZFRl
eHQpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3Qs
IENsb2Nrd2lzZSkpOwotCi0gICAgICAgICAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0U2VwYXJh
dGVseSB8fCBlUG9zIDw9IHNQb3MpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogVHJ1bmNh
dGUgcmlnaHQtdG8tbGVmdCB0ZXh0IGNvcnJlY3RseS4KLSAgICAgICAgICAgICAgICBwYWludFRl
eHRXaXRoU2hhZG93cyhjb250ZXh0LCBjb21iaW5lZFRleHQgPyBjb21iaW5lZFRleHQtPm9yaWdp
bmFsRm9udCgpIDogZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBo
YXNpc01hcmtPZmZzZXQsIDAsIGxlbmd0aCwgbGVuZ3RoLCBlbXBoYXNpc01hcmtUZXh0T3JpZ2lu
LCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDAsIGlz
SG9yaXpvbnRhbCgpKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHBhaW50
VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGNvbWJpbmVkVGV4dCA/IGNvbWJpbmVkVGV4dC0+b3Jp
Z2luYWxGb250KCkgOiBmb250LCBlbXBoYXNpc01hcmtUZXh0UnVuLCBlbXBoYXNpc01hcmssIGVt
cGhhc2lzTWFya09mZnNldCwgZVBvcywgc1BvcywgbGVuZ3RoLCBlbXBoYXNpc01hcmtUZXh0T3Jp
Z2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDAs
IGlzSG9yaXpvbnRhbCgpKTsKLQotICAgICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNs
b2Nrd2lzZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKChwYWludFNlbGVjdGVkVGV4
dE9ubHkgfHwgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KSAmJiBzUG9zIDwgZVBvcykgewot
ICAgICAgICAvLyBwYWludCBvbmx5IHRoZSB0ZXh0IHRoYXQgaXMgc2VsZWN0ZWQKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCBzZWxlY3Rpb25Q
YWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7Ci0KLSAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250
ZXh0KCpjb250ZXh0LCBzZWxlY3Rpb25QYWludFN0eWxlKTsKLSAgICAgICAgcGFpbnRUZXh0V2l0
aFNoYWRvd3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgbnVsbEF0b20sIDAsIHNQb3MsIGVQb3Ms
IGxlbmd0aCwgdGV4dE9yaWdpbiwgYm94UmVjdCwgc2VsZWN0aW9uU2hhZG93LCBzZWxlY3Rpb25Q
YWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotICAgICAgICBpZiAo
IWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dCgqY29udGV4dCwgc2VsZWN0aW9uUGFpbnRTdHlsZSwgVXNlRW1waGFzaXNNYXJrQ29sb3Ip
OwotCi0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyVGV4dFJ1biwgKCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkp
OwotICAgICAgICAgICAgVGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IGNvbWJpbmVkVGV4
dCA/IG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1biA6IHRleHRSdW47Ci0gICAgICAg
ICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBjb21iaW5lZFRleHQgPyBG
bG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBib3hSZWN0LndpZHRoKCkgLyAyLCBib3hPcmlnaW4u
eSgpICsgZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpKSA6IHRleHRPcmlnaW47Ci0gICAgICAg
ICAgICBpZiAoY29tYmluZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENU
TShyb3RhdGlvbihib3hSZWN0LCBDbG9ja3dpc2UpKTsKLQotICAgICAgICAgICAgcGFpbnRUZXh0
V2l0aFNoYWRvd3MoY29udGV4dCwgY29tYmluZWRUZXh0ID8gY29tYmluZWRUZXh0LT5vcmlnaW5h
bEZvbnQoKSA6IGZvbnQsIGVtcGhhc2lzTWFya1RleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFz
aXNNYXJrT2Zmc2V0LCBzUG9zLCBlUG9zLCBsZW5ndGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4s
IGJveFJlY3QsIHNlbGVjdGlvblNoYWRvdywgc2VsZWN0aW9uUGFpbnRTdHlsZS5zdHJva2VXaWR0
aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLQotICAgICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291
bnRlcmNsb2Nrd2lzZSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIFRleHRQYWludGVyIHRleHRQ
YWludGVyKCpjb250ZXh0LCBwYWludFNlbGVjdGVkVGV4dE9ubHksIHBhaW50U2VsZWN0ZWRUZXh0
U2VwYXJhdGVseSwgZm9udCwgc1BvcywgZVBvcywgbGVuZ3RoLCBlbXBoYXNpc01hcmssIGNvbWJp
bmVkVGV4dCwgdGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgZW1waGFzaXNNYXJrT2Zmc2V0
LCB0ZXh0U2hhZG93LCBzZWxlY3Rpb25TaGFkb3csIGlzSG9yaXpvbnRhbCgpLCB0ZXh0UGFpbnRT
dHlsZSwgc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0KCk7
CiAKICAgICAvLyBQYWludCBkZWNvcmF0aW9ucwogICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNv
cmF0aW9ucyA9IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKaW5kZXggYTcxYzE0Yzdl
ODM3NjdlZjRiOWU5Njk0OTgyMzk0ODExOTc5Zjg5ZS4uMzY2N2Q4MmJhNWI1ZTg4ZTI2YmYwMzA2
NDY0ZjNiN2MyMzM4MTIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcmluZ0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
aW5nQWxsSW5PbmUuY3BwCkBAIC0xMjAsNSArMTIwLDYgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRn
ZXQuY3BwIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guY3BwIgogI2luY2x1ZGUgIlNjcm9sbEJl
aGF2aW9yLmNwcCIKKyNpbmNsdWRlICJUZXh0UGFpbnRlci5jcHAiCiAjaW5jbHVkZSAiYnJlYWtf
bGluZXMuY3BwIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NmNjNTU2NDRiY2M3ZGVmNGZmZGEzYjQ2OGIyMDFhNzRmYjQ5YWUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAt
MCwwICsxLDE3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dFBh
aW50ZXIuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIklubGlu
ZVRleHRCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgorI2luY2x1ZGUgIlRl
eHRQYWludFN0eWxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFBhaW50ZXI6OlRl
eHRQYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCBwYWludFNlbGVjdGVkVGV4
dE9ubHksIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBjb25zdCBGb250JiBmb250
LAorICAgIGludCBzdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBpbnQgZW5kUG9zaXRpb25JblRleHRC
b3hTdHJpbmcsIGludCBsZW5ndGgsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBS
ZW5kZXJDb21iaW5lVGV4dCogY29tYmluZWRUZXh0LCBUZXh0UnVuJiB0ZXh0UnVuLAorICAgIEZs
b2F0UmVjdCYgYm94UmVjdCwgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgaW50IGVtcGhhc2lzTWFy
a09mZnNldCwgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSog
c2VsZWN0aW9uU2hhZG93LAorICAgIGJvb2wgdGV4dEJveElzSG9yaXpvbnRhbCwgVGV4dFBhaW50
U3R5bGUmIHRleHRQYWludFN0eWxlLCBUZXh0UGFpbnRTdHlsZSYgc2VsZWN0aW9uUGFpbnRTdHls
ZSkKKyAgICA6IG1fcGFpbnRTZWxlY3RlZFRleHRPbmx5KHBhaW50U2VsZWN0ZWRUZXh0T25seSkK
KyAgICAsIG1fcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KHBhaW50U2VsZWN0ZWRUZXh0U2Vw
YXJhdGVseSkKKyAgICAsIG1fZm9udChmb250KQorICAgICwgbV9zdGFydFBvc2l0aW9uSW5UZXh0
UnVuKHN0YXJ0UG9zaXRpb25JblRleHRSdW4pCisgICAgLCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVu
KGVuZFBvc2l0aW9uSW5UZXh0Qm94U3RyaW5nKQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAg
ICwgbV9lbXBoYXNpc01hcmsoZW1waGFzaXNNYXJrKQorICAgICwgbV9jb21iaW5lZFRleHQoY29t
YmluZWRUZXh0KQorICAgICwgbV90ZXh0UnVuKHRleHRSdW4pCisgICAgLCBtX2JveFJlY3QoYm94
UmVjdCkKKyAgICAsIG1fdGV4dE9yaWdpbih0ZXh0T3JpZ2luKQorICAgICwgbV9lbXBoYXNpc01h
cmtPZmZzZXQoZW1waGFzaXNNYXJrT2Zmc2V0KQorICAgICwgbV90ZXh0Qm94SXNIb3Jpem9udGFs
KHRleHRCb3hJc0hvcml6b250YWwpCisgICAgLCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzaygm
Y29udGV4dCwgJnRleHRQYWludFN0eWxlLCAmc2VsZWN0aW9uUGFpbnRTdHlsZSwgdGV4dFNoYWRv
dywgc2VsZWN0aW9uU2hhZG93KQoreworfQorCitzdGF0aWMgdm9pZCBkcmF3VGV4dE9yRW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLAorICAg
IGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBp
bnQgZnJvbSwgY29uc3QgaW50IHRvKQoreworICAgIGlmIChlbXBoYXNpc01hcmsuaXNFbXB0eSgp
KQorICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHBvaW50LCBmcm9tLCB0
byk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LmRyYXdFbXBoYXNpc01hcmtzKGZvbnQsIHRl
eHRSdW4sIGVtcGhhc2lzTWFyaywgcG9pbnQgKyBJbnRTaXplKDAsIGVtcGhhc2lzTWFya09mZnNl
dCksIGZyb20sIHRvKTsKK30KKworc3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiB0
ZXh0UnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywKKyAgICBpbnQgZW1waGFz
aXNNYXJrT2Zmc2V0LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGludCB0cnVuY2F0
aW9uUG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYg
Ym94UmVjdCwKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGJvb2wgc3Ryb2tlZCwgYm9v
bCBob3Jpem9udGFsKQoreworICAgIENvbG9yIGZpbGxDb2xvciA9IGNvbnRleHQtPmZpbGxDb2xv
cigpOworICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LT5maWxsQ29sb3JT
cGFjZSgpOworICAgIGJvb2wgb3BhcXVlID0gIWZpbGxDb2xvci5oYXNBbHBoYSgpOworICAgIGlm
ICghb3BhcXVlKQorICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBm
aWxsQ29sb3JTcGFjZSk7CisKKyAgICBkbyB7CisgICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQ7
CisgICAgICAgIGlmIChzaGFkb3cpCisgICAgICAgICAgICBleHRyYU9mZnNldCA9IHJvdW5kZWRJ
bnRTaXplKElubGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQoY29udGV4
dCwgc2hhZG93LCBib3hSZWN0LCBzdHJva2VkLCBvcGFxdWUsIGhvcml6b250YWwpKTsKKyAgICAg
ICAgZWxzZSBpZiAoIW9wYXF1ZSkKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihm
aWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKworICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPD0g
ZW5kT2Zmc2V0KQorICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoKmNvbnRleHQs
IGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3Jp
Z2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChlbmRPZmZzZXQgPiAwKQorICAgICAgICAgICAgICAgIGRyYXdU
ZXh0T3JFbXBoYXNpc01hcmtzKCpjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmss
IGVtcGhhc2lzTWFya09mZnNldCwgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0LCAwLCBlbmRPZmZz
ZXQpOworICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDwgdHJ1bmNhdGlvblBvaW50KQorICAg
ICAgICAgICAgICAgIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKCpjb250ZXh0LCBmb250LCB0ZXh0
UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgdGV4dE9yaWdpbiArIGV4dHJh
T2Zmc2V0LCBzdGFydE9mZnNldCwgdHJ1bmNhdGlvblBvaW50KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghc2hhZG93KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKHNoYWRv
dy0+bmV4dCgpIHx8IHN0cm9rZWQgfHwgIW9wYXF1ZSkKKyAgICAgICAgICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3co
KTsKKworICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKKyAgICB9IHdoaWxlIChzaGFk
b3cgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKTsKK30KKwordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRU
ZXh0KCkKK3sKKyAgICBBU1NFUlQobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0UGFp
bnRTdHlsZSk7CisgICAgQVNTRVJUKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0
aW9uUGFpbnRTdHlsZSk7CisgICAgCisgICAgRmxvYXRQb2ludCBib3hPcmlnaW4gPSBib3hSZWN0
KCkubG9jYXRpb24oKTsKKworICAgIGlmICghbV9wYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKKyAg
ICAgICAgLy8gRm9yIHN0cm9rZWQgcGFpbnRpbmcsIHdlIGhhdmUgdG8gY2hhbmdlIHRoZSB0ZXh0
IGRyYXdpbmcgbW9kZS4gSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVhdmUgdGhhdCBtdXRh
dGVkIGFzIGEgc2lkZQorICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hlbiB3ZSBrbm93IHdl
J3JlIHN0cm9raW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRl
eHQsIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0cm9rZVdp
ZHRoID4gMCk7CisKKyAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCptX3NhdmVkRHJhd2lu
Z1N0YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3Rl
eHRQYWludFN0eWxlKTsKKyAgICAgICAgaWYgKCFtX3BhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVs
eSB8fCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuIDw9IG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1bikg
eworICAgICAgICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRvLWxlZnQgdGV4dCBjb3Jy
ZWN0bHkuCisgICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0
YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fZm9udCwgbV90ZXh0UnVuLCBudWxsQXRvbSwgMCwgMCwg
bV9sZW5ndGgsIG1fbGVuZ3RoLCBtX3RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdp
bmdTdGF0ZUZvck1hc2subV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5t
X3RleHRQYWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MobV9zYXZl
ZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2ZvbnQsIG1fdGV4dFJ1biwgbnVsbEF0
b20sIDAsIG1fZW5kUG9zaXRpb25JblRleHRSdW4sIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwg
bV9sZW5ndGgsIG1fdGV4dE9yaWdpbiwgbV9ib3hSZWN0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9y
TWFzay5tX3RleHRTaGFkb3csIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50
U3R5bGUtPnN0cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKworICAgICAg
ICBpZiAoIW1fZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdXBkYXRlR3Jh
cGhpY3NDb250ZXh0KCptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3Nh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlLCBVc2VFbXBoYXNpc01hcmtD
b2xvcik7CisKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGV4dFJ1biwgb2JqZWN0
UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVy
LCAxKSk7CisgICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gbV9jb21i
aW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiBtX3RleHRSdW47
CisgICAgICAgICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJp
bmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1fYm94UmVjdC53aWR0aCgpIC8g
MiwgYm94T3JpZ2luLnkoKSArIG1fZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpKSA6IG1fdGV4
dE9yaWdpbjsKKyAgICAgICAgICAgIGlmIChtX2NvbWJpbmVkVGV4dCkKKyAgICAgICAgICAgICAg
ICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQtPmNvbmNhdENUTShyb3RhdGlv
bihtX2JveFJlY3QsIENsb2Nrd2lzZSkpOworCisgICAgICAgICAgICBpZiAoIW1fcGFpbnRTZWxl
Y3RlZFRleHRTZXBhcmF0ZWx5IHx8IG1fZW5kUG9zaXRpb25JblRleHRSdW4gPD0gbV9zdGFydFBv
c2l0aW9uSW5UZXh0UnVuKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJp
Z2h0LXRvLWxlZnQgdGV4dCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0
aFNoYWRvd3MobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2NvbWJpbmVk
VGV4dCA/IG1fY29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IG1fZm9udCwgZW1waGFzaXNN
YXJrVGV4dFJ1biwgbV9lbXBoYXNpc01hcmssIG1fZW1waGFzaXNNYXJrT2Zmc2V0LCAwLCBtX2xl
bmd0aCwgbV9sZW5ndGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZl
ZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9y
TWFzay5tX3RleHRQYWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpv
bnRhbCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYWludFRleHRXaXRo
U2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fY29tYmluZWRU
ZXh0ID8gbV9jb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9mb250LCBlbXBoYXNpc01h
cmtUZXh0UnVuLCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtPZmZzZXQsIG1fZW5kUG9z
aXRpb25JblRleHRSdW4sIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgsIGVtcGhh
c2lzTWFya1RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2su
bV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxl
LT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7CisKKyAgICAgICAgICAg
IGlmIChtX2NvbWJpbmVkVGV4dCkKKyAgICAgICAgICAgICAgICBtX3NhdmVkRHJhd2luZ1N0YXRl
Rm9yTWFzay5tX2NvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJlY3QsIENvdW50ZXJj
bG9ja3dpc2UpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgobV9wYWludFNlbGVjdGVk
VGV4dE9ubHkgfHwgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpICYmIG1fc3RhcnRQb3Np
dGlvbkluVGV4dFJ1biA8IG1fZW5kUG9zaXRpb25JblRleHRSdW4pIHsKKyAgICAgICAgLy8gcGFp
bnQgb25seSB0aGUgdGV4dCB0aGF0IGlzIHNlbGVjdGVkCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250
ZXh0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlvblBhaW50U3R5bGUtPnN0
cm9rZVdpZHRoID4gMCk7CisKKyAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCptX3NhdmVk
RHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFz
ay5tX3NlbGVjdGlvblBhaW50U3R5bGUpOworICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyht
X3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fZm9udCwgbV90ZXh0UnVuLCBu
dWxsQXRvbSwgMCwgbV9zdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBtX2VuZFBvc2l0aW9uSW5UZXh0
UnVuLCBtX2xlbmd0aCwgbV90ZXh0T3JpZ2luLCBtX2JveFJlY3QsIG1fc2F2ZWREcmF3aW5nU3Rh
dGVGb3JNYXNrLm1fc2VsZWN0aW9uU2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5t
X3NlbGVjdGlvblBhaW50U3R5bGUtPnN0cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9u
dGFsKTsKKyAgICAgICAgaWYgKCFtX2VtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCgqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9j
b250ZXh0LCAqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxl
LCBVc2VFbXBoYXNpc01hcmtDb2xvcik7CisKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoVGV4dFJ1biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7CisgICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01h
cmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRl
eHRSdW4gOiBtX3RleHRSdW47CisgICAgICAgICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1Rl
eHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1f
Ym94UmVjdC53aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSArIG1fZm9udC5mb250TWV0cmljcygp
LmFzY2VudCgpKSA6IG1fdGV4dE9yaWdpbjsKKyAgICAgICAgICAgIGlmIChtX2NvbWJpbmVkVGV4
dCkKKyAgICAgICAgICAgICAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQt
PmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJlY3QsIENsb2Nrd2lzZSkpOworCisgICAgICAgICAg
ICBwYWludFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRl
eHQsIG1fY29tYmluZWRUZXh0ID8gbV9jb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9m
b250LCBlbXBoYXNpc01hcmtUZXh0UnVuLCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtP
ZmZzZXQsIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgbV9lbmRQb3NpdGlvbkluVGV4dFJ1biwg
bV9sZW5ndGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9zYXZlZERyYXdp
bmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25TaGFkb3csIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JN
YXNrLm1fc2VsZWN0aW9uUGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwLCBtX3RleHRCb3hJc0hv
cml6b250YWwpOworCisgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCisgICAgICAgICAg
ICAgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LT5jb25jYXRDVE0ocm90
YXRpb24obV9ib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEluQ29udGV4dChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IGFtb3VudFRvSW5jcmVhc2VTdHJva2VXaWR0aEJ5KQoreworICAgIFNh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzayBzYXZlZERyYXdpbmdTdGF0ZUZvck1hc2sgPSBtX3NhdmVk
RHJhd2luZ1N0YXRlRm9yTWFzazsKKyAgICAKKyAgICBBU1NFUlQobV9zYXZlZERyYXdpbmdTdGF0
ZUZvck1hc2subV90ZXh0UGFpbnRTdHlsZSk7CisgICAgQVNTRVJUKG1fc2F2ZWREcmF3aW5nU3Rh
dGVGb3JNYXNrLm1fc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0
ZUZvck1hc2subV9jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZv
ck1hc2subV90ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggKz0gYW1vdW50VG9JbmNyZWFzZVN0
cm9rZVdpZHRoQnk7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25Q
YWludFN0eWxlLT5zdHJva2VXaWR0aCArPSBhbW91bnRUb0luY3JlYXNlU3Ryb2tlV2lkdGhCeTsK
KyAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRTaGFkb3cgPSBudWxscHRyOwor
ICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uU2hhZG93ID0gbnVsbHB0
cjsKKyAgICBwYWludFRleHQoKTsKKworICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrID0g
c2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNDM0NzQxYjU4
OGFjNDg3NTJmYTExYTdiMWRhYmI0MDFkZjMzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgVGV4dFBhaW50ZXJfaAorI2RlZmluZSBUZXh0UGFpbnRlcl9oCisKKyNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyQ29tYmluZVRleHQ7CisKK3N0cnVjdCBUZXh0UGFpbnRT
dHlsZTsKKworZW51bSBSb3RhdGlvbkRpcmVjdGlvbiB7IENvdW50ZXJjbG9ja3dpc2UsIENsb2Nr
d2lzZSB9OworCitzdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9ybSByb3RhdGlvbihjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QsIFJvdGF0aW9uRGlyZWN0aW9uIGNsb2Nrd2lzZSkKK3sKKyAgICBy
ZXR1cm4gY2xvY2t3aXNlID8gQWZmaW5lVHJhbnNmb3JtKDAsIDEsIC0xLCAwLCBib3hSZWN0Lngo
KSArIGJveFJlY3QubWF4WSgpLCBib3hSZWN0Lm1heFkoKSAtIGJveFJlY3QueCgpKQorICAgICAg
ICA6IEFmZmluZVRyYW5zZm9ybSgwLCAtMSwgMSwgMCwgYm94UmVjdC54KCkgLSBib3hSZWN0Lm1h
eFkoKSwgYm94UmVjdC54KCkgKyBib3hSZWN0Lm1heFkoKSk7Cit9CisKK3N0cnVjdCBTYXZlZERy
YXdpbmdTdGF0ZUZvck1hc2sgeworICAgIFNhdmVkRHJhd2luZ1N0YXRlRm9yTWFzayhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFRleHRQYWludFN0eWxlKiB0ZXh0UGFpbnRTdHlsZSwgVGV4dFBh
aW50U3R5bGUqIHNlbGVjdGlvblBhaW50U3R5bGUsCisgICAgY29uc3QgU2hhZG93RGF0YSogdGV4
dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSogc2VsZWN0aW9uU2hhZG93KQorICAgICAgICA6IG1f
Y29udGV4dChjb250ZXh0KQorICAgICAgICAsIG1fdGV4dFBhaW50U3R5bGUodGV4dFBhaW50U3R5
bGUpCisgICAgICAgICwgbV9zZWxlY3Rpb25QYWludFN0eWxlKHNlbGVjdGlvblBhaW50U3R5bGUp
CisgICAgICAgICwgbV90ZXh0U2hhZG93KHRleHRTaGFkb3cpCisgICAgICAgICwgbV9zZWxlY3Rp
b25TaGFkb3coc2VsZWN0aW9uU2hhZG93KQorICAgIHsKKyAgICB9CisgICAgR3JhcGhpY3NDb250
ZXh0KiBtX2NvbnRleHQ7CisgICAgVGV4dFBhaW50U3R5bGUqIG1fdGV4dFBhaW50U3R5bGU7Cisg
ICAgVGV4dFBhaW50U3R5bGUqIG1fc2VsZWN0aW9uUGFpbnRTdHlsZTsKKyAgICBjb25zdCBTaGFk
b3dEYXRhKiBtX3RleHRTaGFkb3c7CisgICAgY29uc3QgU2hhZG93RGF0YSogbV9zZWxlY3Rpb25T
aGFkb3c7Cit9OworCitjbGFzcyBUZXh0UGFpbnRlciB7CitwdWJsaWM6CisgICAgVGV4dFBhaW50
ZXIoR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wgcGFp
bnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBjb25zdCBGb250JiwKKyAgICBpbnQgc3RhcnRQb3Np
dGlvbkluVGV4dFJ1biwgaW50IGVuZFBvc2l0aW9uSW5UZXh0Qm94U3RyaW5nLCBpbnQgbGVuZ3Ro
LCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywgUmVuZGVyQ29tYmluZVRleHQqLAor
ICAgIFRleHRSdW4mLCBGbG9hdFJlY3QmIGJveFJlY3QsIEZsb2F0UG9pbnQmIHRleHRPcmlnaW4s
IGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3csIGNv
bnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdywKKyAgICBib29sIHRleHRCb3hJc0hvcml6
b250YWwsIFRleHRQYWludFN0eWxlJiBub25TZWxlY3Rpb25QYWludFN0eWxlLCBUZXh0UGFpbnRT
dHlsZSYgc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgCisgICAgY29uc3QgRmxvYXRSZWN0JiBi
b3hSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hSZWN0OyB9CisgICAgdm9pZCBwYWludFRleHQo
KTsKKyAgICB2b2lkIHBhaW50VGV4dEluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBh
bW91bnRUb0luY3JlYXNlU3Ryb2tlV2lkdGhCeSk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Bh
aW50U2VsZWN0ZWRUZXh0T25seTsKKyAgICBib29sIG1fcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0
ZWx5OworICAgIGNvbnN0IEZvbnQmIG1fZm9udDsKKyAgICBpbnQgbV9zdGFydFBvc2l0aW9uSW5U
ZXh0UnVuOworICAgIGludCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuOworICAgIGludCBtX2xlbmd0
aDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1fZW1waGFzaXNNYXJrOworICAgIFJlbmRlckNv
bWJpbmVUZXh0KiBtX2NvbWJpbmVkVGV4dDsKKyAgICBUZXh0UnVuJiBtX3RleHRSdW47CisgICAg
RmxvYXRSZWN0JiBtX2JveFJlY3Q7CisgICAgRmxvYXRQb2ludCYgbV90ZXh0T3JpZ2luOworICAg
IGludCBtX2VtcGhhc2lzTWFya09mZnNldDsKKyAgICBib29sIG1fdGV4dEJveElzSG9yaXpvbnRh
bDsKKyAgICBTYXZlZERyYXdpbmdTdGF0ZUZvck1hc2sgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1h
c2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBUZXh0UGFpbnRl
cl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215328</attachid>
            <date>2013-10-28 13:41:18 -0700</date>
            <delta_ts>2013-10-29 14:55:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123355-20131028134117.patch</filename>
            <type>text/plain</type>
            <size>35082</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ4NmQ2ZjA4ZGVhMzY4
NzUyNWMxZjk0MGYyMDliMGQzMWE5MzQ1NS4uYmM4YmVjYzc1NTJkZDgyYzkwZDZhYmNhNmYwYzg0
YmIyYTI2MDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBJbmxp
bmVUZXh0Qm94J3MgdGV4dCBwYWludGluZyB0byBpdCdzIG93biBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRleHQtZGVj
b3JhdGlvbi1za2lwOiBpbmsgcmVxdWlyZXMgZHJhd2luZyB0ZXh0CisgICAgICAgIHR3aWNlIChv
bmNlIHJlZ3VsYXJseSwgYW5kIG9uY2Ugd2l0aCBhIHRoaWNrIG91dGxpbmUgaW50byBhIG1hc2sp
LgorICAgICAgICBUaGlzIHBhdGNoIHB1bGxzIG91dCB0aGUgcmVsZXZhbnQgdGV4dCBkcmF3aW5n
IGNvZGUgZnJvbQorICAgICAgICBJbmxpbmVUZXh0Qm94IGludG8gYSBuZXcgY2xhc3MsIGNhbGxl
ZCBUZXh0UGFpbnRlciwgd2hpY2ggY2FuIGJlIHJlLXVzZWQKKyAgICAgICAgdG8gZHJhdyB0ZXh0
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9i
c2VydmFibGUgZGlmZmVyZW5jZSwgbm8gdGVzdHMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGluZyBuZXcgVGV4dFBhaW50ZXIgY2xhc3MKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNsYXNzCisg
ICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogQWRkaW5nIG5ldyBUZXh0
UGFpbnRlciBjbGFzcworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVyczogQWRkaW5nIG5ldyBUZXh0UGFpbnRlcgorICAgICAgICBjbGFzcworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkaW5nIG5ldyBUZXh0UGFpbnRl
ciBjbGFzcworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50KTogTW92aW5nIHRleHQgZHJhd2luZyBjb2Rl
IGZyb20KKyAgICAgICAgdGhpcyBmdW5jdGlvbgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJp
bmdBbGxJbk9uZS5jcHA6IEFkZGluZyBuZXcgVGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQ
YWludGVyOjpUZXh0UGFpbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3VGV4dE9yRW1waGFz
aXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93cyk6CisgICAg
ICAgIChXZWJDb3JlOjpyb3RhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6
cGFpbnRUZXh0KTogTmV3IGxvY2F0aW9uIGZvciB0ZXh0IGRyYXdpbmcKKyAgICAgICAgY29kZQor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dEluQ29udGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrOjpTYXZlZERyYXdpbmdTdGF0ZUZvck1hc2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmJveFJlY3QpOgorCiAyMDEzLTEwLTI4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBzdXBwb3J0IGZvciBvcmRlciBpbnNpZGUgZ3JpZCBpdGVtcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAwNzYyN2VmOTljNmQzNmZhMDBjNTcxZWQyNDkwOTZlZDgxOTE2YmU5
Li5jZDAxMzZiZDRkNDY5ZjUzY2U4NmQ4NjVkZjNiYzc4NTAxZmNjMjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjE4MSw2ICsyMTgxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAogICAgIHJlbmRlcmluZy9UZXh0
QXV0b3NpemVyLmNwcAogICAgIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKyAgICByZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuY3BwCiAgICAgcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAogCiAg
ICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDRmYjQxMjFiNWVjM2E2NWVjNDQ1MGE3OGNkMzZjNmI0YzM3MTFm
NmMuLmVkOWJkOTBhMjRkYTM4MDZiMjFmZmFmMmQxYzMxNmZlOTgxMjkyMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQ5Myw2ICs0NDkzLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1ZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBiZDIxYmVi
YzEyOGE1OGQ0MGIwNDkzNDhmN2FjMThhM2RkYzBiNzJiLi4xNDhkZGJkZjYwZjc4YjJiZmE1MWQ5
ZjRlZjA3NzlhOWUzYWRlMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKQEAgLTExNzIxLDYgKzExNzIxLDIwIEBACiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRleHRQYWludGVyLmNwcCI+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3b3JrZXJzXFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceG1sXERP
TVBhcnNlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx4bWxcTmF0aXZlWFBh
dGhOU1Jlc29sdmVyLmNwcCIgLz4KQEAgLTE5Njk5LDYgKzE5NzEzLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUYWJsZUxheW91dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRleHRQYWludFN0eWxlLmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50ZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUcmFpbGluZ0Zsb2F0c1Jv
b3RJbmxpbmVCb3guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xt
YXRobWxcUmVuZGVyTWF0aE1MQmxvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xtYXRobWxcUmVuZGVyTWF0aE1MRmVuY2VkLmgiIC8+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5k
ZXggOTJkYTg5ZWRkYzRlZGY5NmQ4Y2NjNDk4ZDlmOGRhYmI5MWNiMzhkZC4uYjNjMWVlNTE5ZTY0
NDViNTRmYzFjYjJmOTVlMGJlMGJhODE0MjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjk0MCw2ICsy
OTQwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4
dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN2Zzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXFRleHRQYWludGVyLmNwcCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceG1sXERPTVBh
cnNlci5jcHAiPgogICAgICAgPEZpbHRlcj54bWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
QEAgLTk2MTksNiArOTYyMiw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcVGFibGVMYXlvdXQuaCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRleHRQ
YWludGVyLmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUcmFpbGluZ0Zsb2F0
c1Jvb3RJbmxpbmVCb3guaCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpAQCAtMTQ5ODEsNCArMTQ5ODcsNCBAQAogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVx3aW48L0ZpbHRlcj4KICAgICA8L01BU00+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MTJmMGVkMjEx
Zjg4NzZmOTJlYzE3Njc2NTg5OGQ5OWFiM2E4YzZjLi5lOWU0OGFmMWU5NWZmZmMwMGEwODlkMjIy
Zjk4YjlhYTg4YmExZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MjQsNiArODI0LDggQEAKIAkJMUMxMUNDQzYwQUE2MDkz
NzAwREFEQjIwIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QzMEE5OEM0Mjgw
MEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggKi87IH07CiAJCTFDMTFDQ0M3MEFBNjA5
MzcwMERBREIyMCAvKiBET01DREFUQVNlY3Rpb24uaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0NGMEE5OEM0MjcwMEEy
NzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLzsgfTsKIAkJMUMxMUNDQzgwQUE2MDkzNzAwREFE
QjIwIC8qIERPTUhUTUxFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NURGMkVFQjBBQTM4N0NCMDBBRDY0QzUgLyog
RE9NSFRNTEVsZW1lbnQuaCAqLzsgfTsKKwkJMUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRl
eHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi87IH07CisJ
CTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcxODFBRjZBNTAwQzRFRjIy
IC8qIFRleHRQYWludGVyLmggKi87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBE
b2N1bWVudExvYWRlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwICovOyB9OwogCQkxQzI2NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3QjBEN0Uy
NEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi87IH07CiAJCTFDNEM4RjAyMEFEODVEODcwMDk0
NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzRDOEYwMDBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC03MzExLDYgKzczMTMsOCBAQAogCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBG
RjcgLyogUHJveHlTZXJ2ZXJDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcm94eVNlcnZlckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFGRTExOTcwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUZFMTE5ODBDQkZGQ0M0MDAz
MDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFBhaW50ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4REE1NzE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBh
aW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBhaW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8q
IERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvY3VtZW50TG9hZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDNDM1Q0QzMTRFODU0NEYwMDRFMTBFQSAvKiBJbnNwZWN0b3IuanNvbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJ
bnNwZWN0b3IuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzkzLDYgKzIw
Nzk3LDggQEAKIAkJCQlFNEM5MUEwRDE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUu
aCAqLywKIAkJCQkzN0ZDOTZEQTExMDRFRDcxMDAzRTFGQUQgLyogVHJhaWxpbmdGbG9hdHNSb290
SW5saW5lQm94LmggKi8sCiAJCQkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2Fs
UG9zaXRpb25DYWNoZS5oICovLAorCQkJCTFDMThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0
UGFpbnRlci5jcHAgKi8sCisJCQkJMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWlu
dGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbmRlcmluZzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yMTU3NSw2ICsyMTU4MSw3IEBACiAJCQkJMjlBODEyMzYwRkJCOUMxRDAw
NTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0MDlD
OTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM5MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4REE1OTE4MUFGNkE1MDBD
NEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRGNkVCMTEwOEY5
QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOTQ4OUZDNzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmls
aXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MjU0LDYgKzI3MjYxLDcgQEAKIAkJCQlG
RUFEN0Q4NzE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkE1NDE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNh
Y3Rpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBNTYxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZFMzZGRDE2MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFj
aGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDhGRjE3RDE0Q0VFMDA0MjBBQTEgLyog
TWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBNUExNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzNDcwMzZkNmQ3NzVjMWQ3MGJi
YTdhMDc4ODc4NjhjNTcxMmQ3YTc4Li5lZDBmODg3ODliODg3NTU3ZDcwNGNiNDYxN2Y5YTY0MDg0
NGQ0NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKKyNpbmNsdWRl
ICJUZXh0UGFpbnRlci5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCkBAIC0zOTcsNTQgKzM5OCw2IEBAIEZsb2F0U2l6ZSBJbmxpbmVU
ZXh0Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKICAgICByZXR1cm4gZXh0cmFPZmZzZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50VGV4
dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmss
IGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwg
aW50IHRydW5jYXRpb25Qb2ludCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29u
c3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wgaG9yaXpvbnRhbCkKLXsK
LSAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LT5maWxsQ29sb3IoKTsKLSAgICBDb2xvclNw
YWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKTsKLSAgICBib29s
IG9wYXF1ZSA9IGZpbGxDb2xvci5hbHBoYSgpID09IDI1NTsKLSAgICBpZiAoIW9wYXF1ZSkKLSAg
ICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgZmlsbENvbG9yU3BhY2Up
OwotCi0gICAgZG8gewotICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0OwotICAgICAgICBpZiAo
c2hhZG93KQotICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSByb3VuZGVkSW50U2l6ZShJbmxpbmVU
ZXh0Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIHNoYWRvdywgYm94
UmVjdCwgc3Ryb2tlZCwgb3BhcXVlLCBob3Jpem9udGFsKSk7Ci0gICAgICAgIGVsc2UgaWYgKCFv
cGFxdWUpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxs
Q29sb3JTcGFjZSk7Ci0KLSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDw9IGVuZE9mZnNldCkgewot
ICAgICAgICAgICAgaWYgKGVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5kcmF3RW1waGFzaXNNYXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01h
cmssIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCArIEludFNpemUoMCwgZW1waGFzaXNNYXJrT2Zm
c2V0KSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoZW5kT2Zmc2V0ID4gMCkgewotICAgICAgICAgICAgICAgIGlmIChlbXBoYXNpc01h
cmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250
LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsICAwLCBlbmRPZmZzZXQpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhh
c2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFP
ZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lzTWFya09mZnNldCksICAwLCBlbmRPZmZzZXQpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDwgdHJ1bmNhdGlvblBv
aW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmln
aW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIHRydW5jYXRpb25Qb2ludCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3RW1waGFzaXNN
YXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIHRleHRPcmlnaW4gKyBleHRyYU9mZnNl
dCArIEludFNpemUoMCwgZW1waGFzaXNNYXJrT2Zmc2V0KSwgIHN0YXJ0T2Zmc2V0LCB0cnVuY2F0
aW9uUG9pbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFzaGFk
b3cpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwg
c3Ryb2tlZCB8fCAhb3BhcXVlKQotICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwotCi0gICAgICAg
IHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwotICAgIH0gd2hpbGUgKHNoYWRvdyB8fCBzdHJva2Vk
IHx8ICFvcGFxdWUpOwotfQotCiBib29sIElubGluZVRleHRCb3g6OmdldEVtcGhhc2lzTWFya1Bv
c2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dEVtcGhhc2lzUG9zaXRpb24mIGVt
cGhhc2lzUG9zaXRpb24pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRy
dWUgaWYgdGhlcmUgYXJlIHRleHQgZW1waGFzaXMgbWFya3MgYW5kIHRoZXkgYXJlIHN1cHByZXNz
ZWQgYnkgcnVieSB0ZXh0LgpAQCAtNDY4LDE0ICs0MjEsNiBAQCBib29sIElubGluZVRleHRCb3g6
OmdldEVtcGhhc2lzTWFya1Bvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dEVt
cGhhcwogICAgIHJldHVybiAhcnVieVRleHQgfHwgIXJ1YnlUZXh0LT5oYXNMaW5lcygpOwogfQog
Ci1lbnVtIFJvdGF0aW9uRGlyZWN0aW9uIHsgQ291bnRlcmNsb2Nrd2lzZSwgQ2xvY2t3aXNlIH07
Ci0KLXN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIHJvdGF0aW9uKGNvbnN0IEZsb2F0UmVj
dCYgYm94UmVjdCwgUm90YXRpb25EaXJlY3Rpb24gY2xvY2t3aXNlKQotewotICAgIHJldHVybiBj
bG9ja3dpc2UgPyBBZmZpbmVUcmFuc2Zvcm0oMCwgMSwgLTEsIDAsIGJveFJlY3QueCgpICsgYm94
UmVjdC5tYXhZKCksIGJveFJlY3QubWF4WSgpIC0gYm94UmVjdC54KCkpCi0gICAgICAgIDogQWZm
aW5lVHJhbnNmb3JtKDAsIC0xLCAxLCAwLCBib3hSZWN0LngoKSAtIGJveFJlY3QubWF4WSgpLCBi
b3hSZWN0LngoKSArIGJveFJlY3QubWF4WSgpKTsKLX0KLQogdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBMYXlvdXRVbml0IC8qbGluZVRvcCovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQogewog
ICAgIGlmIChpc0xpbmVCcmVhaygpIHx8ICFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290
KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUKQEAgLTYyOCw1OSArNTczLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAgY29u
c3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdyA9IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8g
MCA6IGxpbmVTdHlsZS50ZXh0U2hhZG93KCk7CiAKLSAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0
T25seSkgewotICAgICAgICAvLyBGb3Igc3Ryb2tlZCBwYWludGluZywgd2UgaGF2ZSB0byBjaGFu
Z2UgdGhlIHRleHQgZHJhd2luZyBtb2RlLiAgSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVh
dmUgdGhhdCBtdXRhdGVkIGFzIGEgc2lkZQotICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hl
biB3ZSBrbm93IHdlJ3JlIHN0cm9raW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCB0ZXh0UGFpbnRTdHls
ZS5zdHJva2VXaWR0aCA+IDApOwotCi0gICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCgqY29u
dGV4dCwgdGV4dFBhaW50U3R5bGUpOwotICAgICAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0U2Vw
YXJhdGVseSB8fCBlUG9zIDw9IHNQb3MpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUcnVuY2F0
ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAgICAgICAgICAgcGFpbnRUZXh0V2l0
aFNoYWRvd3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgbnVsbEF0b20sIDAsIDAsIGxlbmd0aCwg
bGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFpbnRTdHlsZS5z
dHJva2VXaWR0aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBudWxsQXRv
bSwgMCwgZVBvcywgc1BvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93
LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLQotICAg
ICAgICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHVwZGF0ZUdy
YXBoaWNzQ29udGV4dCgqY29udGV4dCwgdGV4dFBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0Nv
bG9yKTsKLQotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXh0UnVuLCBvYmplY3RS
ZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4sICgmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIs
IDEpKTsKLSAgICAgICAgICAgIFRleHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBjb21iaW5l
ZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiB0ZXh0UnVuOwotICAg
ICAgICAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gY29tYmluZWRUZXh0
ID8gRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3Jp
Z2luLnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiB0ZXh0T3JpZ2luOwotICAg
ICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jb25j
YXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7Ci0KLSAgICAgICAgICAgIGlmICgh
cGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5IHx8IGVQb3MgPD0gc1BvcykgewotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5Lgot
ICAgICAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGNvbWJpbmVkVGV4
dCA/IGNvbWJpbmVkVGV4dC0+b3JpZ2luYWxGb250KCkgOiBmb250LCBlbXBoYXNpc01hcmtUZXh0
UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgMCwgbGVuZ3RoLCBsZW5ndGgs
IGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWludFN0
eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgY29tYmluZWRU
ZXh0ID8gY29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IGZvbnQsIGVtcGhhc2lzTWFya1Rl
eHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCBlUG9zLCBzUG9zLCBsZW5n
dGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWlu
dFN0eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAgICAgICBp
ZiAoY29tYmluZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3Rh
dGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoKHBhaW50U2VsZWN0ZWRUZXh0T25seSB8fCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRl
bHkpICYmIHNQb3MgPCBlUG9zKSB7Ci0gICAgICAgIC8vIHBhaW50IG9ubHkgdGhlIHRleHQgdGhh
dCBpcyBzZWxlY3RlZAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmNvbnRleHQsIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKLQotICAg
ICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKmNvbnRleHQsIHNlbGVjdGlvblBhaW50U3R5bGUp
OwotICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBu
dWxsQXRvbSwgMCwgc1BvcywgZVBvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCBzZWxl
Y3Rpb25TaGFkb3csIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwLCBpc0hvcml6
b250YWwoKSk7Ci0gICAgICAgIGlmICghZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCpjb250ZXh0LCBzZWxlY3Rpb25QYWludFN0eWxl
LCBVc2VFbXBoYXNpc01hcmtDb2xvcik7Ci0KLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoVGV4dFJ1biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7Ci0gICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01h
cmtUZXh0UnVuID0gY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0
UnVuIDogdGV4dFJ1bjsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9y
aWdpbiA9IGNvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qu
d2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
IDogdGV4dE9yaWdpbjsKLSAgICAgICAgICAgIGlmIChjb21iaW5lZFRleHQpCi0gICAgICAgICAg
ICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwot
Ci0gICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBjb21iaW5lZFRleHQg
PyBjb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1
biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHNQb3MsIGVQb3MsIGxlbmd0aCwg
ZW1waGFzaXNNYXJrVGV4dE9yaWdpbiwgYm94UmVjdCwgc2VsZWN0aW9uU2hhZG93LCBzZWxlY3Rp
b25QYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAg
ICAgICBpZiAoY29tYmluZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENU
TShyb3RhdGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9
CisgICAgVGV4dFBhaW50ZXIgdGV4dFBhaW50ZXIoKmNvbnRleHQsIHBhaW50U2VsZWN0ZWRUZXh0
T25seSwgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBmb250LCBzUG9zLCBlUG9zLCBsZW5n
dGgsIGVtcGhhc2lzTWFyaywgY29tYmluZWRUZXh0LCB0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3Jp
Z2luLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRTaGFkb3csIHNlbGVjdGlvblNoYWRvdywgaXNI
b3Jpem9udGFsKCksIHRleHRQYWludFN0eWxlLCBzZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICB0
ZXh0UGFpbnRlci5wYWludFRleHQoKTsKIAogICAgIC8vIFBhaW50IGRlY29yYXRpb25zCiAgICAg
VGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25zID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9u
c0luRWZmZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
aW5nQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbElu
T25lLmNwcAppbmRleCBhNzFjMTRjN2U4Mzc2N2VmNGI5ZTk2OTQ5ODIzOTQ4MTE5NzlmODllLi4z
NjY3ZDgyYmE1YjVlODhlMjZiZjAzMDY0NjRmM2I3YzIzMzgxMjM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTEyMCw1ICsxMjAsNiBA
QAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5jcHAiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5j
cHAiCiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuY3BwIgorI2luY2x1ZGUgIlRleHRQYWludGVy
LmNwcCIKICNpbmNsdWRlICJicmVha19saW5lcy5jcHAiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2Y2M1NTY0NGJjYzdkZWY0ZmZkYTNiNDY4
YjIwMWE3NGZiNDlhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIlJlbmRlckNvbWJp
bmVUZXh0LmgiCisjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitUZXh0UGFpbnRlcjo6VGV4dFBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFy
YXRlbHksIGNvbnN0IEZvbnQmIGZvbnQsCisgICAgaW50IHN0YXJ0UG9zaXRpb25JblRleHRSdW4s
IGludCBlbmRQb3NpdGlvbkluVGV4dEJveFN0cmluZywgaW50IGxlbmd0aCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBlbXBoYXNpc01hcmssIFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5lZFRleHQsIFRl
eHRSdW4mIHRleHRSdW4sCisgICAgRmxvYXRSZWN0JiBib3hSZWN0LCBGbG9hdFBvaW50JiB0ZXh0
T3JpZ2luLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hh
ZG93LCBjb25zdCBTaGFkb3dEYXRhKiBzZWxlY3Rpb25TaGFkb3csCisgICAgYm9vbCB0ZXh0Qm94
SXNIb3Jpem9udGFsLCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIFRleHRQYWludFN0
eWxlJiBzZWxlY3Rpb25QYWludFN0eWxlKQorICAgIDogbV9wYWludFNlbGVjdGVkVGV4dE9ubHko
cGFpbnRTZWxlY3RlZFRleHRPbmx5KQorICAgICwgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRl
bHkocGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KQorICAgICwgbV9mb250KGZvbnQpCisgICAg
LCBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW4oc3RhcnRQb3NpdGlvbkluVGV4dFJ1bikKKyAgICAs
IG1fZW5kUG9zaXRpb25JblRleHRSdW4oZW5kUG9zaXRpb25JblRleHRCb3hTdHJpbmcpCisgICAg
LCBtX2xlbmd0aChsZW5ndGgpCisgICAgLCBtX2VtcGhhc2lzTWFyayhlbXBoYXNpc01hcmspCisg
ICAgLCBtX2NvbWJpbmVkVGV4dChjb21iaW5lZFRleHQpCisgICAgLCBtX3RleHRSdW4odGV4dFJ1
bikKKyAgICAsIG1fYm94UmVjdChib3hSZWN0KQorICAgICwgbV90ZXh0T3JpZ2luKHRleHRPcmln
aW4pCisgICAgLCBtX2VtcGhhc2lzTWFya09mZnNldChlbXBoYXNpc01hcmtPZmZzZXQpCisgICAg
LCBtX3RleHRCb3hJc0hvcml6b250YWwodGV4dEJveElzSG9yaXpvbnRhbCkKKyAgICAsIG1fc2F2
ZWREcmF3aW5nU3RhdGVGb3JNYXNrKCZjb250ZXh0LCAmdGV4dFBhaW50U3R5bGUsICZzZWxlY3Rp
b25QYWludFN0eWxlLCB0ZXh0U2hhZG93LCBzZWxlY3Rpb25TaGFkb3cpCit7Cit9CisKK3N0YXRp
YyB2b2lkIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgQXRvbWljU3Ry
aW5nJiBlbXBoYXNpc01hcmssCisgICAgaW50IGVtcGhhc2lzTWFya09mZnNldCwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIGNvbnN0IGludCBmcm9tLCBjb25zdCBpbnQgdG8pCit7CisgICAgaWYg
KGVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
dGV4dFJ1biwgcG9pbnQsIGZyb20sIHRvKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJh
d0VtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBwb2ludCArIEludFNp
emUoMCwgZW1waGFzaXNNYXJrT2Zmc2V0KSwgZnJvbSwgdG8pOworfQorCitzdGF0aWMgdm9pZCBw
YWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFz
aXNNYXJrLAorICAgIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGludCBzdGFydE9mZnNldCwgaW50
IGVuZE9mZnNldCwgaW50IHRydW5jYXRpb25Qb2ludCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9y
aWdpbiwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LAorICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvdywgYm9vbCBzdHJva2VkLCBib29sIGhvcml6b250YWwpCit7CisgICAgQ29sb3IgZmlsbENv
bG9yID0gY29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFj
ZSA9IGNvbnRleHQtPmZpbGxDb2xvclNwYWNlKCk7CisgICAgYm9vbCBvcGFxdWUgPSAhZmlsbENv
bG9yLmhhc0FscGhhKCk7CisgICAgaWYgKCFvcGFxdWUpCisgICAgICAgIGNvbnRleHQtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKKworICAgIGRvIHsKKyAgICAg
ICAgSW50U2l6ZSBleHRyYU9mZnNldDsKKyAgICAgICAgaWYgKHNoYWRvdykKKyAgICAgICAgICAg
IGV4dHJhT2Zmc2V0ID0gcm91bmRlZEludFNpemUoSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dU
b0dyYXBoaWNzQ29udGV4dChjb250ZXh0LCBzaGFkb3csIGJveFJlY3QsIHN0cm9rZWQsIG9wYXF1
ZSwgaG9yaXpvbnRhbCkpOworICAgICAgICBlbHNlIGlmICghb3BhcXVlKQorICAgICAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworCisgICAg
ICAgIGlmIChzdGFydE9mZnNldCA8PSBlbmRPZmZzZXQpCisgICAgICAgICAgICBkcmF3VGV4dE9y
RW1waGFzaXNNYXJrcygqY29udGV4dCwgZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBo
YXNpc01hcmtPZmZzZXQsIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAp
CisgICAgICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoKmNvbnRleHQsIGZvbnQs
IHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luICsg
ZXh0cmFPZmZzZXQsIDAsIGVuZE9mZnNldCk7CisgICAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQg
PCB0cnVuY2F0aW9uUG9pbnQpCisgICAgICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFy
a3MoKmNvbnRleHQsIGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zm
c2V0LCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0T2Zmc2V0LCB0cnVuY2F0aW9uUG9p
bnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzaGFkb3cpCisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKQor
ICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb250ZXh0LT5jbGVhclNoYWRvdygpOworCisgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4
dCgpOworICAgIH0gd2hpbGUgKHNoYWRvdyB8fCBzdHJva2VkIHx8ICFvcGFxdWUpOworfQorCit2
b2lkIFRleHRQYWludGVyOjpwYWludFRleHQoKQoreworICAgIEFTU0VSVChtX3NhdmVkRHJhd2lu
Z1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlKTsKKyAgICBBU1NFUlQobV9zYXZlZERyYXdp
bmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICAKKyAgICBGbG9hdFBv
aW50IGJveE9yaWdpbiA9IGJveFJlY3QoKS5sb2NhdGlvbigpOworCisgICAgaWYgKCFtX3BhaW50
U2VsZWN0ZWRUZXh0T25seSkgeworICAgICAgICAvLyBGb3Igc3Ryb2tlZCBwYWludGluZywgd2Ug
aGF2ZSB0byBjaGFuZ2UgdGhlIHRleHQgZHJhd2luZyBtb2RlLiBJdCdzIHByb2JhYmx5IGRhbmdl
cm91cyB0byBsZWF2ZSB0aGF0IG11dGF0ZWQgYXMgYSBzaWRlCisgICAgICAgIC8vIGVmZmVjdCwg
c28gb25seSB3aGVuIHdlIGtub3cgd2UncmUgc3Ryb2tpbmcsIGRvIGEgc2F2ZS9yZXN0b3JlLgor
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKm1fc2F2ZWREcmF3
aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90
ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwKTsKKworICAgICAgICB1cGRhdGVHcmFwaGlj
c0NvbnRleHQoKm1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCwgKm1fc2F2ZWRE
cmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUpOworICAgICAgICBpZiAoIW1fcGFp
bnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5IHx8IG1fZW5kUG9zaXRpb25JblRleHRSdW4gPD0gbV9z
dGFydFBvc2l0aW9uSW5UZXh0UnVuKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVHJ1bmNhdGUg
cmlnaHQtdG8tbGVmdCB0ZXh0IGNvcnJlY3RseS4KKyAgICAgICAgICAgIHBhaW50VGV4dFdpdGhT
aGFkb3dzKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCwgbV9mb250LCBtX3Rl
eHRSdW4sIG51bGxBdG9tLCAwLCAwLCBtX2xlbmd0aCwgbV9sZW5ndGgsIG1fdGV4dE9yaWdpbiwg
bV9ib3hSZWN0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRTaGFkb3csIG1fc2F2
ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0cm9rZVdpZHRoID4gMCwg
bV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYWlu
dFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1f
Zm9udCwgbV90ZXh0UnVuLCBudWxsQXRvbSwgMCwgbV9lbmRQb3NpdGlvbkluVGV4dFJ1biwgbV9z
dGFydFBvc2l0aW9uSW5UZXh0UnVuLCBtX2xlbmd0aCwgbV90ZXh0T3JpZ2luLCBtX2JveFJlY3Qs
IG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFNoYWRvdywgbV9zYXZlZERyYXdpbmdT
dGF0ZUZvck1hc2subV90ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwLCBtX3RleHRCb3hJ
c0hvcml6b250YWwpOworCisgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKm1fc2F2ZWREcmF3aW5nU3RhdGVG
b3JNYXNrLm1fY29udGV4dCwgKm1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50
U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKKworICAgICAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChUZXh0UnVuLCBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4sICgmb2Jq
ZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKKyAgICAgICAgICAgIFRleHRSdW4mIGVtcGhh
c2lzTWFya1RleHRSdW4gPSBtX2NvbWJpbmVkVGV4dCA/IG9iamVjdFJlcGxhY2VtZW50Q2hhcmFj
dGVyVGV4dFJ1biA6IG1fdGV4dFJ1bjsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgZW1waGFzaXNN
YXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRUZXh0ID8gRmxvYXRQb2ludChib3hPcmlnaW4ueCgp
ICsgbV9ib3hSZWN0LndpZHRoKCkgLyAyLCBib3hPcmlnaW4ueSgpICsgbV9mb250LmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkpIDogbV90ZXh0T3JpZ2luOworICAgICAgICAgICAgaWYgKG1fY29tYmlu
ZWRUZXh0KQorICAgICAgICAgICAgICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29u
dGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKG1fYm94UmVjdCwgQ2xvY2t3aXNlKSk7CisKKyAgICAg
ICAgICAgIGlmICghbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgfHwgbV9lbmRQb3NpdGlv
bkluVGV4dFJ1biA8PSBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW4pIHsKKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVHJ1bmNhdGUgcmlnaHQtdG8tbGVmdCB0ZXh0IGNvcnJlY3RseS4KKyAgICAg
ICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFz
ay5tX2NvbnRleHQsIG1fY29tYmluZWRUZXh0ID8gbV9jb21iaW5lZFRleHQtPm9yaWdpbmFsRm9u
dCgpIDogbV9mb250LCBlbXBoYXNpc01hcmtUZXh0UnVuLCBtX2VtcGhhc2lzTWFyaywgbV9lbXBo
YXNpc01hcmtPZmZzZXQsIDAsIG1fbGVuZ3RoLCBtX2xlbmd0aCwgZW1waGFzaXNNYXJrVGV4dE9y
aWdpbiwgbV9ib3hSZWN0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRTaGFkb3cs
IG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0cm9rZVdpZHRo
ID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNr
Lm1fY29udGV4dCwgbV9jb21iaW5lZFRleHQgPyBtX2NvbWJpbmVkVGV4dC0+b3JpZ2luYWxGb250
KCkgOiBtX2ZvbnQsIGVtcGhhc2lzTWFya1RleHRSdW4sIG1fZW1waGFzaXNNYXJrLCBtX2VtcGhh
c2lzTWFya09mZnNldCwgbV9lbmRQb3NpdGlvbkluVGV4dFJ1biwgbV9zdGFydFBvc2l0aW9uSW5U
ZXh0UnVuLCBtX2xlbmd0aCwgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiwgbV9ib3hSZWN0LCBtX3Nh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRTaGFkb3csIG1fc2F2ZWREcmF3aW5nU3RhdGVG
b3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jp
em9udGFsKTsKKworICAgICAgICAgICAgaWYgKG1fY29tYmluZWRUZXh0KQorICAgICAgICAgICAg
ICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0
aW9uKG1fYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKChtX3BhaW50U2VsZWN0ZWRUZXh0T25seSB8fCBtX3BhaW50U2VsZWN0ZWRUZXh0U2Vw
YXJhdGVseSkgJiYgbV9zdGFydFBvc2l0aW9uSW5UZXh0UnVuIDwgbV9lbmRQb3NpdGlvbkluVGV4
dFJ1bikgeworICAgICAgICAvLyBwYWludCBvbmx5IHRoZSB0ZXh0IHRoYXQgaXMgc2VsZWN0ZWQK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptX3NhdmVkRHJh
d2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1f
c2VsZWN0aW9uUGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwKTsKKworICAgICAgICB1cGRhdGVH
cmFwaGljc0NvbnRleHQoKm1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCwgKm1f
c2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgICAg
IHBhaW50VGV4dFdpdGhTaGFkb3dzKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4
dCwgbV9mb250LCBtX3RleHRSdW4sIG51bGxBdG9tLCAwLCBtX3N0YXJ0UG9zaXRpb25JblRleHRS
dW4sIG1fZW5kUG9zaXRpb25JblRleHRSdW4sIG1fbGVuZ3RoLCBtX3RleHRPcmlnaW4sIG1fYm94
UmVjdCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25TaGFkb3csIG1fc2F2
ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uUGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGgg
PiAwLCBtX3RleHRCb3hJc0hvcml6b250YWwpOworICAgICAgICBpZiAoIW1fZW1waGFzaXNNYXJr
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCptX3NhdmVk
RHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQsICptX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFz
ay5tX3NlbGVjdGlvblBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKKworICAgICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXh0UnVuLCBvYmplY3RSZXBsYWNlbWVudENoYXJh
Y3RlclRleHRSdW4sICgmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKKyAgICAgICAg
ICAgIFRleHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBtX2NvbWJpbmVkVGV4dCA/IG9iamVj
dFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1biA6IG1fdGV4dFJ1bjsKKyAgICAgICAgICAgIEZs
b2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRUZXh0ID8gRmxvYXRQ
b2ludChib3hPcmlnaW4ueCgpICsgbV9ib3hSZWN0LndpZHRoKCkgLyAyLCBib3hPcmlnaW4ueSgp
ICsgbV9mb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogbV90ZXh0T3JpZ2luOworICAgICAg
ICAgICAgaWYgKG1fY29tYmluZWRUZXh0KQorICAgICAgICAgICAgICAgIG1fc2F2ZWREcmF3aW5n
U3RhdGVGb3JNYXNrLm1fY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKG1fYm94UmVjdCwgQ2xv
Y2t3aXNlKSk7CisKKyAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKG1fc2F2ZWREcmF3
aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCwgbV9jb21iaW5lZFRleHQgPyBtX2NvbWJpbmVkVGV4
dC0+b3JpZ2luYWxGb250KCkgOiBtX2ZvbnQsIGVtcGhhc2lzTWFya1RleHRSdW4sIG1fZW1waGFz
aXNNYXJrLCBtX2VtcGhhc2lzTWFya09mZnNldCwgbV9zdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBt
X2VuZFBvc2l0aW9uSW5UZXh0UnVuLCBtX2xlbmd0aCwgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiwg
bV9ib3hSZWN0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlvblNoYWRvdywg
bV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxlLT5zdHJva2VX
aWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRhbCk7CisKKyAgICAgICAgICAgIGlmIChtX2Nv
bWJpbmVkVGV4dCkKKyAgICAgICAgICAgICAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5t
X2NvbnRleHQtPmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJlY3QsIENvdW50ZXJjbG9ja3dpc2Up
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0SW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgYW1vdW50VG9JbmNyZWFzZVN0
cm9rZVdpZHRoQnkpCit7CisgICAgU2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrIHNhdmVkRHJhd2lu
Z1N0YXRlRm9yTWFzayA9IG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrOworICAgIAorICAgIEFT
U0VSVChtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlKTsKKyAgICBB
U1NFUlQobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxlKTsK
KyAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX2NvbnRleHQgPSAmY29udGV4dDsKKyAg
ICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQYWludFN0eWxlLT5zdHJva2VXaWR0
aCArPSBhbW91bnRUb0luY3JlYXNlU3Ryb2tlV2lkdGhCeTsKKyAgICBtX3NhdmVkRHJhd2luZ1N0
YXRlRm9yTWFzay5tX3NlbGVjdGlvblBhaW50U3R5bGUtPnN0cm9rZVdpZHRoICs9IGFtb3VudFRv
SW5jcmVhc2VTdHJva2VXaWR0aEJ5OworICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1f
dGV4dFNoYWRvdyA9IG51bGxwdHI7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9z
ZWxlY3Rpb25TaGFkb3cgPSBudWxscHRyOworICAgIHBhaW50VGV4dCgpOworCisgICAgbV9zYXZl
ZERyYXdpbmdTdGF0ZUZvck1hc2sgPSBzYXZlZERyYXdpbmdTdGF0ZUZvck1hc2s7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmY0MzQ3NDFiNTg4YWM0ODc1MmZhMTFhN2IxZGFiYjQwMWRmMzNiMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUZXh0UGFpbnRlcl9oCisjZGVmaW5lIFRleHRQ
YWludGVyX2gKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlJlbmRl
clRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJDb21iaW5lVGV4
dDsKKworc3RydWN0IFRleHRQYWludFN0eWxlOworCitlbnVtIFJvdGF0aW9uRGlyZWN0aW9uIHsg
Q291bnRlcmNsb2Nrd2lzZSwgQ2xvY2t3aXNlIH07CisKK3N0YXRpYyBpbmxpbmUgQWZmaW5lVHJh
bnNmb3JtIHJvdGF0aW9uKGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgUm90YXRpb25EaXJlY3Rp
b24gY2xvY2t3aXNlKQoreworICAgIHJldHVybiBjbG9ja3dpc2UgPyBBZmZpbmVUcmFuc2Zvcm0o
MCwgMSwgLTEsIDAsIGJveFJlY3QueCgpICsgYm94UmVjdC5tYXhZKCksIGJveFJlY3QubWF4WSgp
IC0gYm94UmVjdC54KCkpCisgICAgICAgIDogQWZmaW5lVHJhbnNmb3JtKDAsIC0xLCAxLCAwLCBi
b3hSZWN0LngoKSAtIGJveFJlY3QubWF4WSgpLCBib3hSZWN0LngoKSArIGJveFJlY3QubWF4WSgp
KTsKK30KKworc3RydWN0IFNhdmVkRHJhd2luZ1N0YXRlRm9yTWFzayB7CisgICAgU2F2ZWREcmF3
aW5nU3RhdGVGb3JNYXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dFBhaW50U3R5bGUq
IHRleHRQYWludFN0eWxlLCBUZXh0UGFpbnRTdHlsZSogc2VsZWN0aW9uUGFpbnRTdHlsZSwKKyAg
ICBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBzZWxlY3Rp
b25TaGFkb3cpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgICAgICwgbV90ZXh0
UGFpbnRTdHlsZSh0ZXh0UGFpbnRTdHlsZSkKKyAgICAgICAgLCBtX3NlbGVjdGlvblBhaW50U3R5
bGUoc2VsZWN0aW9uUGFpbnRTdHlsZSkKKyAgICAgICAgLCBtX3RleHRTaGFkb3codGV4dFNoYWRv
dykKKyAgICAgICAgLCBtX3NlbGVjdGlvblNoYWRvdyhzZWxlY3Rpb25TaGFkb3cpCisgICAgewor
ICAgIH0KKyAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKKyAgICBUZXh0UGFpbnRTdHls
ZSogbV90ZXh0UGFpbnRTdHlsZTsKKyAgICBUZXh0UGFpbnRTdHlsZSogbV9zZWxlY3Rpb25QYWlu
dFN0eWxlOworICAgIGNvbnN0IFNoYWRvd0RhdGEqIG1fdGV4dFNoYWRvdzsKKyAgICBjb25zdCBT
aGFkb3dEYXRhKiBtX3NlbGVjdGlvblNoYWRvdzsKK307CisKK2NsYXNzIFRleHRQYWludGVyIHsK
K3B1YmxpYzoKKyAgICBUZXh0UGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBib29sIHBhaW50U2Vs
ZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHksIGNvbnN0IEZv
bnQmLAorICAgIGludCBzdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBpbnQgZW5kUG9zaXRpb25JblRl
eHRCb3hTdHJpbmcsIGludCBsZW5ndGgsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJr
LCBSZW5kZXJDb21iaW5lVGV4dCosCisgICAgVGV4dFJ1biYsIEZsb2F0UmVjdCYgYm94UmVjdCwg
RmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgaW50IGVtcGhhc2lzTWFya09mZnNldCwgY29uc3QgU2hh
ZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSogc2VsZWN0aW9uU2hhZG93LAor
ICAgIGJvb2wgdGV4dEJveElzSG9yaXpvbnRhbCwgVGV4dFBhaW50U3R5bGUmIG5vblNlbGVjdGlv
blBhaW50U3R5bGUsIFRleHRQYWludFN0eWxlJiBzZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICAK
KyAgICBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2JveFJlY3Q7
IH0KKyAgICB2b2lkIHBhaW50VGV4dCgpOworICAgIHZvaWQgcGFpbnRUZXh0SW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGZsb2F0IGFtb3VudFRvSW5jcmVhc2VTdHJva2VXaWR0aEJ5KTsKKwor
cHJpdmF0ZToKKyAgICBib29sIG1fcGFpbnRTZWxlY3RlZFRleHRPbmx5OworICAgIGJvb2wgbV9w
YWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHk7CisgICAgY29uc3QgRm9udCYgbV9mb250OworICAg
IGludCBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW47CisgICAgaW50IG1fZW5kUG9zaXRpb25JblRl
eHRSdW47CisgICAgaW50IG1fbGVuZ3RoOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbV9lbXBo
YXNpc01hcms7CisgICAgUmVuZGVyQ29tYmluZVRleHQqIG1fY29tYmluZWRUZXh0OworICAgIFRl
eHRSdW4mIG1fdGV4dFJ1bjsKKyAgICBGbG9hdFJlY3QmIG1fYm94UmVjdDsKKyAgICBGbG9hdFBv
aW50JiBtX3RleHRPcmlnaW47CisgICAgaW50IG1fZW1waGFzaXNNYXJrT2Zmc2V0OworICAgIGJv
b2wgbV90ZXh0Qm94SXNIb3Jpem9udGFsOworICAgIFNhdmVkRHJhd2luZ1N0YXRlRm9yTWFzayBt
X3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFRleHRQYWludGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215431</attachid>
            <date>2013-10-29 14:55:20 -0700</date>
            <delta_ts>2013-10-29 15:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123355-20131029145519.patch</filename>
            <type>text/plain</type>
            <size>36556</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ4NmQ2ZjA4ZGVhMzY4
NzUyNWMxZjk0MGYyMDliMGQzMWE5MzQ1NS4uYmM4YmVjYzc1NTJkZDgyYzkwZDZhYmNhNmYwYzg0
YmIyYTI2MDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBJbmxp
bmVUZXh0Qm94J3MgdGV4dCBwYWludGluZyB0byBpdCdzIG93biBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRleHQtZGVj
b3JhdGlvbi1za2lwOiBpbmsgcmVxdWlyZXMgZHJhd2luZyB0ZXh0CisgICAgICAgIHR3aWNlIChv
bmNlIHJlZ3VsYXJseSwgYW5kIG9uY2Ugd2l0aCBhIHRoaWNrIG91dGxpbmUgaW50byBhIG1hc2sp
LgorICAgICAgICBUaGlzIHBhdGNoIHB1bGxzIG91dCB0aGUgcmVsZXZhbnQgdGV4dCBkcmF3aW5n
IGNvZGUgZnJvbQorICAgICAgICBJbmxpbmVUZXh0Qm94IGludG8gYSBuZXcgY2xhc3MsIGNhbGxl
ZCBUZXh0UGFpbnRlciwgd2hpY2ggY2FuIGJlIHJlLXVzZWQKKyAgICAgICAgdG8gZHJhdyB0ZXh0
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9i
c2VydmFibGUgZGlmZmVyZW5jZSwgbm8gdGVzdHMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGluZyBuZXcgVGV4dFBhaW50ZXIgY2xhc3MKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRpbmcgbmV3IFRleHRQYWludGVyIGNsYXNzCisg
ICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogQWRkaW5nIG5ldyBUZXh0
UGFpbnRlciBjbGFzcworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVyczogQWRkaW5nIG5ldyBUZXh0UGFpbnRlcgorICAgICAgICBjbGFzcworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkaW5nIG5ldyBUZXh0UGFpbnRl
ciBjbGFzcworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50KTogTW92aW5nIHRleHQgZHJhd2luZyBjb2Rl
IGZyb20KKyAgICAgICAgdGhpcyBmdW5jdGlvbgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJp
bmdBbGxJbk9uZS5jcHA6IEFkZGluZyBuZXcgVGV4dFBhaW50ZXIgY2xhc3MKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQ
YWludGVyOjpUZXh0UGFpbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3VGV4dE9yRW1waGFz
aXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93cyk6CisgICAg
ICAgIChXZWJDb3JlOjpyb3RhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6
cGFpbnRUZXh0KTogTmV3IGxvY2F0aW9uIGZvciB0ZXh0IGRyYXdpbmcKKyAgICAgICAgY29kZQor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dEluQ29udGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrOjpTYXZlZERyYXdpbmdTdGF0ZUZvck1hc2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmJveFJlY3QpOgorCiAyMDEzLTEwLTI4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBzdXBwb3J0IGZvciBvcmRlciBpbnNpZGUgZ3JpZCBpdGVtcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAwNzYyN2VmOTljNmQzNmZhMDBjNTcxZWQyNDkwOTZlZDgxOTE2YmU5
Li5jZDAxMzZiZDRkNDY5ZjUzY2U4NmQ4NjVkZjNiYzc4NTAxZmNjMjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjE4MSw2ICsyMTgxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAogICAgIHJlbmRlcmluZy9UZXh0
QXV0b3NpemVyLmNwcAogICAgIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKyAgICByZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuY3BwCiAgICAgcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAogCiAg
ICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDRmYjQxMjFiNWVjM2E2NWVjNDQ1MGE3OGNkMzZjNmI0YzM3MTFm
NmMuLmVkOWJkOTBhMjRkYTM4MDZiMjFmZmFmMmQxYzMxNmZlOTgxMjkyMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQ5Myw2ICs0NDkzLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1ZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBiZDIxYmVi
YzEyOGE1OGQ0MGIwNDkzNDhmN2FjMThhM2RkYzBiNzJiLi4xNDhkZGJkZjYwZjc4YjJiZmE1MWQ5
ZjRlZjA3NzlhOWUzYWRlMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKQEAgLTExNzIxLDYgKzExNzIxLDIwIEBACiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRleHRQYWludGVyLmNwcCI+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3b3JrZXJzXFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceG1sXERP
TVBhcnNlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx4bWxcTmF0aXZlWFBh
dGhOU1Jlc29sdmVyLmNwcCIgLz4KQEAgLTE5Njk5LDYgKzE5NzEzLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUYWJsZUxheW91dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRleHRQYWludFN0eWxlLmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50ZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUcmFpbGluZ0Zsb2F0c1Jv
b3RJbmxpbmVCb3guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xt
YXRobWxcUmVuZGVyTWF0aE1MQmxvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xtYXRobWxcUmVuZGVyTWF0aE1MRmVuY2VkLmgiIC8+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5k
ZXggOTJkYTg5ZWRkYzRlZGY5NmQ4Y2NjNDk4ZDlmOGRhYmI5MWNiMzhkZC4uYjNjMWVlNTE5ZTY0
NDViNTRmYzFjYjJmOTVlMGJlMGJhODE0MjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjk0MCw2ICsy
OTQwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4
dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN2Zzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXFRleHRQYWludGVyLmNwcCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceG1sXERPTVBh
cnNlci5jcHAiPgogICAgICAgPEZpbHRlcj54bWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
QEAgLTk2MTksNiArOTYyMiw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcVGFibGVMYXlvdXQuaCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRleHRQ
YWludGVyLmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUcmFpbGluZ0Zsb2F0
c1Jvb3RJbmxpbmVCb3guaCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpAQCAtMTQ5ODEsNCArMTQ5ODcsNCBAQAogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVx3aW48L0ZpbHRlcj4KICAgICA8L01BU00+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MTJmMGVkMjEx
Zjg4NzZmOTJlYzE3Njc2NTg5OGQ5OWFiM2E4YzZjLi5lOWU0OGFmMWU5NWZmZmMwMGEwODlkMjIy
Zjk4YjlhYTg4YmExZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MjQsNiArODI0LDggQEAKIAkJMUMxMUNDQzYwQUE2MDkz
NzAwREFEQjIwIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QzMEE5OEM0Mjgw
MEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggKi87IH07CiAJCTFDMTFDQ0M3MEFBNjA5
MzcwMERBREIyMCAvKiBET01DREFUQVNlY3Rpb24uaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0NGMEE5OEM0MjcwMEEy
NzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLzsgfTsKIAkJMUMxMUNDQzgwQUE2MDkzNzAwREFE
QjIwIC8qIERPTUhUTUxFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NURGMkVFQjBBQTM4N0NCMDBBRDY0QzUgLyog
RE9NSFRNTEVsZW1lbnQuaCAqLzsgfTsKKwkJMUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRl
eHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi87IH07CisJ
CTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcxODFBRjZBNTAwQzRFRjIy
IC8qIFRleHRQYWludGVyLmggKi87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBE
b2N1bWVudExvYWRlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwICovOyB9OwogCQkxQzI2NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3QjBEN0Uy
NEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi87IH07CiAJCTFDNEM4RjAyMEFEODVEODcwMDk0
NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzRDOEYwMDBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC03MzExLDYgKzczMTMsOCBAQAogCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBG
RjcgLyogUHJveHlTZXJ2ZXJDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcm94eVNlcnZlckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFGRTExOTcwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUZFMTE5ODBDQkZGQ0M0MDAz
MDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFBhaW50ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4REE1NzE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBh
aW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBhaW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8q
IERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvY3VtZW50TG9hZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDNDM1Q0QzMTRFODU0NEYwMDRFMTBFQSAvKiBJbnNwZWN0b3IuanNvbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJ
bnNwZWN0b3IuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzkzLDYgKzIw
Nzk3LDggQEAKIAkJCQlFNEM5MUEwRDE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUu
aCAqLywKIAkJCQkzN0ZDOTZEQTExMDRFRDcxMDAzRTFGQUQgLyogVHJhaWxpbmdGbG9hdHNSb290
SW5saW5lQm94LmggKi8sCiAJCQkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2Fs
UG9zaXRpb25DYWNoZS5oICovLAorCQkJCTFDMThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0
UGFpbnRlci5jcHAgKi8sCisJCQkJMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWlu
dGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbmRlcmluZzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yMTU3NSw2ICsyMTU4MSw3IEBACiAJCQkJMjlBODEyMzYwRkJCOUMxRDAw
NTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0MDlD
OTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM5MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4REE1OTE4MUFGNkE1MDBD
NEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRGNkVCMTEwOEY5
QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOTQ4OUZDNzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmls
aXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MjU0LDYgKzI3MjYxLDcgQEAKIAkJCQlG
RUFEN0Q4NzE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkE1NDE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNh
Y3Rpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBNTYxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZFMzZGRDE2MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFj
aGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDhGRjE3RDE0Q0VFMDA0MjBBQTEgLyog
TWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBNUExNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzNDcwMzZkNmQ3NzVjMWQ3MGJi
YTdhMDc4ODc4NjhjNTcxMmQ3YTc4Li5lZDBmODg3ODliODg3NTU3ZDcwNGNiNDYxN2Y5YTY0MDg0
NGQ0NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKKyNpbmNsdWRl
ICJUZXh0UGFpbnRlci5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCkBAIC0zOTcsNTQgKzM5OCw2IEBAIEZsb2F0U2l6ZSBJbmxpbmVU
ZXh0Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKICAgICByZXR1cm4gZXh0cmFPZmZzZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50VGV4
dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmss
IGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwg
aW50IHRydW5jYXRpb25Qb2ludCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29u
c3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wgaG9yaXpvbnRhbCkKLXsK
LSAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LT5maWxsQ29sb3IoKTsKLSAgICBDb2xvclNw
YWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKTsKLSAgICBib29s
IG9wYXF1ZSA9IGZpbGxDb2xvci5hbHBoYSgpID09IDI1NTsKLSAgICBpZiAoIW9wYXF1ZSkKLSAg
ICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgZmlsbENvbG9yU3BhY2Up
OwotCi0gICAgZG8gewotICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0OwotICAgICAgICBpZiAo
c2hhZG93KQotICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSByb3VuZGVkSW50U2l6ZShJbmxpbmVU
ZXh0Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIHNoYWRvdywgYm94
UmVjdCwgc3Ryb2tlZCwgb3BhcXVlLCBob3Jpem9udGFsKSk7Ci0gICAgICAgIGVsc2UgaWYgKCFv
cGFxdWUpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxs
Q29sb3JTcGFjZSk7Ci0KLSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDw9IGVuZE9mZnNldCkgewot
ICAgICAgICAgICAgaWYgKGVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5kcmF3RW1waGFzaXNNYXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01h
cmssIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCArIEludFNpemUoMCwgZW1waGFzaXNNYXJrT2Zm
c2V0KSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoZW5kT2Zmc2V0ID4gMCkgewotICAgICAgICAgICAgICAgIGlmIChlbXBoYXNpc01h
cmsuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250
LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsICAwLCBlbmRPZmZzZXQpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VtcGhh
c2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgZXh0cmFP
ZmZzZXQgKyBJbnRTaXplKDAsIGVtcGhhc2lzTWFya09mZnNldCksICAwLCBlbmRPZmZzZXQpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDwgdHJ1bmNhdGlvblBv
aW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmln
aW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIHRydW5jYXRpb25Qb2ludCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3RW1waGFzaXNN
YXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIHRleHRPcmlnaW4gKyBleHRyYU9mZnNl
dCArIEludFNpemUoMCwgZW1waGFzaXNNYXJrT2Zmc2V0KSwgIHN0YXJ0T2Zmc2V0LCB0cnVuY2F0
aW9uUG9pbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFzaGFk
b3cpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwg
c3Ryb2tlZCB8fCAhb3BhcXVlKQotICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwotCi0gICAgICAg
IHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwotICAgIH0gd2hpbGUgKHNoYWRvdyB8fCBzdHJva2Vk
IHx8ICFvcGFxdWUpOwotfQotCiBib29sIElubGluZVRleHRCb3g6OmdldEVtcGhhc2lzTWFya1Bv
c2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dEVtcGhhc2lzUG9zaXRpb24mIGVt
cGhhc2lzUG9zaXRpb24pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRy
dWUgaWYgdGhlcmUgYXJlIHRleHQgZW1waGFzaXMgbWFya3MgYW5kIHRoZXkgYXJlIHN1cHByZXNz
ZWQgYnkgcnVieSB0ZXh0LgpAQCAtNDY4LDE0ICs0MjEsNiBAQCBib29sIElubGluZVRleHRCb3g6
OmdldEVtcGhhc2lzTWFya1Bvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dEVt
cGhhcwogICAgIHJldHVybiAhcnVieVRleHQgfHwgIXJ1YnlUZXh0LT5oYXNMaW5lcygpOwogfQog
Ci1lbnVtIFJvdGF0aW9uRGlyZWN0aW9uIHsgQ291bnRlcmNsb2Nrd2lzZSwgQ2xvY2t3aXNlIH07
Ci0KLXN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIHJvdGF0aW9uKGNvbnN0IEZsb2F0UmVj
dCYgYm94UmVjdCwgUm90YXRpb25EaXJlY3Rpb24gY2xvY2t3aXNlKQotewotICAgIHJldHVybiBj
bG9ja3dpc2UgPyBBZmZpbmVUcmFuc2Zvcm0oMCwgMSwgLTEsIDAsIGJveFJlY3QueCgpICsgYm94
UmVjdC5tYXhZKCksIGJveFJlY3QubWF4WSgpIC0gYm94UmVjdC54KCkpCi0gICAgICAgIDogQWZm
aW5lVHJhbnNmb3JtKDAsIC0xLCAxLCAwLCBib3hSZWN0LngoKSAtIGJveFJlY3QubWF4WSgpLCBi
b3hSZWN0LngoKSArIGJveFJlY3QubWF4WSgpKTsKLX0KLQogdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBMYXlvdXRVbml0IC8qbGluZVRvcCovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQogewog
ICAgIGlmIChpc0xpbmVCcmVhaygpIHx8ICFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290
KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUKQEAgLTYyOCw1OSArNTczLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAgY29u
c3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdyA9IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8g
MCA6IGxpbmVTdHlsZS50ZXh0U2hhZG93KCk7CiAKLSAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0
T25seSkgewotICAgICAgICAvLyBGb3Igc3Ryb2tlZCBwYWludGluZywgd2UgaGF2ZSB0byBjaGFu
Z2UgdGhlIHRleHQgZHJhd2luZyBtb2RlLiAgSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVh
dmUgdGhhdCBtdXRhdGVkIGFzIGEgc2lkZQotICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hl
biB3ZSBrbm93IHdlJ3JlIHN0cm9raW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCB0ZXh0UGFpbnRTdHls
ZS5zdHJva2VXaWR0aCA+IDApOwotCi0gICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCgqY29u
dGV4dCwgdGV4dFBhaW50U3R5bGUpOwotICAgICAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0U2Vw
YXJhdGVseSB8fCBlUG9zIDw9IHNQb3MpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUcnVuY2F0
ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAgICAgICAgICAgcGFpbnRUZXh0V2l0
aFNoYWRvd3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgbnVsbEF0b20sIDAsIDAsIGxlbmd0aCwg
bGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0UGFpbnRTdHlsZS5z
dHJva2VXaWR0aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBudWxsQXRv
bSwgMCwgZVBvcywgc1BvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93
LCB0ZXh0UGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDAsIGlzSG9yaXpvbnRhbCgpKTsKLQotICAg
ICAgICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHVwZGF0ZUdy
YXBoaWNzQ29udGV4dCgqY29udGV4dCwgdGV4dFBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0Nv
bG9yKTsKLQotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXh0UnVuLCBvYmplY3RS
ZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4sICgmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIs
IDEpKTsKLSAgICAgICAgICAgIFRleHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBjb21iaW5l
ZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4gOiB0ZXh0UnVuOwotICAg
ICAgICAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gY29tYmluZWRUZXh0
ID8gRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3Jp
Z2luLnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiB0ZXh0T3JpZ2luOwotICAg
ICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jb25j
YXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7Ci0KLSAgICAgICAgICAgIGlmICgh
cGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5IHx8IGVQb3MgPD0gc1BvcykgewotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5Lgot
ICAgICAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGNvbWJpbmVkVGV4
dCA/IGNvbWJpbmVkVGV4dC0+b3JpZ2luYWxGb250KCkgOiBmb250LCBlbXBoYXNpc01hcmtUZXh0
UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgMCwgbGVuZ3RoLCBsZW5ndGgs
IGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWludFN0
eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgY29tYmluZWRU
ZXh0ID8gY29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IGZvbnQsIGVtcGhhc2lzTWFya1Rl
eHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCBlUG9zLCBzUG9zLCBsZW5n
dGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIGJveFJlY3QsIHRleHRTaGFkb3csIHRleHRQYWlu
dFN0eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAgICAgICBp
ZiAoY29tYmluZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3Rh
dGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoKHBhaW50U2VsZWN0ZWRUZXh0T25seSB8fCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRl
bHkpICYmIHNQb3MgPCBlUG9zKSB7Ci0gICAgICAgIC8vIHBhaW50IG9ubHkgdGhlIHRleHQgdGhh
dCBpcyBzZWxlY3RlZAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmNvbnRleHQsIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKLQotICAg
ICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKmNvbnRleHQsIHNlbGVjdGlvblBhaW50U3R5bGUp
OwotICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBu
dWxsQXRvbSwgMCwgc1BvcywgZVBvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCBzZWxl
Y3Rpb25TaGFkb3csIHNlbGVjdGlvblBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwLCBpc0hvcml6
b250YWwoKSk7Ci0gICAgICAgIGlmICghZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCpjb250ZXh0LCBzZWxlY3Rpb25QYWludFN0eWxl
LCBVc2VFbXBoYXNpc01hcmtDb2xvcik7Ci0KLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoVGV4dFJ1biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7Ci0gICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01h
cmtUZXh0UnVuID0gY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0
UnVuIDogdGV4dFJ1bjsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9y
aWdpbiA9IGNvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qu
d2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
IDogdGV4dE9yaWdpbjsKLSAgICAgICAgICAgIGlmIChjb21iaW5lZFRleHQpCi0gICAgICAgICAg
ICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwot
Ci0gICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBjb21iaW5lZFRleHQg
PyBjb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1
biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHNQb3MsIGVQb3MsIGxlbmd0aCwg
ZW1waGFzaXNNYXJrVGV4dE9yaWdpbiwgYm94UmVjdCwgc2VsZWN0aW9uU2hhZG93LCBzZWxlY3Rp
b25QYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwotCi0gICAgICAg
ICAgICBpZiAoY29tYmluZWRUZXh0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENU
TShyb3RhdGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7Ci0gICAgICAgIH0KLSAgICB9
CisgICAgVGV4dFBhaW50ZXIgdGV4dFBhaW50ZXIoKmNvbnRleHQsIHBhaW50U2VsZWN0ZWRUZXh0
T25seSwgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBmb250LCBzUG9zLCBlUG9zLCBsZW5n
dGgsIGVtcGhhc2lzTWFyaywgY29tYmluZWRUZXh0LCB0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3Jp
Z2luLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRTaGFkb3csIHNlbGVjdGlvblNoYWRvdywgaXNI
b3Jpem9udGFsKCksIHRleHRQYWludFN0eWxlLCBzZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICB0
ZXh0UGFpbnRlci5wYWludFRleHQoKTsKIAogICAgIC8vIFBhaW50IGRlY29yYXRpb25zCiAgICAg
VGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25zID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9u
c0luRWZmZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
aW5nQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbElu
T25lLmNwcAppbmRleCBhNzFjMTRjN2U4Mzc2N2VmNGI5ZTk2OTQ5ODIzOTQ4MTE5NzlmODllLi4z
NjY3ZDgyYmE1YjVlODhlMjZiZjAzMDY0NjRmM2I3YzIzMzgxMjM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTEyMCw1ICsxMjAsNiBA
QAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5jcHAiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5j
cHAiCiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuY3BwIgorI2luY2x1ZGUgIlRleHRQYWludGVy
LmNwcCIKICNpbmNsdWRlICJicmVha19saW5lcy5jcHAiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjYWE1MTZmYjRjOTY0NzVhZWE3YTdmMTA2
NWNiMTcyNzA1MWViMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlRleHRQYWludGVyLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRl
eHQuaCIKKyNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1RleHRQYWludGVyOjpUZXh0UGFpbnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJv
b2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVs
eSwgY29uc3QgRm9udCYgZm9udCwKKyAgICBpbnQgc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgaW50
IGVuZFBvc2l0aW9uSW5UZXh0Qm94U3RyaW5nLCBpbnQgbGVuZ3RoLCBjb25zdCBBdG9taWNTdHJp
bmcmIGVtcGhhc2lzTWFyaywgUmVuZGVyQ29tYmluZVRleHQqIGNvbWJpbmVkVGV4dCwgVGV4dFJ1
biYgdGV4dFJ1biwKKyAgICBGbG9hdFJlY3QmIGJveFJlY3QsIEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3cs
IGNvbnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdywKKyAgICBib29sIHRleHRCb3hJc0hv
cml6b250YWwsIFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHlsZSwgVGV4dFBhaW50U3R5bGUm
IHNlbGVjdGlvblBhaW50U3R5bGUpCisgICAgOiBtX3BhaW50U2VsZWN0ZWRUZXh0T25seShwYWlu
dFNlbGVjdGVkVGV4dE9ubHkpCisgICAgLCBtX3BhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseShw
YWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpCisgICAgLCBtX2ZvbnQoZm9udCkKKyAgICAsIG1f
c3RhcnRQb3NpdGlvbkluVGV4dFJ1bihzdGFydFBvc2l0aW9uSW5UZXh0UnVuKQorICAgICwgbV9l
bmRQb3NpdGlvbkluVGV4dFJ1bihlbmRQb3NpdGlvbkluVGV4dEJveFN0cmluZykKKyAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKKyAgICAsIG1fZW1waGFzaXNNYXJrKGVtcGhhc2lzTWFyaykKKyAgICAs
IG1fY29tYmluZWRUZXh0KGNvbWJpbmVkVGV4dCkKKyAgICAsIG1fdGV4dFJ1bih0ZXh0UnVuKQor
ICAgICwgbV9ib3hSZWN0KGJveFJlY3QpCisgICAgLCBtX3RleHRPcmlnaW4odGV4dE9yaWdpbikK
KyAgICAsIG1fZW1waGFzaXNNYXJrT2Zmc2V0KGVtcGhhc2lzTWFya09mZnNldCkKKyAgICAsIG1f
dGV4dEJveElzSG9yaXpvbnRhbCh0ZXh0Qm94SXNIb3Jpem9udGFsKQorICAgICwgbV9zYXZlZERy
YXdpbmdTdGF0ZUZvck1hc2soJmNvbnRleHQsICZ0ZXh0UGFpbnRTdHlsZSwgJnNlbGVjdGlvblBh
aW50U3R5bGUsIHRleHRTaGFkb3csIHNlbGVjdGlvblNoYWRvdykKK3sKK30KKworc3RhdGljIHZv
aWQgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9taWNTdHJpbmcm
IGVtcGhhc2lzTWFyaywKKyAgICBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgY29uc3QgaW50IGZyb20sIGNvbnN0IGludCB0bykKK3sKKyAgICBpZiAoZW1w
aGFzaXNNYXJrLmlzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0
UnVuLCBwb2ludCwgZnJvbSwgdG8pOworICAgIGVsc2UKKyAgICAgICAgY29udGV4dC5kcmF3RW1w
aGFzaXNNYXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIHBvaW50ICsgSW50U2l6ZSgw
LCBlbXBoYXNpc01hcmtPZmZzZXQpLCBmcm9tLCB0byk7Cit9CisKK3N0YXRpYyB2b2lkIHBhaW50
VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01h
cmssCisgICAgaW50IGVtcGhhc2lzTWFya09mZnNldCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0LCBpbnQgdHJ1bmNhdGlvblBvaW50LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2lu
LCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsCisgICAgY29uc3QgU2hhZG93RGF0YSogc2hhZG93
LCBib29sIHN0cm9rZWQsIGJvb2wgaG9yaXpvbnRhbCkKK3sKKyAgICBDb2xvciBmaWxsQ29sb3Ig
PSBjb250ZXh0LT5maWxsQ29sb3IoKTsKKyAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0g
Y29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKTsKKyAgICBib29sIG9wYXF1ZSA9ICFmaWxsQ29sb3Iu
aGFzQWxwaGEoKTsKKyAgICBpZiAoIW9wYXF1ZSkKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yOjpibGFjaywgZmlsbENvbG9yU3BhY2UpOworCisgICAgZG8geworICAgICAgICBJ
bnRTaXplIGV4dHJhT2Zmc2V0OworICAgICAgICBpZiAoc2hhZG93KQorICAgICAgICAgICAgZXh0
cmFPZmZzZXQgPSByb3VuZGVkSW50U2l6ZShJbmxpbmVUZXh0Qm94OjphcHBseVNoYWRvd1RvR3Jh
cGhpY3NDb250ZXh0KGNvbnRleHQsIHNoYWRvdywgYm94UmVjdCwgc3Ryb2tlZCwgb3BhcXVlLCBo
b3Jpem9udGFsKSk7CisgICAgICAgIGVsc2UgaWYgKCFvcGFxdWUpCisgICAgICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CisKKyAgICAgICAg
aWYgKHN0YXJ0T2Zmc2V0IDw9IGVuZE9mZnNldCkKKyAgICAgICAgICAgIGRyYXdUZXh0T3JFbXBo
YXNpc01hcmtzKCpjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lz
TWFya09mZnNldCwgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCkKKyAg
ICAgICAgICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNNYXJrcygqY29udGV4dCwgZm9udCwgdGV4
dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRPcmlnaW4gKyBleHRy
YU9mZnNldCwgMCwgZW5kT2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChzdGFydE9mZnNldCA8IHRy
dW5jYXRpb25Qb2ludCkKKyAgICAgICAgICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNNYXJrcygq
Y29udGV4dCwgZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQs
IHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIHRydW5jYXRpb25Qb2ludCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXNoYWRvdykKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGlmIChzaGFkb3ctPm5leHQoKSB8fCBzdHJva2VkIHx8ICFvcGFxdWUpCisgICAg
ICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bnRleHQtPmNsZWFyU2hhZG93KCk7CisKKyAgICAgICAgc2hhZG93ID0gc2hhZG93LT5uZXh0KCk7
CisgICAgfSB3aGlsZSAoc2hhZG93IHx8IHN0cm9rZWQgfHwgIW9wYXF1ZSk7Cit9CisKK3ZvaWQg
VGV4dFBhaW50ZXI6OnBhaW50VGV4dCgpCit7CisgICAgQVNTRVJUKG1fc2F2ZWREcmF3aW5nU3Rh
dGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUpOworICAgIEFTU0VSVChtX3NhdmVkRHJhd2luZ1N0
YXRlRm9yTWFzay5tX3NlbGVjdGlvblBhaW50U3R5bGUpOworICAgIAorICAgIEZsb2F0UG9pbnQg
Ym94T3JpZ2luID0gYm94UmVjdCgpLmxvY2F0aW9uKCk7CisKKyAgICBpZiAoIW1fcGFpbnRTZWxl
Y3RlZFRleHRPbmx5KSB7CisgICAgICAgIC8vIEZvciBzdHJva2VkIHBhaW50aW5nLCB3ZSBoYXZl
IHRvIGNoYW5nZSB0aGUgdGV4dCBkcmF3aW5nIG1vZGUuIEl0J3MgcHJvYmFibHkgZGFuZ2Vyb3Vz
IHRvIGxlYXZlIHRoYXQgbXV0YXRlZCBhcyBhIHNpZGUKKyAgICAgICAgLy8gZWZmZWN0LCBzbyBv
bmx5IHdoZW4gd2Uga25vdyB3ZSdyZSBzdHJva2luZywgZG8gYSBzYXZlL3Jlc3RvcmUuCisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqbV9zYXZlZERyYXdpbmdT
dGF0ZUZvck1hc2subV9jb250ZXh0LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3RleHRQ
YWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDApOworCisgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dCgqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCAqbV9zYXZlZERyYXdp
bmdTdGF0ZUZvck1hc2subV90ZXh0UGFpbnRTdHlsZSk7CisgICAgICAgIGlmICghbV9wYWludFNl
bGVjdGVkVGV4dFNlcGFyYXRlbHkgfHwgbV9lbmRQb3NpdGlvbkluVGV4dFJ1biA8PSBtX3N0YXJ0
UG9zaXRpb25JblRleHRSdW4pIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdo
dC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgorICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRv
d3MobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2ZvbnQsIG1fdGV4dFJ1
biwgbnVsbEF0b20sIDAsIDAsIG1fbGVuZ3RoLCBtX2xlbmd0aCwgbV90ZXh0T3JpZ2luLCBtX2Jv
eFJlY3QsIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFNoYWRvdywgbV9zYXZlZERy
YXdpbmdTdGF0ZUZvck1hc2subV90ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwLCBtX3Rl
eHRCb3hJc0hvcml6b250YWwpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBhaW50VGV4
dFdpdGhTaGFkb3dzKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCwgbV9mb250
LCBtX3RleHRSdW4sIG51bGxBdG9tLCAwLCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuLCBtX3N0YXJ0
UG9zaXRpb25JblRleHRSdW4sIG1fbGVuZ3RoLCBtX3RleHRPcmlnaW4sIG1fYm94UmVjdCwgbV9z
YXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0U2hhZG93LCBtX3NhdmVkRHJhd2luZ1N0YXRl
Rm9yTWFzay5tX3RleHRQYWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9y
aXpvbnRhbCk7CisKKyAgICAgICAgaWYgKCFtX2VtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCgqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1h
c2subV9jb250ZXh0LCAqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0UGFpbnRTdHls
ZSwgVXNlRW1waGFzaXNNYXJrQ29sb3IpOworCisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFRleHRSdW4sIG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1biwgKCZvYmplY3RS
ZXBsYWNlbWVudENoYXJhY3RlciwgMSkpOworICAgICAgICAgICAgVGV4dFJ1biYgZW1waGFzaXNN
YXJrVGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJU
ZXh0UnVuIDogbV90ZXh0UnVuOworICAgICAgICAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtU
ZXh0T3JpZ2luID0gbV9jb21iaW5lZFRleHQgPyBGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBt
X2JveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQuZm9udE1ldHJpY3Mo
KS5hc2NlbnQoKSkgOiBtX3RleHRPcmlnaW47CisgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRl
eHQpCisgICAgICAgICAgICAgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0
LT5jb25jYXRDVE0ocm90YXRpb24obV9ib3hSZWN0LCBDbG9ja3dpc2UpKTsKKworICAgICAgICAg
ICAgaWYgKCFtX3BhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSB8fCBtX2VuZFBvc2l0aW9uSW5U
ZXh0UnVuIDw9IG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1bikgeworICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgorICAgICAgICAg
ICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1f
Y29udGV4dCwgbV9jb21iaW5lZFRleHQgPyBtX2NvbWJpbmVkVGV4dC0+b3JpZ2luYWxGb250KCkg
OiBtX2ZvbnQsIGVtcGhhc2lzTWFya1RleHRSdW4sIG1fZW1waGFzaXNNYXJrLCBtX2VtcGhhc2lz
TWFya09mZnNldCwgMCwgbV9sZW5ndGgsIG1fbGVuZ3RoLCBlbXBoYXNpc01hcmtUZXh0T3JpZ2lu
LCBtX2JveFJlY3QsIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFNoYWRvdywgbV9z
YXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAw
LCBtX3RleHRCb3hJc0hvcml6b250YWwpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9j
b250ZXh0LCBtX2NvbWJpbmVkVGV4dCA/IG1fY29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6
IG1fZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1biwgbV9lbXBoYXNpc01hcmssIG1fZW1waGFzaXNN
YXJrT2Zmc2V0LCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuLCBtX3N0YXJ0UG9zaXRpb25JblRleHRS
dW4sIG1fbGVuZ3RoLCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luLCBtX2JveFJlY3QsIG1fc2F2ZWRE
cmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFNoYWRvdywgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1h
c2subV90ZXh0UGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggPiAwLCBtX3RleHRCb3hJc0hvcml6b250
YWwpOworCisgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCisgICAgICAgICAgICAgICAg
bV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24o
bV9ib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoKG1fcGFpbnRTZWxlY3RlZFRleHRPbmx5IHx8IG1fcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0
ZWx5KSAmJiBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW4gPCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVu
KSB7CisgICAgICAgIC8vIHBhaW50IG9ubHkgdGhlIHRleHQgdGhhdCBpcyBzZWxlY3RlZAorICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKm1fc2F2ZWREcmF3aW5n
U3RhdGVGb3JNYXNrLm1fY29udGV4dCwgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxl
Y3Rpb25QYWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDApOworCisgICAgICAgIHVwZGF0ZUdyYXBo
aWNzQ29udGV4dCgqbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCAqbV9zYXZl
ZERyYXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICAgICAgcGFp
bnRUZXh0V2l0aFNoYWRvd3MobV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV9jb250ZXh0LCBt
X2ZvbnQsIG1fdGV4dFJ1biwgbnVsbEF0b20sIDAsIG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwg
bV9lbmRQb3NpdGlvbkluVGV4dFJ1biwgbV9sZW5ndGgsIG1fdGV4dE9yaWdpbiwgbV9ib3hSZWN0
LCBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlvblNoYWRvdywgbV9zYXZlZERy
YXdpbmdTdGF0ZUZvck1hc2subV9zZWxlY3Rpb25QYWludFN0eWxlLT5zdHJva2VXaWR0aCA+IDAs
IG1fdGV4dEJveElzSG9yaXpvbnRhbCk7CisgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKm1fc2F2ZWREcmF3
aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCwgKm1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1f
c2VsZWN0aW9uUGFpbnRTdHlsZSwgVXNlRW1waGFzaXNNYXJrQ29sb3IpOworCisgICAgICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVy
VGV4dFJ1biwgKCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkpOworICAgICAgICAgICAg
VGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVw
bGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuIDogbV90ZXh0UnVuOworICAgICAgICAgICAgRmxvYXRQ
b2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gbV9jb21iaW5lZFRleHQgPyBGbG9hdFBvaW50
KGJveE9yaWdpbi54KCkgKyBtX2JveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBt
X2ZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiBtX3RleHRPcmlnaW47CisgICAgICAgICAg
ICBpZiAobV9jb21iaW5lZFRleHQpCisgICAgICAgICAgICAgICAgbV9zYXZlZERyYXdpbmdTdGF0
ZUZvck1hc2subV9jb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24obV9ib3hSZWN0LCBDbG9ja3dp
c2UpKTsKKworICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MobV9zYXZlZERyYXdpbmdT
dGF0ZUZvck1hc2subV9jb250ZXh0LCBtX2NvbWJpbmVkVGV4dCA/IG1fY29tYmluZWRUZXh0LT5v
cmlnaW5hbEZvbnQoKSA6IG1fZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1biwgbV9lbXBoYXNpc01h
cmssIG1fZW1waGFzaXNNYXJrT2Zmc2V0LCBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW4sIG1fZW5k
UG9zaXRpb25JblRleHRSdW4sIG1fbGVuZ3RoLCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luLCBtX2Jv
eFJlY3QsIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fc2VsZWN0aW9uU2hhZG93LCBtX3Nh
dmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlvblBhaW50U3R5bGUtPnN0cm9rZVdpZHRo
ID4gMCwgbV90ZXh0Qm94SXNIb3Jpem9udGFsKTsKKworICAgICAgICAgICAgaWYgKG1fY29tYmlu
ZWRUZXh0KQorICAgICAgICAgICAgICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29u
dGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKG1fYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBhbW91bnRUb0luY3JlYXNlU3Ryb2tl
V2lkdGhCeSkKK3sKKyAgICBTYXZlZERyYXdpbmdTdGF0ZUZvck1hc2sgc2F2ZWREcmF3aW5nU3Rh
dGVGb3JNYXNrID0gbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2s7CisgICAgCisgICAgQVNTRVJU
KG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUpOworICAgIEFTU0VS
VChtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVjdGlvblBhaW50U3R5bGUpOworICAg
IG1fc2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fY29udGV4dCA9ICZjb250ZXh0OworICAgIG1f
c2F2ZWREcmF3aW5nU3RhdGVGb3JNYXNrLm1fdGV4dFBhaW50U3R5bGUtPnN0cm9rZVdpZHRoICs9
IGFtb3VudFRvSW5jcmVhc2VTdHJva2VXaWR0aEJ5OworICAgIG1fc2F2ZWREcmF3aW5nU3RhdGVG
b3JNYXNrLm1fc2VsZWN0aW9uUGFpbnRTdHlsZS0+c3Ryb2tlV2lkdGggKz0gYW1vdW50VG9JbmNy
ZWFzZVN0cm9rZVdpZHRoQnk7CisgICAgbV9zYXZlZERyYXdpbmdTdGF0ZUZvck1hc2subV90ZXh0
U2hhZG93ID0gbnVsbHB0cjsKKyAgICBtX3NhdmVkRHJhd2luZ1N0YXRlRm9yTWFzay5tX3NlbGVj
dGlvblNoYWRvdyA9IG51bGxwdHI7CisgICAgcGFpbnRUZXh0KCk7CisKKyAgICBtX3NhdmVkRHJh
d2luZ1N0YXRlRm9yTWFzayA9IHNhdmVkRHJhd2luZ1N0YXRlRm9yTWFzazsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NjE1ZmM3ODcwOTA4M2E5NTUwNGQ1Y2VjNWI4NGVmMDlhODhlNGU3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKQEAgLTAs
MCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVGV4dFBhaW50ZXJfaAorI2RlZmluZSBUZXh0UGFpbnRlcl9o
CisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyQ29tYmluZVRleHQ7CisKK3N0
cnVjdCBUZXh0UGFpbnRTdHlsZTsKKworZW51bSBSb3RhdGlvbkRpcmVjdGlvbiB7IENvdW50ZXJj
bG9ja3dpc2UsIENsb2Nrd2lzZSB9OworCitzdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9ybSBy
b3RhdGlvbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIFJvdGF0aW9uRGlyZWN0aW9uIGNsb2Nr
d2lzZSkKK3sKKyAgICByZXR1cm4gY2xvY2t3aXNlID8gQWZmaW5lVHJhbnNmb3JtKDAsIDEsIC0x
LCAwLCBib3hSZWN0LngoKSArIGJveFJlY3QubWF4WSgpLCBib3hSZWN0Lm1heFkoKSAtIGJveFJl
Y3QueCgpKQorICAgICAgICA6IEFmZmluZVRyYW5zZm9ybSgwLCAtMSwgMSwgMCwgYm94UmVjdC54
KCkgLSBib3hSZWN0Lm1heFkoKSwgYm94UmVjdC54KCkgKyBib3hSZWN0Lm1heFkoKSk7Cit9CisK
K3N0cnVjdCBTYXZlZERyYXdpbmdTdGF0ZUZvck1hc2sgeworICAgIFNhdmVkRHJhd2luZ1N0YXRl
Rm9yTWFzayhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHRQYWludFN0eWxlKiB0ZXh0UGFp
bnRTdHlsZSwgVGV4dFBhaW50U3R5bGUqIHNlbGVjdGlvblBhaW50U3R5bGUsCisgICAgY29uc3Qg
U2hhZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSogc2VsZWN0aW9uU2hhZG93
KQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICAsIG1fdGV4dFBhaW50U3R5
bGUodGV4dFBhaW50U3R5bGUpCisgICAgICAgICwgbV9zZWxlY3Rpb25QYWludFN0eWxlKHNlbGVj
dGlvblBhaW50U3R5bGUpCisgICAgICAgICwgbV90ZXh0U2hhZG93KHRleHRTaGFkb3cpCisgICAg
ICAgICwgbV9zZWxlY3Rpb25TaGFkb3coc2VsZWN0aW9uU2hhZG93KQorICAgIHsKKyAgICB9Cisg
ICAgR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgVGV4dFBhaW50U3R5bGUqIG1fdGV4
dFBhaW50U3R5bGU7CisgICAgVGV4dFBhaW50U3R5bGUqIG1fc2VsZWN0aW9uUGFpbnRTdHlsZTsK
KyAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3RleHRTaGFkb3c7CisgICAgY29uc3QgU2hhZG93RGF0
YSogbV9zZWxlY3Rpb25TaGFkb3c7Cit9OworCitjbGFzcyBUZXh0UGFpbnRlciB7CitwdWJsaWM6
CisgICAgVGV4dFBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBwYWludFNlbGVjdGVkVGV4
dE9ubHksIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBjb25zdCBGb250JiwKKyAg
ICBpbnQgc3RhcnRQb3NpdGlvbkluVGV4dFJ1biwgaW50IGVuZFBvc2l0aW9uSW5UZXh0Qm94U3Ry
aW5nLCBpbnQgbGVuZ3RoLCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywgUmVuZGVy
Q29tYmluZVRleHQqLAorICAgIFRleHRSdW4mLCBGbG9hdFJlY3QmIGJveFJlY3QsIEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGNvbnN0IFNoYWRvd0RhdGEq
IHRleHRTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdywKKyAgICBib29s
IHRleHRCb3hJc0hvcml6b250YWwsIFRleHRQYWludFN0eWxlJiBub25TZWxlY3Rpb25QYWludFN0
eWxlLCBUZXh0UGFpbnRTdHlsZSYgc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgCisgICAgY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hSZWN0OyB9CisgICAg
dm9pZCBwYWludFRleHQoKTsKKyAgICB2b2lkIHBhaW50VGV4dEluQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmLCBmbG9hdCBhbW91bnRUb0luY3JlYXNlU3Ryb2tlV2lkdGhCeSk7CisKK3ByaXZhdGU6
CisgICAgYm9vbCBtX3BhaW50U2VsZWN0ZWRUZXh0T25seTsKKyAgICBib29sIG1fcGFpbnRTZWxl
Y3RlZFRleHRTZXBhcmF0ZWx5OworICAgIGNvbnN0IEZvbnQmIG1fZm9udDsKKyAgICBpbnQgbV9z
dGFydFBvc2l0aW9uSW5UZXh0UnVuOworICAgIGludCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuOwor
ICAgIGludCBtX2xlbmd0aDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1fZW1waGFzaXNNYXJr
OworICAgIFJlbmRlckNvbWJpbmVUZXh0KiBtX2NvbWJpbmVkVGV4dDsKKyAgICBUZXh0UnVuJiBt
X3RleHRSdW47CisgICAgRmxvYXRSZWN0JiBtX2JveFJlY3Q7CisgICAgRmxvYXRQb2ludCYgbV90
ZXh0T3JpZ2luOworICAgIGludCBtX2VtcGhhc2lzTWFya09mZnNldDsKKyAgICBib29sIG1fdGV4
dEJveElzSG9yaXpvbnRhbDsKKyAgICBTYXZlZERyYXdpbmdTdGF0ZUZvck1hc2sgbV9zYXZlZERy
YXdpbmdTdGF0ZUZvck1hc2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBUZXh0UGFpbnRlcl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>