<?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>159553</bug_id>
          
          <creation_ts>2016-07-08 04:07:27 -0700</creation_ts>
          <short_desc>[GStreamer] remove WEBKIT_DEBUG support</short_desc>
          <delta_ts>2016-07-11 07:42:40 -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>Platform</component>
          <version>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209049</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-08 04:07:27 -0700</bug_when>
    <thetext>The calls to LOG_VERBOSE produce garbage on ARM, at least:

../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp(1555) : virtual void WebCore::MediaPlayerPrivateGStreamer::updateStates()
maxTimeLoaded: 415938299809481995712198243795165442114446608251198541412533532200303259382674825171887552015390677062453343278568941921082741130768288101511873905211177299203022876703061554139618503974386816465718904469000118736930747555634551649061902668527822349806206623533610353420531539424404447103291289916932096.000000
../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp(1416) : virtual float WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded() const
didLoadingProgress: 2126735596

Also this is confusing in general. In a debug build one can simply enable WEBKIT_DEBUG=Media and/or GST_DEBUG=webkit* if GStreamer logs are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209066</commentid>
    <comment_count>1</comment_count>
      <attachid>283140</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-08 05:52:19 -0700</bug_when>
    <thetext>Created attachment 283140
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209068</commentid>
    <comment_count>2</comment_count>
      <attachid>283142</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-08 05:55:14 -0700</bug_when>
    <thetext>Created attachment 283142
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209625</commentid>
    <comment_count>3</comment_count>
      <attachid>283142</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-07-11 06:28:06 -0700</bug_when>
    <thetext>Comment on attachment 283142
patch

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

It&apos;s a pity that we can&apos;t use the _OBJECT counterparts as these are not GObjects.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:53
&gt; +    GST_DEBUG(&quot;Destroying&quot;);

We might want to use GST_TRACE here as TRACE is used to track references, etc. Not a strong opinion, change it or land it as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209651</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-11 07:42:40 -0700</bug_when>
    <thetext>Committed r203058: &lt;http://trac.webkit.org/changeset/203058&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283140</attachid>
            <date>2016-07-08 05:52:19 -0700</date>
            <delta_ts>2016-07-08 05:55:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>42687</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyMTM4MjE1MDk2YTYwY2I5Zjg4M2EwYTI3YjY5ZGJlNzdlOTRhODM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDggSnVsIDIwMTYgMTQ6NTE6MTggKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICA2OCArKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VXRpbGl0aWVzLmggICAgICAgIHwgIDE2IC0tLQogLi4uL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcCAgfCAgIDggKy0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwgMTE0ICsrKysrKysrKystLS0tLS0tLS0tLQog
Li4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCAgfCAgMjgg
KystLS0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmNwcCAg
IHwgIDMwICsrKy0tLQogLi4uL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNw
cCAgICAgICAgfCAgIDQgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKyksIDEw
OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU0MDAxZi4uYTk3MGRhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTA3LTA4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSByZW1vdmUgV0VCS0lUX0RFQlVH
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTU1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSB0aGUgKl9NRURJQV9NRVNTQUdFIG1hY3JvcyBzcGVjaWZpYyB0byB0aGUgR1N0cmVh
bWVyCisgICAgICAgIHBsYXRmb3JtIGNvZGUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHN0YW5kYXJk
IEdTVF9ERUJVRyBtYWNyb3MuIEluCisgICAgICAgIERlYnVnIGJ1aWxkcyB0aGUgV0VCS0lUX0RF
QlVHPU1lZGlhIGxvZ3Mgbm93IG9ubHkgY29udGFpbiBsb2dzCisgICAgICAgIHJlbGF0ZWQgd2l0
aCB0aGUgY3Jvc3MtcGxhdGZvcm0gTWVkaWEgZWxlbWVudCBjb2RlLiBJZiBHU3RyZWFtZXIKKyAg
ICAgICAgbG9ncyBhcmUgbmVlZGVkLCB0aGUgR1NUX0RFQlVHPXdlYmtpdCo6NSBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBjYW4KKyAgICAgICAgYmUgdXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QXVkaW9T
dHJlYW1Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVBsYXliYWNrUmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5ld1RleHRTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6ZmlsbFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptYXhUaW1lU2Vla2FibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptYXhUaW1lTG9hZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkTG9hZGluZ1Byb2dyZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxC
eXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmFz
eW5jU3RhdGVDaGFuZ2VEb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldERvd25sb2FkQnVmZmVyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5r
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
R1NUUGxheUJpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0Vm9sdW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZUNoYW5nZWRD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmtHTCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck93cjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnBsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpwYXVzZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmN1cnJlbnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6bG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmludGVy
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
T3dyOjpjcmVhdGVHU1RBdWRpb1NpbmtCaW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6dHJhY2tNdXRlZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja1NldHRpbmdz
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnRyYWNrRW5hYmxlZENoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdlQ29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcpOgorCiAyMDE2LTA3LTA4
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjAyOTY3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5o
CmluZGV4IGY1NWQwYjUuLmIyMzUxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgK
QEAgLTIyLDIyICsyMiw2IEBACiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZvcm1hdC5oPgog
I2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1pbmZvLmg+CiAKLSNkZWZpbmUgTE9HX01FRElBX01F
U1NBR0UoLi4uKSBkbyB7IFwKLSAgICBHU1RfREVCVUcoX19WQV9BUkdTX18pOyBcCi0gICAgTE9H
X1ZFUkJPU0UoTWVkaWEsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBFUlJP
Ul9NRURJQV9NRVNTQUdFKC4uLikgZG8geyBcCi0gICAgR1NUX0VSUk9SKF9fVkFfQVJHU19fKTsg
XAotICAgIExPR19WRVJCT1NFKE1lZGlhLCBfX1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCi0KLSNk
ZWZpbmUgSU5GT19NRURJQV9NRVNTQUdFKC4uLikgZG8geyBcCi0gICAgR1NUX0lORk8oX19WQV9B
UkdTX18pOyBcCi0gICAgTE9HX1ZFUkJPU0UoTWVkaWEsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAo
MCkKLQotI2RlZmluZSBXQVJOX01FRElBX01FU1NBR0UoLi4uKSBkbyB7IFwKLSAgICBHU1RfV0FS
TklORyhfX1ZBX0FSR1NfXyk7IFwKLSAgICBMT0dfVkVSQk9TRShNZWRpYSwgX19WQV9BUkdTX18p
OyB9IHdoaWxlICgwKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
aW5kZXggNjg0Mjk1Yi4uNjVlMzFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAwLDE4ICsxMDAsMTggQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKCkKICAg
ICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSA9IHNhbXBsZXNbaV07CiAgICAgICAgIEdz
dEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSk7CiAg
ICAgICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIlRy
YWNrICVkIGdvdCBzYW1wbGUgd2l0aCBubyBidWZmZXIuIiwgbV9pbmRleCk7CisgICAgICAgICAg
ICBHU1RfV0FSTklOKCJUcmFjayAlZCBnb3Qgc2FtcGxlIHdpdGggbm8gYnVmZmVyLiIsIG1faW5k
ZXgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgR3N0TWFwSW5m
byBpbmZvOwogICAgICAgICBnYm9vbGVhbiByZXQgPSBnc3RfYnVmZmVyX21hcChidWZmZXIsICZp
bmZvLCBHU1RfTUFQX1JFQUQpOwogICAgICAgICBBU1NFUlQocmV0KTsKICAgICAgICAgaWYgKCFy
ZXQpIHsKLSAgICAgICAgICAgIFdBUk5fTUVESUFfTUVTU0FHRSgiVHJhY2sgJWQgdW5hYmxlIHRv
IG1hcCBidWZmZXIuIiwgbV9pbmRleCk7CisgICAgICAgICAgICBHU1RfV0FSTklOKCJUcmFjayAl
ZCB1bmFibGUgdG8gbWFwIGJ1ZmZlci4iLCBtX2luZGV4KTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKLSAgICAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJUcmFjayAlZCBwYXJz
aW5nIHNhbXBsZTogJS4qcyIsIG1faW5kZXgsIHN0YXRpY19jYXN0PGludD4oaW5mby5zaXplKSwK
KyAgICAgICAgR1NUX0lORk8oIlRyYWNrICVkIHBhcnNpbmcgc2FtcGxlOiAlLipzIiwgbV9pbmRl
eCwgc3RhdGljX2Nhc3Q8aW50PihpbmZvLnNpemUpLAogICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oaW5mby5kYXRhKSk7CiAgICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEN1
ZURhdGEodGhpcywgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaW5mby5kYXRhKSwgaW5mby5zaXpl
KTsKICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsICZpbmZvKTsKQEAgLTEyNyw3ICsx
MjcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNr
T2ZTdHJlYW1DaGFuZ2VkKCkKIAogICAgIGNvbnN0IGdjaGFyKiBzdHJlYW1JZDsKICAgICBnc3Rf
ZXZlbnRfcGFyc2Vfc3RyZWFtX3N0YXJ0KGV2ZW50LmdldCgpLCAmc3RyZWFtSWQpOwotICAgIElO
Rk9fTUVESUFfTUVTU0FHRSgiVHJhY2sgJWQgZ290IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVz
LiIsIG1faW5kZXgsIHN0cmVhbUlkKTsKKyAgICBHU1RfSU5GTygiVHJhY2sgJWQgZ290IHN0cmVh
bSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIHN0cmVhbUlkKTsKICAgICBtX3N0cmVh
bUlkID0gc3RyZWFtSWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKaW5kZXggYzUxNjQyMi4uMjY0NzE4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldEF1ZGlvU3RyZWFtUHJvcGVydGllcyhH
T2JqZWN0KiBvYmplY3QpCiAgICAgZ19vYmplY3Rfc2V0KG9iamVjdCwgInN0cmVhbS1wcm9wZXJ0
aWVzIiwgc3RydWN0dXJlLCBOVUxMKTsKICAgICBnc3Rfc3RydWN0dXJlX2ZyZWUoc3RydWN0dXJl
KTsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9nZXRfbmFt
ZShHU1RfRUxFTUVOVChvYmplY3QpKSk7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIlNldCBtZWRp
YS5yb2xlIGFzICVzIGF0ICVzIiwgcm9sZSwgZWxlbWVudE5hbWUuZ2V0KCkpOworICAgIEdTVF9E
RUJVRygiU2V0IG1lZGlhLnJvbGUgYXMgJXMgYXQgJXMiLCByb2xlLCBlbGVtZW50TmFtZS5nZXQo
KSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlh
RW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKQEAgLTI0NCwxMCArMjQ0LDEw
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQogICAgIG1fdXJsID0gVVJMKFVSTCgpLCBjbGVhblVSTCk7CiAgICAgZ19vYmpl
Y3Rfc2V0KG1fcGlwZWxpbmUuZ2V0KCksICJ1cmkiLCBjbGVhblVSTC51dGY4KCkuZGF0YSgpLCBu
dWxscHRyKTsKIAotICAgIElORk9fTUVESUFfTUVTU0FHRSgiTG9hZCAlcyIsIGNsZWFuVVJMLnV0
ZjgoKS5kYXRhKCkpOworICAgIEdTVF9JTkZPKCJMb2FkICVzIiwgY2xlYW5VUkwudXRmOCgpLmRh
dGEoKSk7CiAKICAgICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lKSB7Ci0gICAg
ICAgIExPR19NRURJQV9NRVNTQUdFKCJEZWxheWluZyBsb2FkLiIpOworICAgICAgICBHU1RfREVC
VUcoIkRlbGF5aW5nIGxvYWQuIik7CiAgICAgICAgIG1fZGVsYXlpbmdMb2FkID0gdHJ1ZTsKICAg
ICB9CiAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNvbW1pdExvYWQoKQogewogICAgIEFTU0VSVCghbV9kZWxheWluZ0xvYWQpOwotICAg
IExPR19NRURJQV9NRVNTQUdFKCJDb21taXR0aW5nIGxvYWQuIik7CisgICAgR1NUX0RFQlVHKCJD
b21taXR0aW5nIGxvYWQuIik7CiAKICAgICAvLyBHU3RyZWFtZXIgbmVlZHMgdG8gaGF2ZSB0aGUg
cGlwZWxpbmUgc2V0IHRvIGEgcGF1c2VkIHN0YXRlIHRvCiAgICAgLy8gc3RhcnQgcHJvdmlkaW5n
IGFueXRoaW5nIHVzZWZ1bC4KQEAgLTMxNiw3ICszMTYsNyBAQCBmbG9hdCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAogICAgICAgICBnc3RfcXVl
cnlfcGFyc2VfcG9zaXRpb24ocXVlcnksIDAsICZwb3NpdGlvbik7CiAgICAgZ3N0X3F1ZXJ5X3Vu
cmVmKHF1ZXJ5KTsKIAotICAgIExPR19NRURJQV9NRVNTQUdFKCJQb3NpdGlvbiAlIiBHU1RfVElN
RV9GT1JNQVQsIEdTVF9USU1FX0FSR1MocG9zaXRpb24pKTsKKyAgICBHU1RfREVCVUcoIlBvc2l0
aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikpOwogCiAgICAg
ZmxvYXQgcmVzdWx0ID0gMC4wZjsKICAgICBpZiAoc3RhdGljX2Nhc3Q8R3N0Q2xvY2tUaW1lPihw
b3NpdGlvbikgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgewpAQCAtMzQzLDEyICszNDMsMTIgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0
U3RhdGUgbmV3U3RhdGUpCiAKICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9waXBlbGluZS5n
ZXQoKSwgJmN1cnJlbnRTdGF0ZSwgJnBlbmRpbmcsIDApOwogICAgIGlmIChjdXJyZW50U3RhdGUg
PT0gbmV3U3RhdGUgfHwgcGVuZGluZyA9PSBuZXdTdGF0ZSkgewotICAgICAgICBMT0dfTUVESUFf
TUVTU0FHRSgiUmVqZWN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIGZyb20gJXMgd2l0aCAlcyBwZW5k
aW5nIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAorICAgICAgICBHU1Rf
REVCVUcoIlJlamVjdGVkIHN0YXRlIGNoYW5nZSB0byAlcyBmcm9tICVzIHdpdGggJXMgcGVuZGlu
ZyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSwKICAgICAgICAgICAgIGdz
dF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRTdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKHBlbmRpbmcpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
TE9HX01FRElBX01FU1NBR0UoIkNoYW5naW5nIHN0YXRlIGNoYW5nZSB0byAlcyBmcm9tICVzIHdp
dGggJXMgcGVuZGluZyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSwKKyAg
ICBHU1RfREVCVUcoIkNoYW5naW5nIHN0YXRlIGNoYW5nZSB0byAlcyBmcm9tICVzIHdpdGggJXMg
cGVuZGluZyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSwKICAgICAgICAg
Z3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoY3VycmVudFN0YXRlKSwgZ3N0X2VsZW1lbnRfc3Rh
dGVfZ2V0X25hbWUocGVuZGluZykpOwogCiAgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc2V0U3Rh
dGVSZXN1bHQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgbmV3U3Rh
dGUpOwpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwbGF5KCkKICAgICAgICAgbV9kZWxheWluZ0xvYWQgPSBmYWxzZTsKICAgICAgICAgbV9wcmVs
b2FkID0gTWVkaWFQbGF5ZXI6OkF1dG87CiAgICAgICAgIHNldERvd25sb2FkQnVmZmVyaW5nKCk7
Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJQbGF5Iik7CisgICAgICAgIEdTVF9ERUJVRygi
UGxheSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6
OkVtcHR5KTsKICAgICB9CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnBhdXNlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNoYW5nZVBp
cGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCkpCi0gICAgICAgIElORk9fTUVESUFfTUVTU0FH
RSgiUGF1c2UiKTsKKyAgICAgICAgR1NUX0lORk8oIlBhdXNlIik7CiAgICAgZWxzZQogICAgICAg
ICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7CiB9CkBAIC00MzMsMTEgKzQzMywx
MSBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKCkgY29uc3QK
IAogICAgIGJvb2wgZmFpbHVyZSA9ICFnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BpcGVs
aW5lLmdldCgpLCB0aW1lRm9ybWF0LCAmdGltZUxlbmd0aCkgfHwgc3RhdGljX2Nhc3Q8Z3VpbnQ2
ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgICBpZiAoZmFpbHVyZSkg
ewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiVGltZSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQg
Zm9yICVzIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEdTVF9ERUJV
RygiVGltZSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQgZm9yICVzIiwgbV91cmwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCk7CiAgICAgfQogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIkR1cmF0aW9uOiAlIiBHU1Rf
VElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1ModGltZUxlbmd0aCkpOworICAgIEdTVF9ERUJVRygi
RHVyYXRpb246ICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyh0aW1lTGVuZ3RoKSk7
CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lTGVuZ3RoKSAvIEdTVF9TRUNP
TkQ7CiAgICAgLy8gRklYTUU6IGhhbmRsZSAzLjE0LjkuNSBwcm9wZXJseQpAQCAtNDczLDcgKzQ3
Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRpbWUp
CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBJTkZPX01F
RElBX01FU1NBR0UoIltTZWVrXSBzZWVrIGF0dGVtcHQgdG8gJWYgc2VjcyIsIHRpbWUpOworICAg
IEdTVF9JTkZPKCJbU2Vla10gc2VlayBhdHRlbXB0IHRvICVmIHNlY3MiLCB0aW1lKTsKIAogICAg
IC8vIEF2b2lkIHVzZWxlc3Mgc2Vla2luZy4KICAgICBpZiAodGltZSA9PSBjdXJyZW50VGltZSgp
KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
ZWVrKGZsb2F0IHRpbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdzdENsb2NrVGltZSBjbG9j
a1RpbWUgPSB0b0dzdENsb2NrVGltZSh0aW1lKTsKLSAgICBJTkZPX01FRElBX01FU1NBR0UoIltT
ZWVrXSBzZWVraW5nIHRvICUiIEdTVF9USU1FX0ZPUk1BVCAiICglZikiLCBHU1RfVElNRV9BUkdT
KGNsb2NrVGltZSksIHRpbWUpOworICAgIEdTVF9JTkZPKCJbU2Vla10gc2Vla2luZyB0byAlIiBH
U1RfVElNRV9GT1JNQVQgIiAoJWYpIiwgR1NUX1RJTUVfQVJHUyhjbG9ja1RpbWUpLCB0aW1lKTsK
IAogICAgIGlmIChtX3NlZWtpbmcpIHsKICAgICAgICAgbV90aW1lT2ZPdmVybGFwcGluZ1NlZWsg
PSB0aW1lOwpAQCAtNDk2LDEzICs0OTYsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKICAgICBHc3RTdGF0ZSBzdGF0ZTsKICAgICBHc3RTdGF0
ZUNoYW5nZVJldHVybiBnZXRTdGF0ZVJlc3VsdCA9IGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3Bp
cGVsaW5lLmdldCgpLCAmc3RhdGUsIG51bGxwdHIsIDApOwogICAgIGlmIChnZXRTdGF0ZVJlc3Vs
dCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUgfHwgZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NU
QVRFX0NIQU5HRV9OT19QUkVST0xMKSB7Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vl
a10gY2Fubm90IHNlZWssIGN1cnJlbnQgc3RhdGUgY2hhbmdlIGlzICVzIiwgZ3N0X2VsZW1lbnRf
c3RhdGVfY2hhbmdlX3JldHVybl9nZXRfbmFtZShnZXRTdGF0ZVJlc3VsdCkpOworICAgICAgICBH
U1RfREVCVUcoIltTZWVrXSBjYW5ub3Qgc2VlaywgY3VycmVudCBzdGF0ZSBjaGFuZ2UgaXMgJXMi
LCBnc3RfZWxlbWVudF9zdGF0ZV9jaGFuZ2VfcmV0dXJuX2dldF9uYW1lKGdldFN0YXRlUmVzdWx0
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGdldFN0YXRlUmVzdWx0ID09IEdT
VF9TVEFURV9DSEFOR0VfQVNZTkMgfHwgc3RhdGUgPCBHU1RfU1RBVEVfUEFVU0VEIHx8IG1faXNF
bmRSZWFjaGVkKSB7CiAgICAgICAgIG1fc2Vla0lzUGVuZGluZyA9IHRydWU7CiAgICAgICAgIGlm
IChtX2lzRW5kUmVhY2hlZCkgewotICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVr
XSByZXNldCBwaXBlbGluZSIpOworICAgICAgICAgICAgR1NUX0RFQlVHKCJbU2Vla10gcmVzZXQg
cGlwZWxpbmUiKTsKICAgICAgICAgICAgIG1fcmVzZXRQaXBlbGluZSA9IHRydWU7CiAgICAgICAg
ICAgICBpZiAoIWNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCkpCiAgICAgICAg
ICAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6RW1wdHkpOwpAQCAtNTEwLDcgKzUx
MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRpbWUp
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgY2FuIHNlZWsgbm93LgogICAgICAgICBpZiAo
IWRvU2VlayhjbG9ja1RpbWUsIG1fcGxheWVyLT5yYXRlKCksIHN0YXRpY19jYXN0PEdzdFNlZWtG
bGFncz4oR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfQUNDVVJBVEUpKSkgewot
ICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVraW5nIHRvICVmIGZhaWxl
ZCIsIHRpbWUpOworICAgICAgICAgICAgR1NUX0RFQlVHKCJbU2Vla10gc2Vla2luZyB0byAlZiBm
YWlsZWQiLCB0aW1lKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTU1Nyw3ICs1NTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
UGxheWJhY2tSYXRlKCkKICAgICBmbG9hdCBjdXJyZW50UG9zaXRpb24gPSBzdGF0aWNfY2FzdDxm
bG9hdD4ocGxheWJhY2tQb3NpdGlvbigpICogR1NUX1NFQ09ORCk7CiAgICAgYm9vbCBtdXRlID0g
ZmFsc2U7CiAKLSAgICBJTkZPX01FRElBX01FU1NBR0UoIlNldCBSYXRlIHRvICVmIiwgbV9wbGF5
YmFja1JhdGUpOworICAgIEdTVF9JTkZPKCJTZXQgUmF0ZSB0byAlZiIsIG1fcGxheWJhY2tSYXRl
KTsKIAogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+IDApIHsKICAgICAgICAgLy8gTXV0ZSB0aGUg
c291bmQgaWYgdGhlIHBsYXliYWNrIHJhdGUgaXMgdG9vIGV4dHJlbWUgYW5kCkBAIC01NjksMTMg
KzU2OSwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlUGxheWJh
Y2tSYXRlKCkKICAgICAgICAgbXV0ZSA9IHRydWU7CiAgICAgfQogCi0gICAgSU5GT19NRURJQV9N
RVNTQUdFKCJOZWVkIHRvIG11dGUgYXVkaW8/OiAlZCIsIChpbnQpIG11dGUpOworICAgIEdTVF9J
TkZPKCJOZWVkIHRvIG11dGUgYXVkaW8/OiAlZCIsIChpbnQpIG11dGUpOwogICAgIGlmIChkb1Nl
ZWsoY3VycmVudFBvc2l0aW9uLCBtX3BsYXliYWNrUmF0ZSwgc3RhdGljX2Nhc3Q8R3N0U2Vla0Zs
YWdzPihHU1RfU0VFS19GTEFHX0ZMVVNIKSkpIHsKICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGlw
ZWxpbmUuZ2V0KCksICJtdXRlIiwgbXV0ZSwgbnVsbHB0cik7CiAgICAgICAgIG1fbGFzdFBsYXli
YWNrUmF0ZSA9IG1fcGxheWJhY2tSYXRlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcGxheWJh
Y2tSYXRlID0gbV9sYXN0UGxheWJhY2tSYXRlOwotICAgICAgICBFUlJPUl9NRURJQV9NRVNTQUdF
KCJTZXQgcmF0ZSB0byAlZiBmYWlsZWQiLCBtX3BsYXliYWNrUmF0ZSk7CisgICAgICAgIEdTVF9F
UlJPUigiU2V0IHJhdGUgdG8gJWYgZmFpbGVkIiwgbV9wbGF5YmFja1JhdGUpOwogICAgIH0KIAog
ICAgIGlmIChtX3BsYXliYWNrUmF0ZVBhdXNlKSB7CkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVBsYXliYWNrUmF0ZSgpCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2VkKCkgY29uc3QKIHsKICAgICBpZiAobV9p
c0VuZFJlYWNoZWQpIHsKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIklnbm9yaW5nIHBhdXNl
IGF0IEVPUyIpOworICAgICAgICBHU1RfREVCVUcoIklnbm9yaW5nIHBhdXNlIGF0IEVPUyIpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTc3NSw5ICs3NzUsOSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmV3VGV4dFNhbXBsZSgpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIFdBUk5fTUVESUFf
TUVTU0FHRSgiR290IHNhbXBsZSB3aXRoIHVua25vd24gc3RyZWFtIElELiIpOworICAgICAgICAg
ICAgR1NUX1dBUk5JTigiR290IHNhbXBsZSB3aXRoIHVua25vd24gc3RyZWFtIElELiIpOwogICAg
IH0gZWxzZQotICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIlVuYWJsZSB0byBoYW5kbGUgc2Ft
cGxlIHdpdGggbm8gc3RyZWFtIHN0YXJ0IGV2ZW50LiIpOworICAgICAgICBHU1RfV0FSTklOKCJV
bmFibGUgdG8gaGFuZGxlIHNhbXBsZSB3aXRoIG5vIHN0cmVhbSBzdGFydCBldmVudC4iKTsKIH0K
ICNlbmRpZgogCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAvLyBXZSBpZ25v
cmUgc3RhdGUgY2hhbmdlcyBmcm9tIGludGVybmFsIGVsZW1lbnRzLiBUaGV5IGFyZSBmb3J3YXJk
ZWQgdG8gcGxheWJpbjIgYW55d2F5LgogICAgIGJvb2wgbWVzc2FnZVNvdXJjZUlzUGxheWJpbiA9
IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKSA9PSByZWludGVycHJldF9jYXN0PEdzdE9iamVjdCo+
KG1fcGlwZWxpbmUuZ2V0KCkpOwogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIk1lc3NhZ2UgJXMg
cmVjZWl2ZWQgZnJvbSBlbGVtZW50ICVzIiwgR1NUX01FU1NBR0VfVFlQRV9OQU1FKG1lc3NhZ2Up
LCBHU1RfTUVTU0FHRV9TUkNfTkFNRShtZXNzYWdlKSk7CisgICAgR1NUX0RFQlVHKCJNZXNzYWdl
ICVzIHJlY2VpdmVkIGZyb20gZWxlbWVudCAlcyIsIEdTVF9NRVNTQUdFX1RZUEVfTkFNRShtZXNz
YWdlKSwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2FnZSkpOwogICAgIHN3aXRjaCAoR1NUX01F
U1NBR0VfVFlQRShtZXNzYWdlKSkgewogICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6CiAgICAg
ICAgIGlmIChtX3Jlc2V0UGlwZWxpbmUpCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkK
ICAgICAgICAgaWYgKG1fbWlzc2luZ1BsdWdpbnNDYWxsYmFjaykKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyLm91dFB0cigp
LCAmZGVidWcub3V0UHRyKCkpOwotICAgICAgICBFUlJPUl9NRURJQV9NRVNTQUdFKCJFcnJvciAl
ZDogJXMgKHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEdTVF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMp
IiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2UsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOKG1f
cGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsICJ3ZWJraXQtdmlkZW8u
ZXJyb3IiKTsKIApAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAv
LyB0aGlzIGNhc2UgdGhlIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBlbWl0IGEgc3RhbGxlZAogICAg
ICAgICAgICAgLy8gZXZlbnQuCiAgICAgICAgICAgICBpZiAoZXJyLT5jb2RlID09IEdTVF9TVFJF
QU1fRVJST1JfVFlQRV9OT1RfRk9VTkQpIHsKLSAgICAgICAgICAgICAgICBFUlJPUl9NRURJQV9N
RVNTQUdFKCJEZWNvZGUgZXJyb3IsIGxldCB0aGUgTWVkaWEgZWxlbWVudCBlbWl0IGEgc3RhbGxl
ZCBldmVudC4iKTsKKyAgICAgICAgICAgICAgICBHU1RfRVJST1IoIkRlY29kZSBlcnJvciwgbGV0
IHRoZSBNZWRpYSBlbGVtZW50IGVtaXQgYSBzdGFsbGVkIGV2ZW50LiIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZXJyb3IgPSBNZWRpYVBsYXll
cjo6RGVjb2RlRXJyb3I7CkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAg
Z3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksICZjdXJyZW50U3RhdGUsIG51
bGxwdHIsIDI1MCAqIEdTVF9OU0VDT05EKTsKICAgICAgICAgaWYgKHJlcXVlc3RlZFN0YXRlIDwg
Y3VycmVudFN0YXRlKSB7CiAgICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbGVtZW50TmFt
ZShnc3RfZWxlbWVudF9nZXRfbmFtZShHU1RfRUxFTUVOVChtZXNzYWdlKSkpOwotICAgICAgICAg
ICAgSU5GT19NRURJQV9NRVNTQUdFKCJFbGVtZW50ICVzIHJlcXVlc3RlZCBzdGF0ZSBjaGFuZ2Ug
dG8gJXMiLCBlbGVtZW50TmFtZS5nZXQoKSwKKyAgICAgICAgICAgIEdTVF9JTkZPKCJFbGVtZW50
ICVzIHJlcXVlc3RlZCBzdGF0ZSBjaGFuZ2UgdG8gJXMiLCBlbGVtZW50TmFtZS5nZXQoKSwKICAg
ICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShyZXF1ZXN0ZWRTdGF0ZSkp
OwogICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTdGF0ZSA9IHJlcXVlc3RlZFN0YXRlOwogICAgICAg
ICAgICAgaWYgKCFjaGFuZ2VQaXBlbGluZVN0YXRlKHJlcXVlc3RlZFN0YXRlKSkKQEAgLTEwNDIs
NyArMTA0Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNz
YWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZh
dWx0OgotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiVW5oYW5kbGVkIEdTdHJlYW1lciBtZXNz
YWdlIHR5cGU6ICVzIiwKKyAgICAgICAgR1NUX0RFQlVHKCJVbmhhbmRsZWQgR1N0cmVhbWVyIG1l
c3NhZ2UgdHlwZTogJXMiLAogICAgICAgICAgICAgICAgICAgICBHU1RfTUVTU0FHRV9UWVBFX05B
TUUobWVzc2FnZSkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDU0LDcgKzEwNTQsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc0J1ZmZlcmluZ1N0YXRz
KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgbV9idWZmZXJpbmcgPSB0cnVlOwogICAgIGdzdF9t
ZXNzYWdlX3BhcnNlX2J1ZmZlcmluZyhtZXNzYWdlLCAmbV9idWZmZXJpbmdQZXJjZW50YWdlKTsK
IAotICAgIExPR19NRURJQV9NRVNTQUdFKCJbQnVmZmVyaW5nXSBCdWZmZXJpbmc6ICVkJSUuIiwg
bV9idWZmZXJpbmdQZXJjZW50YWdlKTsKKyAgICBHU1RfREVCVUcoIltCdWZmZXJpbmddIEJ1ZmZl
cmluZzogJWQlJS4iLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UpOwogCiAgICAgdXBkYXRlU3RhdGVz
KCk7CiB9CkBAIC0xMTc5LDcgKzExNzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6ZmlsbFRpbWVyRmlyZWQoKQogICAgIGlmIChzdG9wICE9IC0xKQogICAgICAgICBmaWxs
U3RhdHVzID0gMTAwLjAgKiBzdG9wIC8gR1NUX0ZPUk1BVF9QRVJDRU5UX01BWDsKIAotICAgIExP
R19NRURJQV9NRVNTQUdFKCJbQnVmZmVyaW5nXSBEb3dubG9hZCBidWZmZXIgZmlsbGVkIHVwIHRv
ICVmJSUiLCBmaWxsU3RhdHVzKTsKKyAgICBHU1RfREVCVUcoIltCdWZmZXJpbmddIERvd25sb2Fk
IGJ1ZmZlciBmaWxsZWQgdXAgdG8gJWYlJSIsIGZpbGxTdGF0dXMpOwogCiAgICAgZmxvYXQgbWVk
aWFEdXJhdGlvbiA9IGR1cmF0aW9uKCk7CiAKQEAgLTExOTAsNyArMTE5MCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCgpCiAgICAgICAgICAgICBt
X21heFRpbWVMb2FkZWQgPSBtZWRpYUR1cmF0aW9uOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX21heFRpbWVMb2FkZWQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oKGZpbGxTdGF0dXMgKiBtZWRp
YUR1cmF0aW9uKSAvIDEwMC4wKTsKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltCdWZmZXJp
bmddIFVwZGF0ZWQgbWF4VGltZUxvYWRlZDogJWYiLCBtX21heFRpbWVMb2FkZWQpOworICAgICAg
ICBHU1RfREVCVUcoIltCdWZmZXJpbmddIFVwZGF0ZWQgbWF4VGltZUxvYWRlZDogJWYiLCBtX21h
eFRpbWVMb2FkZWQpOwogICAgIH0KIAogICAgIG1fZG93bmxvYWRGaW5pc2hlZCA9IGZpbGxTdGF0
dXMgPT0gMTAwLjA7CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwLjBm
OwogCiAgICAgZmxvYXQgbWVkaWFEdXJhdGlvbiA9IGR1cmF0aW9uKCk7Ci0gICAgTE9HX01FRElB
X01FU1NBR0UoIm1heFRpbWVTZWVrYWJsZSwgZHVyYXRpb246ICVmIiwgbWVkaWFEdXJhdGlvbik7
CisgICAgR1NUX0RFQlVHKCJtYXhUaW1lU2Vla2FibGUsIGR1cmF0aW9uOiAlZiIsIG1lZGlhRHVy
YXRpb24pOwogICAgIC8vIGluZmluaXRlIGR1cmF0aW9uIG1lYW5zIGxpdmUgc3RyZWFtCiAgICAg
aWYgKHN0ZDo6aXNpbmYobWVkaWFEdXJhdGlvbikpCiAgICAgICAgIHJldHVybiAwLjBmOwpAQCAt
MTIyOCw3ICsxMjI4LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptYXhU
aW1lTG9hZGVkKCkgY29uc3QKICAgICBmbG9hdCBsb2FkZWQgPSBtX21heFRpbWVMb2FkZWQ7CiAg
ICAgaWYgKG1faXNFbmRSZWFjaGVkKQogICAgICAgICBsb2FkZWQgPSBkdXJhdGlvbigpOwotICAg
IExPR19NRURJQV9NRVNTQUdFKCJtYXhUaW1lTG9hZGVkOiAlZiIsIGxvYWRlZCk7CisgICAgR1NU
X0RFQlVHKCJtYXhUaW1lTG9hZGVkOiAlZiIsIGxvYWRlZCk7CiAgICAgcmV0dXJuIGxvYWRlZDsK
IH0KIApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CiAgICAgZmxvYXQgY3VycmVudE1heFRpbWVM
b2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MgPSBj
dXJyZW50TWF4VGltZUxvYWRlZCAhPSBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJv
Z3Jlc3M7CiAgICAgbV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzID0gY3Vy
cmVudE1heFRpbWVMb2FkZWQ7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoImRpZExvYWRpbmdQcm9n
cmVzczogJWQiLCBkaWRMb2FkaW5nUHJvZ3Jlc3MpOworICAgIEdTVF9ERUJVRygiZGlkTG9hZGlu
Z1Byb2dyZXNzOiAlZCIsIGRpZExvYWRpbmdQcm9ncmVzcyk7CiAgICAgcmV0dXJuIGRpZExvYWRp
bmdQcm9ncmVzczsKIH0KIApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdW5zaWduZWQgbG9uZyBsb25n
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAgICAgR3N0
Rm9ybWF0IGZtdCA9IEdTVF9GT1JNQVRfQllURVM7CiAgICAgZ2ludDY0IGxlbmd0aCA9IDA7CiAg
ICAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uKG1fc291cmNlLmdldCgpLCBmbXQsICZs
ZW5ndGgpKSB7Ci0gICAgICAgIElORk9fTUVESUFfTUVTU0FHRSgidG90YWxCeXRlcyAlIiBHX0dJ
TlQ2NF9GT1JNQVQsIGxlbmd0aCk7CisgICAgICAgIEdTVF9JTkZPKCJ0b3RhbEJ5dGVzICUiIEdf
R0lOVDY0X0ZPUk1BVCwgbGVuZ3RoKTsKICAgICAgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5ndGgpOwogICAgICAgICBtX2lzU3RyZWFtaW5nID0g
IWxlbmd0aDsKICAgICAgICAgcmV0dXJuIG1fdG90YWxCeXRlczsKQEAgLTEyOTIsNyArMTI5Miw3
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFs
Qnl0ZXMoKSBjb25zdAogCiAgICAgZ3N0X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CiAKLSAgICBJTkZP
X01FRElBX01FU1NBR0UoInRvdGFsQnl0ZXMgJSIgR19HSU5UNjRfRk9STUFULCBsZW5ndGgpOwor
ICAgIEdTVF9JTkZPKCJ0b3RhbEJ5dGVzICUiIEdfR0lOVDY0X0ZPUk1BVCwgbGVuZ3RoKTsKICAg
ICBtX3RvdGFsQnl0ZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxlbmd0aCk7
CiAgICAgbV9pc1N0cmVhbWluZyA9ICFsZW5ndGg7CiAgICAgcmV0dXJuIG1fdG90YWxCeXRlczsK
QEAgLTEzMzUsNyArMTMzNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjph
c3luY1N0YXRlQ2hhbmdlRG9uZSgpCiAgICAgICAgIGlmIChtX3NlZWtJc1BlbmRpbmcpCiAgICAg
ICAgICAgICB1cGRhdGVTdGF0ZXMoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBMT0df
TUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWtlZCB0byAlZiIsIG1fc2Vla1RpbWUpOworICAgICAg
ICAgICAgR1NUX0RFQlVHKCJbU2Vla10gc2Vla2VkIHRvICVmIiwgbV9zZWVrVGltZSk7CiAgICAg
ICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3RpbWVPZk92ZXJs
YXBwaW5nU2VlayAhPSBtX3NlZWtUaW1lICYmIG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrICE9IC0x
KSB7CiAgICAgICAgICAgICAgICAgc2VlayhtX3RpbWVPZk92ZXJsYXBwaW5nU2Vlayk7CkBAIC0x
MzcxLDcgKzEzNzEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
U3RhdGVzKCkKICAgICBib29sIHNob3VsZFVwZGF0ZVBsYXliYWNrU3RhdGUgPSBmYWxzZTsKICAg
ICBzd2l0Y2ggKGdldFN0YXRlUmVzdWx0KSB7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1NV
Q0NFU1M6IHsKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlN0YXRlOiAlcywgcGVuZGluZzog
JXMiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKHBlbmRpbmcpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJTdGF0ZTogJXMsIHBlbmRp
bmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAKICAgICAgICAgLy8gRG8gbm90aGluZyBpZiBvbiBF
T1MgYW5kIHN0YXRlIGNoYW5nZWQgdG8gUkVBRFkgdG8gYXZvaWQgcmVjcmVhdGluZyB0aGUgcGxh
eWVyCiAgICAgICAgIC8vIG9uIEhUTUxNZWRpYUVsZW1lbnQgYW5kIHByb3Blcmx5IGdlbmVyYXRl
IHRoZSB2aWRlbyAnZW5kZWQnIGV2ZW50LgpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIGNhc2UgR1NU
X1NUQVRFX1BMQVlJTkc6CiAgICAgICAgICAgICBpZiAobV9idWZmZXJpbmcpIHsKICAgICAgICAg
ICAgICAgICBpZiAobV9idWZmZXJpbmdQZXJjZW50YWdlID09IDEwMCkgewotICAgICAgICAgICAg
ICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiW0J1ZmZlcmluZ10gQ29tcGxldGUuIik7CisgICAg
ICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiW0J1ZmZlcmluZ10gQ29tcGxldGUuIik7CiAgICAg
ICAgICAgICAgICAgICAgIG1fYnVmZmVyaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgICAg
ICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBtX2Rvd25sb2FkRmluaXNoZWQgPyBNZWRpYVBsYXll
cjo6SWRsZSA6IE1lZGlhUGxheWVyOjpMb2FkaW5nOwpAQCAtMTQyNywxNCArMTQyNywxNCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKGRpZEJ1ZmZlcmluZyAmJiAhbV9idWZmZXJpbmcgJiYg
IW1fcGF1c2VkICYmIG1fcGxheWJhY2tSYXRlKSB7Ci0gICAgICAgICAgICAgICAgTE9HX01FRElB
X01FU1NBR0UoIltCdWZmZXJpbmddIFJlc3RhcnRpbmcgcGxheWJhY2suIik7CisgICAgICAgICAg
ICAgICAgR1NUX0RFQlVHKCJbQnVmZmVyaW5nXSBSZXN0YXJ0aW5nIHBsYXliYWNrLiIpOwogICAg
ICAgICAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BMQVlJTkcpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5H
KSB7CiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogCiAgICAgICAgICAgICBpZiAoKG1f
YnVmZmVyaW5nICYmICFpc0xpdmVTdHJlYW0oKSkgfHwgIW1fcGxheWJhY2tSYXRlKSB7Ci0gICAg
ICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltCdWZmZXJpbmddIFBhdXNpbmcgc3RyZWFt
IGZvciBidWZmZXJpbmcuIik7CisgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJbQnVmZmVyaW5n
XSBQYXVzaW5nIHN0cmVhbSBmb3IgYnVmZmVyaW5nLiIpOwogICAgICAgICAgICAgICAgIGNoYW5n
ZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZQpAQCAtMTQ0MiwyMSArMTQ0MiwyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKIAogICAgICAgICBpZiAobV9yZXF1ZXN0ZWRTdGF0ZSA9
PSBHU1RfU1RBVEVfUEFVU0VEICYmIHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpIHsKICAgICAg
ICAgICAgIHNob3VsZFVwZGF0ZVBsYXliYWNrU3RhdGUgPSB0cnVlOwotICAgICAgICAgICAgTE9H
X01FRElBX01FU1NBR0UoIlJlcXVlc3RlZCBzdGF0ZSBjaGFuZ2UgdG8gJXMgd2FzIGNvbXBsZXRl
ZCIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSk7CisgICAgICAgICAgICBHU1Rf
REVCVUcoIlJlcXVlc3RlZCBzdGF0ZSBjaGFuZ2UgdG8gJXMgd2FzIGNvbXBsZXRlZCIsIGdzdF9l
bGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX0FTWU5DOgotICAgICAgICBMT0df
TUVESUFfTUVTU0FHRSgiQXN5bmM6IFN0YXRlOiAlcywgcGVuZGluZzogJXMiLCBnc3RfZWxlbWVu
dF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRp
bmcpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJBc3luYzogU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIs
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0
X25hbWUocGVuZGluZykpOwogICAgICAgICAvLyBDaGFuZ2UgaW4gcHJvZ3Jlc3MuCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOgotICAgICAgICBMT0df
TUVESUFfTUVTU0FHRSgiRmFpbHVyZTogU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIsIGdzdF9lbGVt
ZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVu
ZGluZykpOworICAgICAgICBHU1RfREVCVUcoIkZhaWx1cmU6IFN0YXRlOiAlcywgcGVuZGluZzog
JXMiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKHBlbmRpbmcpKTsKICAgICAgICAgLy8gQ2hhbmdlIGZhaWxlZAogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05PX1BSRVJPTEw6Ci0gICAgICAgIExP
R19NRURJQV9NRVNTQUdFKCJObyBwcmVyb2xsOiBTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwgZ3N0
X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFt
ZShwZW5kaW5nKSk7CisgICAgICAgIEdTVF9ERUJVRygiTm8gcHJlcm9sbDogU3RhdGU6ICVzLCBw
ZW5kaW5nOiAlcyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwgZ3N0X2VsZW1l
bnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCiAgICAgICAgIC8vIExpdmUgcGlwZWxpbmVz
IGdvIGluIFBBVVNFRCB3aXRob3V0IHByZXJvbGxpbmcuCiAgICAgICAgIG1faXNTdHJlYW1pbmcg
PSB0cnVlOwpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5
ZXI6OkxvYWRpbmc7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIExPR19N
RURJQV9NRVNTQUdFKCJFbHNlIDogJWQiLCBnZXRTdGF0ZVJlc3VsdCk7CisgICAgICAgIEdTVF9E
RUJVRygiRWxzZSA6ICVkIiwgZ2V0U3RhdGVSZXN1bHQpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTE0ODYsMjIgKzE0ODYsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIG1fcGxheWVyLT5wbGF5YmFja1N0YXRlQ2hhbmdl
ZCgpOwogCiAgICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IG9sZE5ldHdvcmtTdGF0ZSkgewotICAg
ICAgICBMT0dfTUVESUFfTUVTU0FHRSgiTmV0d29yayBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8g
JXUiLCBvbGROZXR3b3JrU3RhdGUsIG1fbmV0d29ya1N0YXRlKTsKKyAgICAgICAgR1NUX0RFQlVH
KCJOZXR3b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsIG9sZE5ldHdvcmtTdGF0ZSwg
bV9uZXR3b3JrU3RhdGUpOwogICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgp
OwogICAgIH0KICAgICBpZiAobV9yZWFkeVN0YXRlICE9IG9sZFJlYWR5U3RhdGUpIHsKLSAgICAg
ICAgTE9HX01FRElBX01FU1NBR0UoIlJlYWR5IFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIs
IG9sZFJlYWR5U3RhdGUsIG1fcmVhZHlTdGF0ZSk7CisgICAgICAgIEdTVF9ERUJVRygiUmVhZHkg
U3RhdGUgQ2hhbmdlZCBmcm9tICV1IHRvICV1Iiwgb2xkUmVhZHlTdGF0ZSwgbV9yZWFkeVN0YXRl
KTsKICAgICAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCiAgICAg
aWYgKGdldFN0YXRlUmVzdWx0ID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyAmJiBzdGF0ZSA+
PSBHU1RfU1RBVEVfUEFVU0VEKSB7CiAgICAgICAgIHVwZGF0ZVBsYXliYWNrUmF0ZSgpOwogICAg
ICAgICBpZiAobV9zZWVrSXNQZW5kaW5nKSB7Ci0gICAgICAgICAgICBMT0dfTUVESUFfTUVTU0FH
RSgiW1NlZWtdIGNvbW1pdHRpbmcgcGVuZGluZyBzZWVrIHRvICVmIiwgbV9zZWVrVGltZSk7Cisg
ICAgICAgICAgICBHU1RfREVCVUcoIltTZWVrXSBjb21taXR0aW5nIHBlbmRpbmcgc2VlayB0byAl
ZiIsIG1fc2Vla1RpbWUpOwogICAgICAgICAgICAgbV9zZWVrSXNQZW5kaW5nID0gZmFsc2U7CiAg
ICAgICAgICAgICBtX3NlZWtpbmcgPSBkb1NlZWsodG9Hc3RDbG9ja1RpbWUobV9zZWVrVGltZSks
IG1fcGxheWVyLT5yYXRlKCksIHN0YXRpY19jYXN0PEdzdFNlZWtGbGFncz4oR1NUX1NFRUtfRkxB
R19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfQUNDVVJBVEUpKTsKICAgICAgICAgICAgIGlmICghbV9z
ZWVraW5nKQotICAgICAgICAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vla10gc2Vla2lu
ZyB0byAlZiBmYWlsZWQiLCBtX3NlZWtUaW1lKTsKKyAgICAgICAgICAgICAgICBHU1RfREVCVUco
IltTZWVrXSBzZWVraW5nIHRvICVmIGZhaWxlZCIsIG1fc2Vla1RpbWUpOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtMTU2OCw3ICsxNTY4LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmxvYWROZXh0TG9jYXRpb24oKQogCiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsKICAgICAg
ICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKLSAgICAgICAgICAg
IElORk9fTUVESUFfTUVTU0FHRSgiTmV3IG1lZGlhIHVybDogJXMiLCBuZXdVcmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBHU1RfSU5GTygiTmV3IG1lZGlhIHVybDogJXMi
LCBuZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgIC8vIFJlc2V0
IHBsYXllciBzdGF0ZXMuCiAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpMb2FkaW5nOwpAQCAtMTU5MCw3ICsxNTkwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24oKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIElORk9fTUVESUFf
TUVTU0FHRSgiTm90IGFsbG93ZWQgdG8gbG9hZCBuZXcgbWVkaWEgbG9jYXRpb246ICVzIiwgbmV3
VXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgR1NUX0lORk8oIk5vdCBh
bGxvd2VkIHRvIGxvYWQgbmV3IG1lZGlhIGxvY2F0aW9uOiAlcyIsIG5ld1VybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICB9CiAgICAgbV9tZWRpYUxvY2F0aW9uQ3VycmVudEluZGV4LS07
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgxOSwxMSArMTgxOSwxMSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0RG93bmxvYWRCdWZmZXJpbmcoKQogCiAgICAgYm9vbCBz
aG91bGREb3dubG9hZCA9ICFpc0xpdmVTdHJlYW0oKSAmJiBtX3ByZWxvYWQgPT0gTWVkaWFQbGF5
ZXI6OkF1dG87CiAgICAgaWYgKHNob3VsZERvd25sb2FkKSB7Ci0gICAgICAgIExPR19NRURJQV9N
RVNTQUdFKCJFbmFibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOworICAgICAgICBHU1RfREVCVUco
IkVuYWJsaW5nIG9uLWRpc2sgYnVmZmVyaW5nIik7CiAgICAgICAgIGdfb2JqZWN0X3NldChtX3Bp
cGVsaW5lLmdldCgpLCAiZmxhZ3MiLCBmbGFncyB8IGZsYWdEb3dubG9hZCwgbnVsbHB0cik7CiAg
ICAgICAgIG1fZmlsbFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgTE9HX01FRElBX01FU1NBR0UoIkRpc2FibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwor
ICAgICAgICBHU1RfREVCVUcoIkRpc2FibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwogICAgICAg
ICBnX29iamVjdF9zZXQobV9waXBlbGluZS5nZXQoKSwgImZsYWdzIiwgZmxhZ3MgJiB+ZmxhZ0Rv
d25sb2FkLCBudWxscHRyKTsKICAgICAgICAgbV9maWxsVGltZXIuc3RvcCgpOwogICAgIH0KQEAg
LTE4NDcsNyArMTg0Nyw3IEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKICAgICBtX2F1dG9BdWRpb1NpbmsgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3NpbmsiLCAwKTsKICAgICBpZiAoIW1fYXV0b0F1ZGlv
U2luaykgewotICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIkdTdHJlYW1lcidzIGF1dG9hdWRp
b3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3QtcGx1Z2lucy1nb29kIGluc3Rh
bGxhdGlvbiIpOworICAgICAgICBHU1RfV0FSTklOKCJHU3RyZWFtZXIncyBhdXRvYXVkaW9zaW5r
IG5vdCBmb3VuZC4gUGxlYXNlIGNoZWNrIHlvdXIgZ3N0LXBsdWdpbnMtZ29vZCBpbnN0YWxsYXRp
b24iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlv
U2luaygpCiAgICAgaWYgKG1fcHJlc2VydmVzUGl0Y2gpIHsKICAgICAgICAgR3N0RWxlbWVudCog
c2NhbGUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInNjYWxldGVtcG8iLCBudWxscHRyKTsK
ICAgICAgICAgaWYgKCFzY2FsZSkgewotICAgICAgICAgICAgV0FSTl9NRURJQV9NRVNTQUdFKCJG
YWlsZWQgdG8gY3JlYXRlIHNjYWxldGVtcG8iKTsKKyAgICAgICAgICAgIEdTVF9XQVJOSU4oIkZh
aWxlZCB0byBjcmVhdGUgc2NhbGV0ZW1wbyIpOwogICAgICAgICAgICAgcmV0dXJuIG1fYXV0b0F1
ZGlvU2luay5nZXQoKTsKICAgICAgICAgfQogCkBAIC0xODg4LDcgKzE4ODgsNyBAQCBHc3RFbGVt
ZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygpCiAgICAg
ICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihhdWRpb1NpbmtCaW4pLCBjb252ZXJ0LCByZXNh
bXBsZSwgbV9hdXRvQXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKIAogICAgICAgICBpZiAoIWdz
dF9lbGVtZW50X2xpbmtfbWFueShzY2FsZSwgY29udmVydCwgcmVzYW1wbGUsIG1fYXV0b0F1ZGlv
U2luay5nZXQoKSwgbnVsbHB0cikpIHsKLSAgICAgICAgICAgIFdBUk5fTUVESUFfTUVTU0FHRSgi
RmFpbGVkIHRvIGxpbmsgYXVkaW8gc2luayBlbGVtZW50cyIpOworICAgICAgICAgICAgR1NUX1dB
Uk5JTigiRmFpbGVkIHRvIGxpbmsgYXVkaW8gc2luayBlbGVtZW50cyIpOwogICAgICAgICAgICAg
Z3N0X29iamVjdF91bnJlZihhdWRpb1NpbmtCaW4pOwogICAgICAgICAgICAgcmV0dXJuIG1fYXV0
b0F1ZGlvU2luay5nZXQoKTsKICAgICAgICAgfQpAQCAtMTk3Miw3ICsxOTcyLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgICAgICBH
c3RFbGVtZW50KiBzY2FsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgic2NhbGV0ZW1wbyIs
IDApOwogCiAgICAgICAgIGlmICghc2NhbGUpCi0gICAgICAgICAgICBXQVJOX01FRElBX01FU1NB
R0UoIkZhaWxlZCB0byBjcmVhdGUgc2NhbGV0ZW1wbyIpOworICAgICAgICAgICAgR1NUX1dBUk5J
TigiRmFpbGVkIHRvIGNyZWF0ZSBzY2FsZXRlbXBvIik7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGdfb2JqZWN0X3NldChtX3BpcGVsaW5lLmdldCgpLCAiYXVkaW8tZmlsdGVyIiwgc2NhbGUs
IG51bGxwdHIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBlZDU2OGFjLi4yYmUwNDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0zMDUs
OCArMzA1LDggQEAgRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5h
dHVyYWxTaXplKCkgY29uc3QKICAgICB9CiAjZW5kaWYKIAotICAgIExPR19NRURJQV9NRVNTQUdF
KCJPcmlnaW5hbCB2aWRlbyBzaXplOiAlZHglZCIsIG9yaWdpbmFsU2l6ZS53aWR0aCgpLCBvcmln
aW5hbFNpemUuaGVpZ2h0KCkpOwotICAgIExPR19NRURJQV9NRVNTQUdFKCJQaXhlbCBhc3BlY3Qg
cmF0aW86ICVkLyVkIiwgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgcGl4ZWxBc3BlY3RSYXRp
b0Rlbm9taW5hdG9yKTsKKyAgICBHU1RfREVCVUcoIk9yaWdpbmFsIHZpZGVvIHNpemU6ICVkeCVk
Iiwgb3JpZ2luYWxTaXplLndpZHRoKCksIG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgR1NU
X0RFQlVHKCJQaXhlbCBhc3BlY3QgcmF0aW86ICVkLyVkIiwgcGl4ZWxBc3BlY3RSYXRpb051bWVy
YXRvciwgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKTsKIAogICAgIC8vIENhbGN1bGF0ZSBE
QVIgYmFzZWQgb24gUEFSIGFuZCB2aWRlbyBzaXplLgogICAgIGludCBkaXNwbGF5V2lkdGggPSBv
cmlnaW5hbFNpemUud2lkdGgoKSAqIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3I7CkBAIC0zMjAs
MjAgKzMyMCwyMCBAQCBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
bmF0dXJhbFNpemUoKSBjb25zdAogICAgIC8vIEFwcGx5IERBUiB0byBvcmlnaW5hbCB2aWRlbyBz
aXplLiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGluIHh2aW1hZ2VzaW5rJ3Mgc2V0Y2Fw
cyBmdW5jdGlvbi4KICAgICBndWludDY0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKICAgICBpZiAo
IShvcmlnaW5hbFNpemUuaGVpZ2h0KCkgJSBkaXNwbGF5SGVpZ2h0KSkgewotICAgICAgICBMT0df
TUVESUFfTUVTU0FHRSgiS2VlcGluZyB2aWRlbyBvcmlnaW5hbCBoZWlnaHQiKTsKKyAgICAgICAg
R1NUX0RFQlVHKCJLZWVwaW5nIHZpZGVvIG9yaWdpbmFsIGhlaWdodCIpOwogICAgICAgICB3aWR0
aCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQob3JpZ2luYWxTaXplLmhlaWdodCgpLCBkaXNw
bGF5V2lkdGgsIGRpc3BsYXlIZWlnaHQpOwogICAgICAgICBoZWlnaHQgPSBzdGF0aWNfY2FzdDxn
dWludDY0PihvcmlnaW5hbFNpemUuaGVpZ2h0KCkpOwogICAgIH0gZWxzZSBpZiAoIShvcmlnaW5h
bFNpemUud2lkdGgoKSAlIGRpc3BsYXlXaWR0aCkpIHsKLSAgICAgICAgTE9HX01FRElBX01FU1NB
R0UoIktlZXBpbmcgdmlkZW8gb3JpZ2luYWwgd2lkdGgiKTsKKyAgICAgICAgR1NUX0RFQlVHKCJL
ZWVwaW5nIHZpZGVvIG9yaWdpbmFsIHdpZHRoIik7CiAgICAgICAgIGhlaWdodCA9IGdzdF91dGls
X3VpbnQ2NF9zY2FsZV9pbnQob3JpZ2luYWxTaXplLndpZHRoKCksIGRpc3BsYXlIZWlnaHQsIGRp
c3BsYXlXaWR0aCk7CiAgICAgICAgIHdpZHRoID0gc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4ob3JpZ2lu
YWxTaXplLndpZHRoKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdF
KCJBcHByb3hpbWF0aW5nIHdoaWxlIGtlZXBpbmcgb3JpZ2luYWwgdmlkZW8gaGVpZ2h0Iik7Cisg
ICAgICAgIEdTVF9ERUJVRygiQXBwcm94aW1hdGluZyB3aGlsZSBrZWVwaW5nIG9yaWdpbmFsIHZp
ZGVvIGhlaWdodCIpOwogICAgICAgICB3aWR0aCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQo
b3JpZ2luYWxTaXplLmhlaWdodCgpLCBkaXNwbGF5V2lkdGgsIGRpc3BsYXlIZWlnaHQpOwogICAg
ICAgICBoZWlnaHQgPSBzdGF0aWNfY2FzdDxndWludDY0PihvcmlnaW5hbFNpemUuaGVpZ2h0KCkp
OwogICAgIH0KIAotICAgIExPR19NRURJQV9NRVNTQUdFKCJOYXR1cmFsIHNpemU6ICUiIEdfR1VJ
TlQ2NF9GT1JNQVQgInglIiBHX0dVSU5UNjRfRk9STUFULCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBH
U1RfREVCVUcoIk5hdHVyYWwgc2l6ZTogJSIgR19HVUlOVDY0X0ZPUk1BVCAieCUiIEdfR1VJTlQ2
NF9GT1JNQVQsIHdpZHRoLCBoZWlnaHQpOwogICAgIG1fdmlkZW9TaXplID0gRmxvYXRTaXplKHN0
YXRpY19jYXN0PGludD4od2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCkpOwogICAgIHJl
dHVybiBtX3ZpZGVvU2l6ZTsKIH0KQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAgaWYgKCFt
X3ZvbHVtZUVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPR19NRURJQV9NRVNTQUdF
KCJTZXR0aW5nIHZvbHVtZTogJWYiLCB2b2x1bWUpOworICAgIEdTVF9ERUJVRygiU2V0dGluZyB2
b2x1bWU6ICVmIiwgdm9sdW1lKTsKICAgICBnc3Rfc3RyZWFtX3ZvbHVtZV9zZXRfdm9sdW1lKG1f
dm9sdW1lRWxlbWVudC5nZXQoKSwgR1NUX1NUUkVBTV9WT0xVTUVfRk9STUFUX0NVQklDLCBzdGF0
aWNfY2FzdDxkb3VibGU+KHZvbHVtZSkpOwogfQogCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJPZlZvbHVtZUNoYW5n
ZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZUNoYW5nZWRD
YWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXIpCiB7CiAgICAg
Ly8gVGhpcyBpcyBjYWxsZWQgd2hlbiBtX3ZvbHVtZUVsZW1lbnQgcmVjZWl2ZXMgdGhlIG5vdGlm
eTo6dm9sdW1lIHNpZ25hbC4KLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiVm9sdW1lIGNoYW5nZWQg
dG86ICVmIiwgcGxheWVyLT52b2x1bWUoKSk7CisgICAgR1NUX0RFQlVHKCJWb2x1bWUgY2hhbmdl
ZCB0bzogJWYiLCBwbGF5ZXItPnZvbHVtZSgpKTsKIAogICAgIHBsYXllci0+bV9ub3RpZmllci5u
b3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6Vm9sdW1lQ2hhbmdlZCwgW3BsYXllcl0geyBw
bGF5ZXItPm5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlKCk7IH0pOwogfQpAQCAtNTQ5LDcgKzU0
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFp
bnQoR3N0U2FtcGxlKiBzYW1wbGUpCiAgICAgfQogCiAgICAgaWYgKHRyaWdnZXJSZXNpemUpIHsK
LSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIkZpcnN0IHNhbXBsZSByZWFjaGVkIHRoZSBzaW5r
LCB0cmlnZ2VyaW5nIHZpZGVvIGRpbWVuc2lvbnMgdXBkYXRlIik7CisgICAgICAgIEdTVF9ERUJV
RygiRmlyc3Qgc2FtcGxlIHJlYWNoZWQgdGhlIHNpbmssIHRyaWdnZXJpbmcgdmlkZW8gZGltZW5z
aW9ucyB1cGRhdGUiKTsKICAgICAgICAgbV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CiAgICAgfQog
CkBAIC04MTIsNyArODEyLDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rR0woKQogICAgIEdzdEVsZW1lbnQqIGNvbG9yY29udmVy
dCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZ2xjb2xvcmNvbnZlcnQiLCBudWxscHRyKTsK
IAogICAgIGlmICghdXBsb2FkIHx8ICFjb2xvcmNvbnZlcnQpIHsKLSAgICAgICAgV0FSTl9NRURJ
QV9NRVNTQUdFKCJGYWlsZWQgdG8gY3JlYXRlIEdzdEdMIGVsZW1lbnRzIik7CisgICAgICAgIEdT
VF9XQVJOSU4oIkZhaWxlZCB0byBjcmVhdGUgR3N0R0wgZWxlbWVudHMiKTsKICAgICAgICAgZ3N0
X29iamVjdF91bnJlZih2aWRlb1NpbmspOwogCiAgICAgICAgIGlmICh1cGxvYWQpCkBAIC04NDEs
NyArODQxLDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
Y3JlYXRlVmlkZW9TaW5rR0woKQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmssICJu
ZXctc2FtcGxlIiwgR19DQUxMQkFDSyhuZXdTYW1wbGVDYWxsYmFjayksIHRoaXMpOwogICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmssICJuZXctcHJlcm9sbCIsIEdfQ0FMTEJBQ0sobmV3
UHJlcm9sbENhbGxiYWNrKSwgdGhpcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV0FSTl9NRURJ
QV9NRVNTQUdFKCJGYWlsZWQgdG8gbGluayBHc3RHTCBlbGVtZW50cyIpOworICAgICAgICBHU1Rf
V0FSTklOKCJGYWlsZWQgdG8gbGluayBHc3RHTCBlbGVtZW50cyIpOwogICAgICAgICBnc3Rfb2Jq
ZWN0X3VucmVmKHZpZGVvU2luayk7CiAgICAgICAgIHZpZGVvU2luayA9IG51bGxwdHI7CiAgICAg
fQpAQCAtODk3LDEyICs4OTcsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdzdFN0cmVhbVZvbHVtZSogdm8KICAgICAvLyBX
ZSBkb24ndCBzZXQgdGhlIGluaXRpYWwgdm9sdW1lIGJlY2F1c2Ugd2UgdHJ1c3QgdGhlIHNpbmsg
dG8ga2VlcCBpdCBmb3IgdXMuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTg5NzQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgaWYgKCFtX3Bs
YXllci0+cGxhdGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQoKSkgewotICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiU2V0dGluZyBzdHJlYW0gdm9sdW1lIHRvICVmIiwgbV9wbGF5ZXIt
PnZvbHVtZSgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJTZXR0aW5nIHN0cmVhbSB2b2x1bWUgdG8g
JWYiLCBtX3BsYXllci0+dm9sdW1lKCkpOwogICAgICAgICBnX29iamVjdF9zZXQobV92b2x1bWVF
bGVtZW50LmdldCgpLCAidm9sdW1lIiwgbV9wbGF5ZXItPnZvbHVtZSgpLCBOVUxMKTsKICAgICB9
IGVsc2UKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIk5vdCBzZXR0aW5nIHN0cmVhbSB2b2x1
bWUsIHRydXN0aW5nIHN5c3RlbSBvbmUiKTsKKyAgICAgICAgR1NUX0RFQlVHKCJOb3Qgc2V0dGlu
ZyBzdHJlYW0gdm9sdW1lLCB0cnVzdGluZyBzeXN0ZW0gb25lIik7CiAKLSAgICBMT0dfTUVESUFf
TUVTU0FHRSgiU2V0dGluZyBzdHJlYW0gbXV0ZWQgJWQiLCAgbV9wbGF5ZXItPm11dGVkKCkpOwor
ICAgIEdTVF9ERUJVRygiU2V0dGluZyBzdHJlYW0gbXV0ZWQgJWQiLCAgbV9wbGF5ZXItPm11dGVk
KCkpOwogICAgIGdfb2JqZWN0X3NldChtX3ZvbHVtZUVsZW1lbnQuZ2V0KCksICJtdXRlIiwgbV9w
bGF5ZXItPm11dGVkKCksIE5VTEwpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1f
dm9sdW1lRWxlbWVudC5nZXQoKSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyh2b2x1bWVD
aGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKaW5kZXggYmE3MmM1NC4uMWQyZjViNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJPd3IoTWVkaWFQbGF5ZXIqIHBsYXkKIAogTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyT3dyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyKCkKIHsKLSAgICBM
T0dfTUVESUFfTUVTU0FHRSgiRGVzdHJveWluZyIpOworICAgIEdTVF9ERUJVRygiRGVzdHJveWlu
ZyIpOwogCiAgICAgaWYgKGhhc0F1ZGlvKCkpCiAgICAgICAgIG1fYXVkaW9UcmFjay0+cmVtb3Zl
T2JzZXJ2ZXIoKnRoaXMpOwpAQCAtNjIsNyArNjIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJPd3I6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IoKQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6cGxheSgpCiB7Ci0gICAgTE9HX01FRElBX01FU1NB
R0UoIlBsYXkiKTsKKyAgICBHU1RfREVCVUcoIlBsYXkiKTsKIAogICAgIGlmICghbV9zdHJlYW1Q
cml2YXRlIHx8ICFtX3N0cmVhbVByaXZhdGUtPmFjdGl2ZSgpKSB7CiAgICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnBsYXkoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck93cjo6cGF1c2UoKQogewotICAgIExPR19NRURJQV9NRVNTQUdFKCJQ
YXVzZSIpOworICAgIEdTVF9ERUJVRygiUGF1c2UiKTsKICAgICBtX3BhdXNlZCA9IHRydWU7CiAg
ICAgc3RvcCgpOwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck93cjo6Y3VycmVudFRpbWUoKSBjb25zdAogICAgIGlmIChzdGF0aWNfY2FzdDxH
c3RDbG9ja1RpbWU+KHBvc2l0aW9uKSAhPSBHU1RfQ0xPQ0tfVElNRV9OT05FKQogICAgICAgICBy
ZXN1bHQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHBvc2l0aW9uKSAvIEdTVF9TRUNPTkQ7CiAKLSAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiUG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElN
RV9BUkdTKHBvc2l0aW9uKSk7CisgICAgR1NUX0RFQlVHKCJQb3NpdGlvbiAlIiBHU1RfVElNRV9G
T1JNQVQsIEdTVF9USU1FX0FSR1MocG9zaXRpb24pKTsKICAgICBnc3RfcXVlcnlfdW5yZWYocXVl
cnkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVh
bVByaXZhdGUpCiAgICAgaWYgKCFtX2F1ZGlvU2luaykKICAgICAgICAgY3JlYXRlR1NUQXVkaW9T
aW5rQmluKCk7CiAKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiTG9hZGluZyBNZWRpYVN0cmVhbVBy
aXZhdGUgJXAiLCAmc3RyZWFtUHJpdmF0ZSk7CisgICAgR1NUX0RFQlVHKCJMb2FkaW5nIE1lZGlh
U3RyZWFtUHJpdmF0ZSAlcCIsICZzdHJlYW1Qcml2YXRlKTsKIAogICAgIG1fc3RyZWFtUHJpdmF0
ZSA9ICZzdHJlYW1Qcml2YXRlOwogICAgIGlmICghbV9zdHJlYW1Qcml2YXRlLT5hY3RpdmUoKSkg
ewpAQCAtMTkxLDExICsxOTEsMTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OmludGVybmFsTG9hZCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBM
T0dfTUVESUFfTUVTU0FHRSgiQ29ubmVjdGluZyB0byBsaXZlIHN0cmVhbSwgZGVzY3JpcHRvcjog
JXAiLCBtX3N0cmVhbVByaXZhdGUuZ2V0KCkpOworICAgIEdTVF9ERUJVRygiQ29ubmVjdGluZyB0
byBsaXZlIHN0cmVhbSwgZGVzY3JpcHRvcjogJXAiLCBtX3N0cmVhbVByaXZhdGUuZ2V0KCkpOwog
CiAgICAgZm9yIChhdXRvIHRyYWNrIDogbV9zdHJlYW1Qcml2YXRlLT50cmFja3MoKSkgewogICAg
ICAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkpIHsKLSAgICAgICAgICAgIExPR19NRURJQV9NRVNT
QUdFKCJUcmFjayAlcyBkaXNhYmxlZCIsIHRyYWNrLT5sYWJlbCgpLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJXMgZGlzYWJsZWQiLCB0cmFjay0+bGFiZWwo
KS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBA
IC0yMjIsNyArMjIyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6Omlu
dGVybmFsTG9hZCgpCiAgICAgICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZToK
LSAgICAgICAgICAgIFdBUk5fTUVESUFfTUVTU0FHRSgiTG9hZGluZyBhIHRyYWNrIHdpdGggTm9u
ZSB0eXBlIik7CisgICAgICAgICAgICBHU1RfV0FSTklOKCJMb2FkaW5nIGEgdHJhY2sgd2l0aCBO
b25lIHR5cGUiKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM4LDExICsyMzgsMTEgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnN0b3AoKQogCiAgICAgbV9zdG9wcGVk
ID0gdHJ1ZTsKICAgICBpZiAobV9hdWRpb1RyYWNrKSB7Ci0gICAgICAgIExPR19NRURJQV9NRVNT
QUdFKCJTdG9wOiBkaXNjb25uZWN0aW5nIGF1ZGlvIik7CisgICAgICAgIEdTVF9ERUJVRygiU3Rv
cDogZGlzY29ubmVjdGluZyBhdWRpbyIpOwogICAgICAgICBnX29iamVjdF9zZXQobV9hdWRpb1Jl
bmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCBUUlVFLCBudWxscHRyKTsKICAgICB9CiAgICAgaWYg
KG1fdmlkZW9UcmFjaykgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiU3RvcDogZGlzY29u
bmVjdGluZyB2aWRlbyIpOworICAgICAgICBHU1RfREVCVUcoIlN0b3A6IGRpc2Nvbm5lY3Rpbmcg
dmlkZW8iKTsKICAgICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgImRp
c2FibGVkIiwgVFJVRSwgbnVsbHB0cik7CiAgICAgfQogfQpAQCAtMjg2LDcgKzI4Niw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjppbml0aWFsaXplR1N0cmVhbWVyQW5k
R1N0cmVhbWVyRGVidWdnaW5nKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dy
OjpjcmVhdGVHU1RBdWRpb1NpbmtCaW4oKQogewogICAgIEFTU0VSVCghbV9hdWRpb1NpbmspOwot
ICAgIExPR19NRURJQV9NRVNTQUdFKCJDcmVhdGluZyBhdWRpbyBzaW5rIik7CisgICAgR1NUX0RF
QlVHKCJDcmVhdGluZyBhdWRpbyBzaW5rIik7CiAgICAgLy8gRklYTUU6IHZvbHVtZS9tdXRlIHN1
cHBvcnQ6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MzgyOC4KIAogICAgIEdSZWZQdHI8R3N0RWxl
bWVudD4gc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIDAp
OwpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dy
OjpjcmVhdGVHU1RBdWRpb1NpbmtCaW4oKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck93cjo6dHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCiB7Ci0g
ICAgTE9HX01FRElBX01FU1NBR0UoIlRyYWNrIGVuZGVkIik7CisgICAgR1NUX0RFQlVHKCJUcmFj
ayBlbmRlZCIpOwogCiAgICAgaWYgKCFtX3N0cmVhbVByaXZhdGUgfHwgIW1fc3RyZWFtUHJpdmF0
ZS0+YWN0aXZlKCkpIHsKICAgICAgICAgc3RvcCgpOwpAQCAtMzE0LDE3ICszMTQsMTcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmIHRyYWNrKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93
cjo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogewotICAgIExP
R19NRURJQV9NRVNTQUdFKCJUcmFjayBtdXRlZCBzdGF0ZSBjaGFuZ2VkIik7CisgICAgR1NUX0RF
QlVHKCJUcmFjayBtdXRlZCBzdGF0ZSBjaGFuZ2VkIik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpCiB7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIlRyYWNrIHNldHRpbmdzIGNoYW5n
ZWQiKTsKKyAgICBHU1RfREVCVUcoIlRyYWNrIHNldHRpbmdzIGNoYW5nZWQiKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKQogewotICAgIExPR19NRURJQV9NRVNTQUdFKCJUcmFjayBl
bmFibGVkIGNoYW5nZWQiKTsKKyAgICBHU1RfREVCVUcoIlRyYWNrIGVuYWJsZWQgY2hhbmdlZCIp
OwogfQogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmNyZWF0
ZVZpZGVvU2luaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAKaW5kZXggNTY4NGI5Yy4uN2Y3NTk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZh
dGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21pY1N0
cmluZyYKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1RfVEFH
X0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewogICAgICAgICBsYW5ndWFnZSA9IGdzdF90YWdf
Z2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwotICAg
ICAgICBJTkZPX01FRElBX01FU1NBR0UoIkNvbnZlcnRlZCB0cmFjayAlZCdzIGxhbmd1YWdlIGNv
ZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEdT
VF9JTkZPKCJDb252ZXJ0ZWQgdHJhY2sgJWQncyBsYW5ndWFnZSBjb2RlIHRvICVzLiIsIG1faW5k
ZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gdmFs
dWUpIHsKICAgICAgICAgICAgIHZhbHVlID0gbGFuZ3VhZ2U7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgUwogewogICAg
IEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0
X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7Ci0gICAgICAgIElO
Rk9fTUVESUFfTUVTU0FHRSgiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKKyAgICAgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCAlcyAlcy4i
LCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7CiAgICAgICAgIHZhbHVlID0gdGFn
VmFsdWUuZ2V0KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLS0gCjIuOC4x
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283142</attachid>
            <date>2016-07-08 05:55:14 -0700</date>
            <delta_ts>2016-07-11 06:28:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>42698</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjMDViMTMwZDNjMThlODIxMDJkZDk3YzY4ODM3NjM2N2QyZmZhNjA5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDggSnVsIDIwMTYgMTQ6NTE6MTggKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICA2OCArKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VXRpbGl0aWVzLmggICAgICAgIHwgIDE2IC0tLQogLi4uL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcCAgfCAgIDggKy0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwgMTE0ICsrKysrKysrKystLS0tLS0tLS0tLQog
Li4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCAgfCAgMjgg
KystLS0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmNwcCAg
IHwgIDMwICsrKy0tLQogLi4uL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNw
cCAgICAgICAgfCAgIDQgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKyksIDEw
OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU0MDAxZi4uYTk3MGRhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTA3LTA4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSByZW1vdmUgV0VCS0lUX0RFQlVH
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTU1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSB0aGUgKl9NRURJQV9NRVNTQUdFIG1hY3JvcyBzcGVjaWZpYyB0byB0aGUgR1N0cmVh
bWVyCisgICAgICAgIHBsYXRmb3JtIGNvZGUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHN0YW5kYXJk
IEdTVF9ERUJVRyBtYWNyb3MuIEluCisgICAgICAgIERlYnVnIGJ1aWxkcyB0aGUgV0VCS0lUX0RF
QlVHPU1lZGlhIGxvZ3Mgbm93IG9ubHkgY29udGFpbiBsb2dzCisgICAgICAgIHJlbGF0ZWQgd2l0
aCB0aGUgY3Jvc3MtcGxhdGZvcm0gTWVkaWEgZWxlbWVudCBjb2RlLiBJZiBHU3RyZWFtZXIKKyAg
ICAgICAgbG9ncyBhcmUgbmVlZGVkLCB0aGUgR1NUX0RFQlVHPXdlYmtpdCo6NSBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBjYW4KKyAgICAgICAgYmUgdXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QXVkaW9T
dHJlYW1Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVBsYXliYWNrUmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5ld1RleHRTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6ZmlsbFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptYXhUaW1lU2Vla2FibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptYXhUaW1lTG9hZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkTG9hZGluZ1Byb2dyZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxC
eXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmFz
eW5jU3RhdGVDaGFuZ2VEb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldERvd25sb2FkQnVmZmVyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5r
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
R1NUUGxheUJpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0Vm9sdW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZUNoYW5nZWRD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmtHTCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck93cjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnBsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpwYXVzZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmN1cnJlbnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6bG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmludGVy
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
T3dyOjpjcmVhdGVHU1RBdWRpb1NpbmtCaW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6dHJhY2tNdXRlZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja1NldHRpbmdz
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnRyYWNrRW5hYmxlZENoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdlQ29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcpOgorCiAyMDE2LTA3LTA4
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjAyOTY3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5o
CmluZGV4IGY1NWQwYjUuLmIyMzUxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgK
QEAgLTIyLDIyICsyMiw2IEBACiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZvcm1hdC5oPgog
I2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1pbmZvLmg+CiAKLSNkZWZpbmUgTE9HX01FRElBX01F
U1NBR0UoLi4uKSBkbyB7IFwKLSAgICBHU1RfREVCVUcoX19WQV9BUkdTX18pOyBcCi0gICAgTE9H
X1ZFUkJPU0UoTWVkaWEsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBFUlJP
Ul9NRURJQV9NRVNTQUdFKC4uLikgZG8geyBcCi0gICAgR1NUX0VSUk9SKF9fVkFfQVJHU19fKTsg
XAotICAgIExPR19WRVJCT1NFKE1lZGlhLCBfX1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCi0KLSNk
ZWZpbmUgSU5GT19NRURJQV9NRVNTQUdFKC4uLikgZG8geyBcCi0gICAgR1NUX0lORk8oX19WQV9B
UkdTX18pOyBcCi0gICAgTE9HX1ZFUkJPU0UoTWVkaWEsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAo
MCkKLQotI2RlZmluZSBXQVJOX01FRElBX01FU1NBR0UoLi4uKSBkbyB7IFwKLSAgICBHU1RfV0FS
TklORyhfX1ZBX0FSR1NfXyk7IFwKLSAgICBMT0dfVkVSQk9TRShNZWRpYSwgX19WQV9BUkdTX18p
OyB9IHdoaWxlICgwKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
aW5kZXggNjg0Mjk1Yi4uNmIxZmZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAwLDE4ICsxMDAsMTggQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKCkKICAg
ICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSA9IHNhbXBsZXNbaV07CiAgICAgICAgIEdz
dEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSk7CiAg
ICAgICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIlRy
YWNrICVkIGdvdCBzYW1wbGUgd2l0aCBubyBidWZmZXIuIiwgbV9pbmRleCk7CisgICAgICAgICAg
ICBHU1RfV0FSTklORygiVHJhY2sgJWQgZ290IHNhbXBsZSB3aXRoIG5vIGJ1ZmZlci4iLCBtX2lu
ZGV4KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIEdzdE1hcElu
Zm8gaW5mbzsKICAgICAgICAgZ2Jvb2xlYW4gcmV0ID0gZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAm
aW5mbywgR1NUX01BUF9SRUFEKTsKICAgICAgICAgQVNTRVJUKHJldCk7CiAgICAgICAgIGlmICgh
cmV0KSB7Ci0gICAgICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIlRyYWNrICVkIHVuYWJsZSB0
byBtYXAgYnVmZmVyLiIsIG1faW5kZXgpOworICAgICAgICAgICAgR1NUX1dBUk5JTkcoIlRyYWNr
ICVkIHVuYWJsZSB0byBtYXAgYnVmZmVyLiIsIG1faW5kZXgpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBJTkZPX01FRElBX01FU1NBR0UoIlRyYWNrICVkIHBh
cnNpbmcgc2FtcGxlOiAlLipzIiwgbV9pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihpbmZvLnNpemUp
LAorICAgICAgICBHU1RfSU5GTygiVHJhY2sgJWQgcGFyc2luZyBzYW1wbGU6ICUuKnMiLCBtX2lu
ZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGluZm8uc2l6ZSksCiAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PGNoYXIqPihpbmZvLmRhdGEpKTsKICAgICAgICAgY2xpZW50KCktPnBhcnNlV2ViVlRU
Q3VlRGF0YSh0aGlzLCByZWludGVycHJldF9jYXN0PGNoYXIqPihpbmZvLmRhdGEpLCBpbmZvLnNp
emUpOwogICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJmluZm8pOwpAQCAtMTI3LDcg
KzEyNyw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJh
Y2tPZlN0cmVhbUNoYW5nZWQoKQogCiAgICAgY29uc3QgZ2NoYXIqIHN0cmVhbUlkOwogICAgIGdz
dF9ldmVudF9wYXJzZV9zdHJlYW1fc3RhcnQoZXZlbnQuZ2V0KCksICZzdHJlYW1JZCk7Ci0gICAg
SU5GT19NRURJQV9NRVNTQUdFKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0g
JXMuIiwgbV9pbmRleCwgc3RyZWFtSWQpOworICAgIEdTVF9JTkZPKCJUcmFjayAlZCBnb3Qgc3Ry
ZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwgc3RyZWFtSWQpOwogICAgIG1fc3Ry
ZWFtSWQgPSBzdHJlYW1JZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjNTE2NDIyLi45Zjk4OTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVz
KEdPYmplY3QqIG9iamVjdCkKICAgICBnX29iamVjdF9zZXQob2JqZWN0LCAic3RyZWFtLXByb3Bl
cnRpZXMiLCBzdHJ1Y3R1cmUsIE5VTEwpOwogICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShzdHJ1Y3R1
cmUpOwogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVsZW1lbnROYW1lKGdzdF9lbGVtZW50X2dldF9u
YW1lKEdTVF9FTEVNRU5UKG9iamVjdCkpKTsKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2V0IG1l
ZGlhLnJvbGUgYXMgJXMgYXQgJXMiLCByb2xlLCBlbGVtZW50TmFtZS5nZXQoKSk7CisgICAgR1NU
X0RFQlVHKCJTZXQgbWVkaWEucm9sZSBhcyAlcyBhdCAlcyIsIHJvbGUsIGVsZW1lbnROYW1lLmdl
dCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQpAQCAtMjQ0LDEwICsyNDQs
MTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWQoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCiAgICAgbV91cmwgPSBVUkwoVVJMKCksIGNsZWFuVVJMKTsKICAgICBnX29i
amVjdF9zZXQobV9waXBlbGluZS5nZXQoKSwgInVyaSIsIGNsZWFuVVJMLnV0ZjgoKS5kYXRhKCks
IG51bGxwdHIpOwogCi0gICAgSU5GT19NRURJQV9NRVNTQUdFKCJMb2FkICVzIiwgY2xlYW5VUkwu
dXRmOCgpLmRhdGEoKSk7CisgICAgR1NUX0lORk8oIkxvYWQgJXMiLCBjbGVhblVSTC51dGY4KCku
ZGF0YSgpKTsKIAogICAgIGlmIChtX3ByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6Ok5vbmUpIHsKLSAg
ICAgICAgTE9HX01FRElBX01FU1NBR0UoIkRlbGF5aW5nIGxvYWQuIik7CisgICAgICAgIEdTVF9E
RUJVRygiRGVsYXlpbmcgbG9hZC4iKTsKICAgICAgICAgbV9kZWxheWluZ0xvYWQgPSB0cnVlOwog
ICAgIH0KIApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29tbWl0TG9hZCgpCiB7CiAgICAgQVNTRVJUKCFtX2RlbGF5aW5nTG9hZCk7Ci0g
ICAgTE9HX01FRElBX01FU1NBR0UoIkNvbW1pdHRpbmcgbG9hZC4iKTsKKyAgICBHU1RfREVCVUco
IkNvbW1pdHRpbmcgbG9hZC4iKTsKIAogICAgIC8vIEdTdHJlYW1lciBuZWVkcyB0byBoYXZlIHRo
ZSBwaXBlbGluZSBzZXQgdG8gYSBwYXVzZWQgc3RhdGUgdG8KICAgICAvLyBzdGFydCBwcm92aWRp
bmcgYW55dGhpbmcgdXNlZnVsLgpAQCAtMzE2LDcgKzMxNiw3IEBAIGZsb2F0IE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cGxheWJhY2tQb3NpdGlvbigpIGNvbnN0CiAgICAgICAgIGdzdF9x
dWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKICAgICBnc3RfcXVlcnlf
dW5yZWYocXVlcnkpOwogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIlBvc2l0aW9uICUiIEdTVF9U
SU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikpOworICAgIEdTVF9ERUJVRygiUG9z
aXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKHBvc2l0aW9uKSk7CiAKICAg
ICBmbG9hdCByZXN1bHQgPSAwLjBmOwogICAgIGlmIChzdGF0aWNfY2FzdDxHc3RDbG9ja1RpbWU+
KHBvc2l0aW9uKSAhPSBHU1RfQ0xPQ0tfVElNRV9OT05FKSB7CkBAIC0zNDMsMTIgKzM0MywxMiBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShH
c3RTdGF0ZSBuZXdTdGF0ZSkKIAogICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BpcGVsaW5l
LmdldCgpLCAmY3VycmVudFN0YXRlLCAmcGVuZGluZywgMCk7CiAgICAgaWYgKGN1cnJlbnRTdGF0
ZSA9PSBuZXdTdGF0ZSB8fCBwZW5kaW5nID09IG5ld1N0YXRlKSB7Ci0gICAgICAgIExPR19NRURJ
QV9NRVNTQUdFKCJSZWplY3RlZCBzdGF0ZSBjaGFuZ2UgdG8gJXMgZnJvbSAlcyB3aXRoICVzIHBl
bmRpbmciLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSksCisgICAgICAgIEdT
VF9ERUJVRygiUmVqZWN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIGZyb20gJXMgd2l0aCAlcyBwZW5k
aW5nIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAogICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoY3VycmVudFN0YXRlKSwgZ3N0X2VsZW1lbnRfc3Rh
dGVfZ2V0X25hbWUocGVuZGluZykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiQ2hhbmdpbmcgc3RhdGUgY2hhbmdlIHRvICVzIGZyb20gJXMg
d2l0aCAlcyBwZW5kaW5nIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAor
ICAgIEdTVF9ERUJVRygiQ2hhbmdpbmcgc3RhdGUgY2hhbmdlIHRvICVzIGZyb20gJXMgd2l0aCAl
cyBwZW5kaW5nIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAogICAgICAg
ICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShjdXJyZW50U3RhdGUpLCBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAKICAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzZXRT
dGF0ZVJlc3VsdCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBuZXdT
dGF0ZSk7CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnBsYXkoKQogICAgICAgICBtX2RlbGF5aW5nTG9hZCA9IGZhbHNlOwogICAgICAgICBtX3By
ZWxvYWQgPSBNZWRpYVBsYXllcjo6QXV0bzsKICAgICAgICAgc2V0RG93bmxvYWRCdWZmZXJpbmco
KTsKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlBsYXkiKTsKKyAgICAgICAgR1NUX0RFQlVH
KCJQbGF5Iik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXll
cjo6RW1wdHkpOwogICAgIH0KQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGF1c2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2hhbmdl
UGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKSkKLSAgICAgICAgSU5GT19NRURJQV9NRVNT
QUdFKCJQYXVzZSIpOworICAgICAgICBHU1RfSU5GTygiUGF1c2UiKTsKICAgICBlbHNlCiAgICAg
ICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkVtcHR5KTsKIH0KQEAgLTQzMywxMSArNDMz
LDExIEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24oKSBjb25z
dAogCiAgICAgYm9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uKG1fcGlw
ZWxpbmUuZ2V0KCksIHRpbWVGb3JtYXQsICZ0aW1lTGVuZ3RoKSB8fCBzdGF0aWNfY2FzdDxndWlu
dDY0Pih0aW1lTGVuZ3RoKSA9PSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIGlmIChmYWlsdXJl
KSB7Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJUaW1lIGR1cmF0aW9uIHF1ZXJ5IGZhaWxl
ZCBmb3IgJXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgR1NUX0RF
QlVHKCJUaW1lIGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3VybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKTsKICAgICB9CiAKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiRHVyYXRpb246ICUiIEdT
VF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyh0aW1lTGVuZ3RoKSk7CisgICAgR1NUX0RFQlVH
KCJEdXJhdGlvbjogJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKHRpbWVMZW5ndGgp
KTsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVMZW5ndGgpIC8gR1NUX1NF
Q09ORDsKICAgICAvLyBGSVhNRTogaGFuZGxlIDMuMTQuOS41IHByb3Blcmx5CkBAIC00NzMsNyAr
NDczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGlt
ZSkKICAgICBpZiAobV9lcnJvck9jY3VyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIElORk9f
TUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWsgYXR0ZW1wdCB0byAlZiBzZWNzIiwgdGltZSk7Cisg
ICAgR1NUX0lORk8oIltTZWVrXSBzZWVrIGF0dGVtcHQgdG8gJWYgc2VjcyIsIHRpbWUpOwogCiAg
ICAgLy8gQXZvaWQgdXNlbGVzcyBzZWVraW5nLgogICAgIGlmICh0aW1lID09IGN1cnJlbnRUaW1l
KCkpCkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNlZWsoZmxvYXQgdGltZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3N0Q2xvY2tUaW1lIGNs
b2NrVGltZSA9IHRvR3N0Q2xvY2tUaW1lKHRpbWUpOwotICAgIElORk9fTUVESUFfTUVTU0FHRSgi
W1NlZWtdIHNlZWtpbmcgdG8gJSIgR1NUX1RJTUVfRk9STUFUICIgKCVmKSIsIEdTVF9USU1FX0FS
R1MoY2xvY2tUaW1lKSwgdGltZSk7CisgICAgR1NUX0lORk8oIltTZWVrXSBzZWVraW5nIHRvICUi
IEdTVF9USU1FX0ZPUk1BVCAiICglZikiLCBHU1RfVElNRV9BUkdTKGNsb2NrVGltZSksIHRpbWUp
OwogCiAgICAgaWYgKG1fc2Vla2luZykgewogICAgICAgICBtX3RpbWVPZk92ZXJsYXBwaW5nU2Vl
ayA9IHRpbWU7CkBAIC00OTYsMTMgKzQ5NiwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6c2VlayhmbG9hdCB0aW1lKQogICAgIEdzdFN0YXRlIHN0YXRlOwogICAgIEdzdFN0
YXRlQ2hhbmdlUmV0dXJuIGdldFN0YXRlUmVzdWx0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1f
cGlwZWxpbmUuZ2V0KCksICZzdGF0ZSwgbnVsbHB0ciwgMCk7CiAgICAgaWYgKGdldFN0YXRlUmVz
dWx0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSB8fCBnZXRTdGF0ZVJlc3VsdCA9PSBHU1Rf
U1RBVEVfQ0hBTkdFX05PX1BSRVJPTEwpIHsKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltT
ZWVrXSBjYW5ub3Qgc2VlaywgY3VycmVudCBzdGF0ZSBjaGFuZ2UgaXMgJXMiLCBnc3RfZWxlbWVu
dF9zdGF0ZV9jaGFuZ2VfcmV0dXJuX2dldF9uYW1lKGdldFN0YXRlUmVzdWx0KSk7CisgICAgICAg
IEdTVF9ERUJVRygiW1NlZWtdIGNhbm5vdCBzZWVrLCBjdXJyZW50IHN0YXRlIGNoYW5nZSBpcyAl
cyIsIGdzdF9lbGVtZW50X3N0YXRlX2NoYW5nZV9yZXR1cm5fZ2V0X25hbWUoZ2V0U3RhdGVSZXN1
bHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZ2V0U3RhdGVSZXN1bHQgPT0g
R1NUX1NUQVRFX0NIQU5HRV9BU1lOQyB8fCBzdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQgfHwgbV9p
c0VuZFJlYWNoZWQpIHsKICAgICAgICAgbV9zZWVrSXNQZW5kaW5nID0gdHJ1ZTsKICAgICAgICAg
aWYgKG1faXNFbmRSZWFjaGVkKSB7Ci0gICAgICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiW1Nl
ZWtdIHJlc2V0IHBpcGVsaW5lIik7CisgICAgICAgICAgICBHU1RfREVCVUcoIltTZWVrXSByZXNl
dCBwaXBlbGluZSIpOwogICAgICAgICAgICAgbV9yZXNldFBpcGVsaW5lID0gdHJ1ZTsKICAgICAg
ICAgICAgIGlmICghY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKSkKICAgICAg
ICAgICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7CkBAIC01MTAsNyAr
NTEwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGlt
ZSkKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBjYW4gc2VlayBub3cuCiAgICAgICAgIGlm
ICghZG9TZWVrKGNsb2NrVGltZSwgbV9wbGF5ZXItPnJhdGUoKSwgc3RhdGljX2Nhc3Q8R3N0U2Vl
a0ZsYWdzPihHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSkpKSB7
Ci0gICAgICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWtpbmcgdG8gJWYgZmFp
bGVkIiwgdGltZSk7CisgICAgICAgICAgICBHU1RfREVCVUcoIltTZWVrXSBzZWVraW5nIHRvICVm
IGZhaWxlZCIsIHRpbWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRh
dGVQbGF5YmFja1JhdGUoKQogICAgIGZsb2F0IGN1cnJlbnRQb3NpdGlvbiA9IHN0YXRpY19jYXN0
PGZsb2F0PihwbGF5YmFja1Bvc2l0aW9uKCkgKiBHU1RfU0VDT05EKTsKICAgICBib29sIG11dGUg
PSBmYWxzZTsKIAotICAgIElORk9fTUVESUFfTUVTU0FHRSgiU2V0IFJhdGUgdG8gJWYiLCBtX3Bs
YXliYWNrUmF0ZSk7CisgICAgR1NUX0lORk8oIlNldCBSYXRlIHRvICVmIiwgbV9wbGF5YmFja1Jh
dGUpOwogCiAgICAgaWYgKG1fcGxheWJhY2tSYXRlID4gMCkgewogICAgICAgICAvLyBNdXRlIHRo
ZSBzb3VuZCBpZiB0aGUgcGxheWJhY2sgcmF0ZSBpcyB0b28gZXh0cmVtZSBhbmQKQEAgLTU2OSwx
MyArNTY5LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVQbGF5
YmFja1JhdGUoKQogICAgICAgICBtdXRlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBJTkZPX01FRElB
X01FU1NBR0UoIk5lZWQgdG8gbXV0ZSBhdWRpbz86ICVkIiwgKGludCkgbXV0ZSk7CisgICAgR1NU
X0lORk8oIk5lZWQgdG8gbXV0ZSBhdWRpbz86ICVkIiwgKGludCkgbXV0ZSk7CiAgICAgaWYgKGRv
U2VlayhjdXJyZW50UG9zaXRpb24sIG1fcGxheWJhY2tSYXRlLCBzdGF0aWNfY2FzdDxHc3RTZWVr
RmxhZ3M+KEdTVF9TRUVLX0ZMQUdfRkxVU0gpKSkgewogICAgICAgICBnX29iamVjdF9zZXQobV9w
aXBlbGluZS5nZXQoKSwgIm11dGUiLCBtdXRlLCBudWxscHRyKTsKICAgICAgICAgbV9sYXN0UGxh
eWJhY2tSYXRlID0gbV9wbGF5YmFja1JhdGU7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wbGF5
YmFja1JhdGUgPSBtX2xhc3RQbGF5YmFja1JhdGU7Ci0gICAgICAgIEVSUk9SX01FRElBX01FU1NB
R0UoIlNldCByYXRlIHRvICVmIGZhaWxlZCIsIG1fcGxheWJhY2tSYXRlKTsKKyAgICAgICAgR1NU
X0VSUk9SKCJTZXQgcmF0ZSB0byAlZiBmYWlsZWQiLCBtX3BsYXliYWNrUmF0ZSk7CiAgICAgfQog
CiAgICAgaWYgKG1fcGxheWJhY2tSYXRlUGF1c2UpIHsKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlUGxheWJhY2tSYXRlKCkKIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQoKSBjb25zdAogewogICAgIGlmICht
X2lzRW5kUmVhY2hlZCkgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiSWdub3JpbmcgcGF1
c2UgYXQgRU9TIik7CisgICAgICAgIEdTVF9ERUJVRygiSWdub3JpbmcgcGF1c2UgYXQgRU9TIik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNzc1LDkgKzc3NSw5IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuZXdUZXh0U2FtcGxlKCkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgV0FSTl9NRURJ
QV9NRVNTQUdFKCJHb3Qgc2FtcGxlIHdpdGggdW5rbm93biBzdHJlYW0gSUQuIik7CisgICAgICAg
ICAgICBHU1RfV0FSTklORygiR290IHNhbXBsZSB3aXRoIHVua25vd24gc3RyZWFtIElELiIpOwog
ICAgIH0gZWxzZQotICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIlVuYWJsZSB0byBoYW5kbGUg
c2FtcGxlIHdpdGggbm8gc3RyZWFtIHN0YXJ0IGV2ZW50LiIpOworICAgICAgICBHU1RfV0FSTklO
RygiVW5hYmxlIHRvIGhhbmRsZSBzYW1wbGUgd2l0aCBubyBzdHJlYW0gc3RhcnQgZXZlbnQuIik7
CiB9CiAjZW5kaWYKIApAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgLy8gV2Ug
aWdub3JlIHN0YXRlIGNoYW5nZXMgZnJvbSBpbnRlcm5hbCBlbGVtZW50cy4gVGhleSBhcmUgZm9y
d2FyZGVkIHRvIHBsYXliaW4yIGFueXdheS4KICAgICBib29sIG1lc3NhZ2VTb3VyY2VJc1BsYXli
aW4gPSBHU1RfTUVTU0FHRV9TUkMobWVzc2FnZSkgPT0gcmVpbnRlcnByZXRfY2FzdDxHc3RPYmpl
Y3QqPihtX3BpcGVsaW5lLmdldCgpKTsKIAotICAgIExPR19NRURJQV9NRVNTQUdFKCJNZXNzYWdl
ICVzIHJlY2VpdmVkIGZyb20gZWxlbWVudCAlcyIsIEdTVF9NRVNTQUdFX1RZUEVfTkFNRShtZXNz
YWdlKSwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2FnZSkpOworICAgIEdTVF9ERUJVRygiTWVz
c2FnZSAlcyByZWNlaXZlZCBmcm9tIGVsZW1lbnQgJXMiLCBHU1RfTUVTU0FHRV9UWVBFX05BTUUo
bWVzc2FnZSksIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAgICBzd2l0Y2ggKEdT
VF9NRVNTQUdFX1RZUEUobWVzc2FnZSkpIHsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9SOgog
ICAgICAgICBpZiAobV9yZXNldFBpcGVsaW5lKQpAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCiAgICAgICAgIGlmIChtX21pc3NpbmdQbHVnaW5zQ2FsbGJhY2spCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQ
dHIoKSwgJmRlYnVnLm91dFB0cigpKTsKLSAgICAgICAgRVJST1JfTUVESUFfTUVTU0FHRSgiRXJy
b3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2UsIG1fdXJsLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBHU1RfRVJST1IoIkVycm9yICVkOiAlcyAodXJs
PSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgICAgICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJ
TihtX3BpcGVsaW5lLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAid2Via2l0LXZp
ZGVvLmVycm9yIik7CiAKQEAgLTkyMSw3ICs5MjEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAg
ICAgLy8gdGhpcyBjYXNlIHRoZSBIVE1MTWVkaWFFbGVtZW50IHdpbGwgZW1pdCBhIHN0YWxsZWQK
ICAgICAgICAgICAgIC8vIGV2ZW50LgogICAgICAgICAgICAgaWYgKGVyci0+Y29kZSA9PSBHU1Rf
U1RSRUFNX0VSUk9SX1RZUEVfTk9UX0ZPVU5EKSB7Ci0gICAgICAgICAgICAgICAgRVJST1JfTUVE
SUFfTUVTU0FHRSgiRGVjb2RlIGVycm9yLCBsZXQgdGhlIE1lZGlhIGVsZW1lbnQgZW1pdCBhIHN0
YWxsZWQgZXZlbnQuIik7CisgICAgICAgICAgICAgICAgR1NUX0VSUk9SKCJEZWNvZGUgZXJyb3Is
IGxldCB0aGUgTWVkaWEgZWxlbWVudCBlbWl0IGEgc3RhbGxlZCBldmVudC4iKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVycm9yID0gTWVkaWFQ
bGF5ZXI6OkRlY29kZUVycm9yOwpAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAg
ICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCAmY3VycmVudFN0YXRl
LCBudWxscHRyLCAyNTAgKiBHU1RfTlNFQ09ORCk7CiAgICAgICAgIGlmIChyZXF1ZXN0ZWRTdGF0
ZSA8IGN1cnJlbnRTdGF0ZSkgewogICAgICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZWxlbWVu
dE5hbWUoZ3N0X2VsZW1lbnRfZ2V0X25hbWUoR1NUX0VMRU1FTlQobWVzc2FnZSkpKTsKLSAgICAg
ICAgICAgIElORk9fTUVESUFfTUVTU0FHRSgiRWxlbWVudCAlcyByZXF1ZXN0ZWQgc3RhdGUgY2hh
bmdlIHRvICVzIiwgZWxlbWVudE5hbWUuZ2V0KCksCisgICAgICAgICAgICBHU1RfSU5GTygiRWxl
bWVudCAlcyByZXF1ZXN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIiwgZWxlbWVudE5hbWUuZ2V0KCks
CiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocmVxdWVzdGVkU3Rh
dGUpKTsKICAgICAgICAgICAgIG1fcmVxdWVzdGVkU3RhdGUgPSByZXF1ZXN0ZWRTdGF0ZTsKICAg
ICAgICAgICAgIGlmICghY2hhbmdlUGlwZWxpbmVTdGF0ZShyZXF1ZXN0ZWRTdGF0ZSkpCkBAIC0x
MDQyLDcgKzEwNDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxl
TWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlVuaGFuZGxlZCBHU3RyZWFtZXIg
bWVzc2FnZSB0eXBlOiAlcyIsCisgICAgICAgIEdTVF9ERUJVRygiVW5oYW5kbGVkIEdTdHJlYW1l
ciBtZXNzYWdlIHR5cGU6ICVzIiwKICAgICAgICAgICAgICAgICAgICAgR1NUX01FU1NBR0VfVFlQ
RV9OQU1FKG1lc3NhZ2UpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA1NCw3ICsxMDU0
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NCdWZmZXJpbmdT
dGF0cyhHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIG1fYnVmZmVyaW5nID0gdHJ1ZTsKICAgICBn
c3RfbWVzc2FnZV9wYXJzZV9idWZmZXJpbmcobWVzc2FnZSwgJm1fYnVmZmVyaW5nUGVyY2VudGFn
ZSk7CiAKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiW0J1ZmZlcmluZ10gQnVmZmVyaW5nOiAlZCUl
LiIsIG1fYnVmZmVyaW5nUGVyY2VudGFnZSk7CisgICAgR1NUX0RFQlVHKCJbQnVmZmVyaW5nXSBC
dWZmZXJpbmc6ICVkJSUuIiwgbV9idWZmZXJpbmdQZXJjZW50YWdlKTsKIAogICAgIHVwZGF0ZVN0
YXRlcygpOwogfQpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKCkKICAgICBpZiAoc3RvcCAhPSAtMSkKICAgICAgICAg
ZmlsbFN0YXR1cyA9IDEwMC4wICogc3RvcCAvIEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVg7CiAKLSAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiW0J1ZmZlcmluZ10gRG93bmxvYWQgYnVmZmVyIGZpbGxlZCB1
cCB0byAlZiUlIiwgZmlsbFN0YXR1cyk7CisgICAgR1NUX0RFQlVHKCJbQnVmZmVyaW5nXSBEb3du
bG9hZCBidWZmZXIgZmlsbGVkIHVwIHRvICVmJSUiLCBmaWxsU3RhdHVzKTsKIAogICAgIGZsb2F0
IG1lZGlhRHVyYXRpb24gPSBkdXJhdGlvbigpOwogCkBAIC0xMTkwLDcgKzExOTAsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZmlsbFRpbWVyRmlyZWQoKQogICAgICAgICAg
ICAgbV9tYXhUaW1lTG9hZGVkID0gbWVkaWFEdXJhdGlvbjsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9tYXhUaW1lTG9hZGVkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChmaWxsU3RhdHVzICog
bWVkaWFEdXJhdGlvbikgLyAxMDAuMCk7Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbQnVm
ZmVyaW5nXSBVcGRhdGVkIG1heFRpbWVMb2FkZWQ6ICVmIiwgbV9tYXhUaW1lTG9hZGVkKTsKKyAg
ICAgICAgR1NUX0RFQlVHKCJbQnVmZmVyaW5nXSBVcGRhdGVkIG1heFRpbWVMb2FkZWQ6ICVmIiwg
bV9tYXhUaW1lTG9hZGVkKTsKICAgICB9CiAKICAgICBtX2Rvd25sb2FkRmluaXNoZWQgPSBmaWxs
U3RhdHVzID09IDEwMC4wOwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogICAgICAgICByZXR1cm4g
MC4wZjsKIAogICAgIGZsb2F0IG1lZGlhRHVyYXRpb24gPSBkdXJhdGlvbigpOwotICAgIExPR19N
RURJQV9NRVNTQUdFKCJtYXhUaW1lU2Vla2FibGUsIGR1cmF0aW9uOiAlZiIsIG1lZGlhRHVyYXRp
b24pOworICAgIEdTVF9ERUJVRygibWF4VGltZVNlZWthYmxlLCBkdXJhdGlvbjogJWYiLCBtZWRp
YUR1cmF0aW9uKTsKICAgICAvLyBpbmZpbml0ZSBkdXJhdGlvbiBtZWFucyBsaXZlIHN0cmVhbQog
ICAgIGlmIChzdGQ6OmlzaW5mKG1lZGlhRHVyYXRpb24pKQogICAgICAgICByZXR1cm4gMC4wZjsK
QEAgLTEyMjgsNyArMTIyOCw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
bWF4VGltZUxvYWRlZCgpIGNvbnN0CiAgICAgZmxvYXQgbG9hZGVkID0gbV9tYXhUaW1lTG9hZGVk
OwogICAgIGlmIChtX2lzRW5kUmVhY2hlZCkKICAgICAgICAgbG9hZGVkID0gZHVyYXRpb24oKTsK
LSAgICBMT0dfTUVESUFfTUVTU0FHRSgibWF4VGltZUxvYWRlZDogJWYiLCBsb2FkZWQpOworICAg
IEdTVF9ERUJVRygibWF4VGltZUxvYWRlZDogJWYiLCBsb2FkZWQpOwogICAgIHJldHVybiBsb2Fk
ZWQ7CiB9CiAKQEAgLTEyMzksNyArMTIzOSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAogICAgIGZsb2F0IGN1cnJlbnRNYXhU
aW1lTG9hZGVkID0gbWF4VGltZUxvYWRlZCgpOwogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNz
ID0gY3VycmVudE1heFRpbWVMb2FkZWQgIT0gbV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGlu
Z1Byb2dyZXNzOwogICAgIG1fbWF4VGltZUxvYWRlZEF0TGFzdERpZExvYWRpbmdQcm9ncmVzcyA9
IGN1cnJlbnRNYXhUaW1lTG9hZGVkOwotICAgIExPR19NRURJQV9NRVNTQUdFKCJkaWRMb2FkaW5n
UHJvZ3Jlc3M6ICVkIiwgZGlkTG9hZGluZ1Byb2dyZXNzKTsKKyAgICBHU1RfREVCVUcoImRpZExv
YWRpbmdQcm9ncmVzczogJWQiLCBkaWRMb2FkaW5nUHJvZ3Jlc3MpOwogICAgIHJldHVybiBkaWRM
b2FkaW5nUHJvZ3Jlc3M7CiB9CiAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHVuc2lnbmVkIGxvbmcg
bG9uZyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBjb25zdAogICAg
IEdzdEZvcm1hdCBmbXQgPSBHU1RfRk9STUFUX0JZVEVTOwogICAgIGdpbnQ2NCBsZW5ndGggPSAw
OwogICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZS5nZXQoKSwgZm10
LCAmbGVuZ3RoKSkgewotICAgICAgICBJTkZPX01FRElBX01FU1NBR0UoInRvdGFsQnl0ZXMgJSIg
R19HSU5UNjRfRk9STUFULCBsZW5ndGgpOworICAgICAgICBHU1RfSU5GTygidG90YWxCeXRlcyAl
IiBHX0dJTlQ2NF9GT1JNQVQsIGxlbmd0aCk7CiAgICAgICAgIG1fdG90YWxCeXRlcyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGVuZ3RoKTsKICAgICAgICAgbV9pc1N0cmVhbWlu
ZyA9ICFsZW5ndGg7CiAgICAgICAgIHJldHVybiBtX3RvdGFsQnl0ZXM7CkBAIC0xMjkyLDcgKzEy
OTIsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0
b3RhbEJ5dGVzKCkgY29uc3QKIAogICAgIGdzdF9pdGVyYXRvcl9mcmVlKGl0ZXIpOwogCi0gICAg
SU5GT19NRURJQV9NRVNTQUdFKCJ0b3RhbEJ5dGVzICUiIEdfR0lOVDY0X0ZPUk1BVCwgbGVuZ3Ro
KTsKKyAgICBHU1RfSU5GTygidG90YWxCeXRlcyAlIiBHX0dJTlQ2NF9GT1JNQVQsIGxlbmd0aCk7
CiAgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5n
dGgpOwogICAgIG1faXNTdHJlYW1pbmcgPSAhbGVuZ3RoOwogICAgIHJldHVybiBtX3RvdGFsQnl0
ZXM7CkBAIC0xMzM1LDcgKzEzMzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6YXN5bmNTdGF0ZUNoYW5nZURvbmUoKQogICAgICAgICBpZiAobV9zZWVrSXNQZW5kaW5nKQog
ICAgICAgICAgICAgdXBkYXRlU3RhdGVzKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
TE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVrZWQgdG8gJWYiLCBtX3NlZWtUaW1lKTsKKyAg
ICAgICAgICAgIEdTVF9ERUJVRygiW1NlZWtdIHNlZWtlZCB0byAlZiIsIG1fc2Vla1RpbWUpOwog
ICAgICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAobV90aW1lT2ZP
dmVybGFwcGluZ1NlZWsgIT0gbV9zZWVrVGltZSAmJiBtX3RpbWVPZk92ZXJsYXBwaW5nU2VlayAh
PSAtMSkgewogICAgICAgICAgICAgICAgIHNlZWsobV90aW1lT2ZPdmVybGFwcGluZ1NlZWspOwpA
QCAtMTM3MSw3ICsxMzcxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVw
ZGF0ZVN0YXRlcygpCiAgICAgYm9vbCBzaG91bGRVcGRhdGVQbGF5YmFja1N0YXRlID0gZmFsc2U7
CiAgICAgc3dpdGNoIChnZXRTdGF0ZVJlc3VsdCkgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5H
RV9TVUNDRVNTOiB7Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJTdGF0ZTogJXMsIHBlbmRp
bmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CisgICAgICAgIEdTVF9ERUJVRygiU3RhdGU6ICVzLCBw
ZW5kaW5nOiAlcyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwgZ3N0X2VsZW1l
bnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCiAgICAgICAgIC8vIERvIG5vdGhpbmcgaWYg
b24gRU9TIGFuZCBzdGF0ZSBjaGFuZ2VkIHRvIFJFQURZIHRvIGF2b2lkIHJlY3JlYXRpbmcgdGhl
IHBsYXllcgogICAgICAgICAvLyBvbiBIVE1MTWVkaWFFbGVtZW50IGFuZCBwcm9wZXJseSBnZW5l
cmF0ZSB0aGUgdmlkZW8gJ2VuZGVkJyBldmVudC4KQEAgLTEzOTYsNyArMTM5Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICBjYXNl
IEdTVF9TVEFURV9QTEFZSU5HOgogICAgICAgICAgICAgaWYgKG1fYnVmZmVyaW5nKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fYnVmZmVyaW5nUGVyY2VudGFnZSA9PSAxMDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltCdWZmZXJpbmddIENvbXBsZXRlLiIpOwor
ICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoIltCdWZmZXJpbmddIENvbXBsZXRlLiIpOwog
ICAgICAgICAgICAgICAgICAgICBtX2J1ZmZlcmluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAg
ICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gbV9kb3dubG9hZEZpbmlzaGVkID8gTWVkaWFQ
bGF5ZXI6OklkbGUgOiBNZWRpYVBsYXllcjo6TG9hZGluZzsKQEAgLTE0MjcsMTQgKzE0MjcsMTQg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChkaWRCdWZmZXJpbmcgJiYgIW1fYnVmZmVyaW5n
ICYmICFtX3BhdXNlZCAmJiBtX3BsYXliYWNrUmF0ZSkgewotICAgICAgICAgICAgICAgIExPR19N
RURJQV9NRVNTQUdFKCJbQnVmZmVyaW5nXSBSZXN0YXJ0aW5nIHBsYXliYWNrLiIpOworICAgICAg
ICAgICAgICAgIEdTVF9ERUJVRygiW0J1ZmZlcmluZ10gUmVzdGFydGluZyBwbGF5YmFjay4iKTsK
ICAgICAgICAgICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUExB
WUlORykgewogICAgICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKIAogICAgICAgICAgICAgaWYg
KChtX2J1ZmZlcmluZyAmJiAhaXNMaXZlU3RyZWFtKCkpIHx8ICFtX3BsYXliYWNrUmF0ZSkgewot
ICAgICAgICAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbQnVmZmVyaW5nXSBQYXVzaW5nIHN0
cmVhbSBmb3IgYnVmZmVyaW5nLiIpOworICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiW0J1ZmZl
cmluZ10gUGF1c2luZyBzdHJlYW0gZm9yIGJ1ZmZlcmluZy4iKTsKICAgICAgICAgICAgICAgICBj
aGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UKQEAgLTE0NDIsMjEgKzE0NDIsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAKICAgICAgICAgaWYgKG1fcmVxdWVzdGVkU3Rh
dGUgPT0gR1NUX1NUQVRFX1BBVVNFRCAmJiBzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7CiAg
ICAgICAgICAgICBzaG91bGRVcGRhdGVQbGF5YmFja1N0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAg
IExPR19NRURJQV9NRVNTQUdFKCJSZXF1ZXN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIHdhcyBjb21w
bGV0ZWQiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSkpOworICAgICAgICAgICAg
R1NUX0RFQlVHKCJSZXF1ZXN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIHdhcyBjb21wbGV0ZWQiLCBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSkpOwogICAgICAgICB9CiAKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9BU1lOQzoKLSAgICAgICAg
TE9HX01FRElBX01FU1NBR0UoIkFzeW5jOiBTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwgZ3N0X2Vs
ZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShw
ZW5kaW5nKSk7CisgICAgICAgIEdTVF9ERUJVRygiQXN5bmM6IFN0YXRlOiAlcywgcGVuZGluZzog
JXMiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKHBlbmRpbmcpKTsKICAgICAgICAgLy8gQ2hhbmdlIGluIHByb2dyZXNzLgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRToKLSAgICAgICAg
TE9HX01FRElBX01FU1NBR0UoIkZhaWx1cmU6IFN0YXRlOiAlcywgcGVuZGluZzogJXMiLCBnc3Rf
ZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1l
KHBlbmRpbmcpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJGYWlsdXJlOiBTdGF0ZTogJXMsIHBlbmRp
bmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIC8vIENoYW5nZSBmYWlsZWQKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OT19QUkVST0xMOgotICAgICAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiTm8gcHJlcm9sbDogU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIs
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0
X25hbWUocGVuZGluZykpOworICAgICAgICBHU1RfREVCVUcoIk5vIHByZXJvbGw6IFN0YXRlOiAl
cywgcGVuZGluZzogJXMiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9l
bGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKIAogICAgICAgICAvLyBMaXZlIHBpcGVs
aW5lcyBnbyBpbiBQQVVTRUQgd2l0aG91dCBwcmVyb2xsaW5nLgogICAgICAgICBtX2lzU3RyZWFt
aW5nID0gdHJ1ZTsKQEAgLTE0NzYsNyArMTQ3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpMb2FkaW5nOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiRWxzZSA6ICVkIiwgZ2V0U3RhdGVSZXN1bHQpOworICAgICAgICBH
U1RfREVCVUcoIkVsc2UgOiAlZCIsIGdldFN0YXRlUmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0xNDg2LDIyICsxNDg2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICBtX3BsYXllci0+cGxheWJhY2tTdGF0ZUNo
YW5nZWQoKTsKIAogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpIHsK
LSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIk5ldHdvcmsgU3RhdGUgQ2hhbmdlZCBmcm9tICV1
IHRvICV1Iiwgb2xkTmV0d29ya1N0YXRlLCBtX25ldHdvcmtTdGF0ZSk7CisgICAgICAgIEdTVF9E
RUJVRygiTmV0d29yayBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8gJXUiLCBvbGROZXR3b3JrU3Rh
dGUsIG1fbmV0d29ya1N0YXRlKTsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5n
ZWQoKTsKICAgICB9CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBvbGRSZWFkeVN0YXRlKSB7Ci0g
ICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJSZWFkeSBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8g
JXUiLCBvbGRSZWFkeVN0YXRlLCBtX3JlYWR5U3RhdGUpOworICAgICAgICBHU1RfREVCVUcoIlJl
YWR5IFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsIG9sZFJlYWR5U3RhdGUsIG1fcmVhZHlT
dGF0ZSk7CiAgICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KIAog
ICAgIGlmIChnZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MgJiYgc3Rh
dGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkgewogICAgICAgICB1cGRhdGVQbGF5YmFja1JhdGUoKTsK
ICAgICAgICAgaWYgKG1fc2Vla0lzUGVuZGluZykgewotICAgICAgICAgICAgTE9HX01FRElBX01F
U1NBR0UoIltTZWVrXSBjb21taXR0aW5nIHBlbmRpbmcgc2VlayB0byAlZiIsIG1fc2Vla1RpbWUp
OworICAgICAgICAgICAgR1NUX0RFQlVHKCJbU2Vla10gY29tbWl0dGluZyBwZW5kaW5nIHNlZWsg
dG8gJWYiLCBtX3NlZWtUaW1lKTsKICAgICAgICAgICAgIG1fc2Vla0lzUGVuZGluZyA9IGZhbHNl
OwogICAgICAgICAgICAgbV9zZWVraW5nID0gZG9TZWVrKHRvR3N0Q2xvY2tUaW1lKG1fc2Vla1Rp
bWUpLCBtX3BsYXllci0+cmF0ZSgpLCBzdGF0aWNfY2FzdDxHc3RTZWVrRmxhZ3M+KEdTVF9TRUVL
X0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0FDQ1VSQVRFKSk7CiAgICAgICAgICAgICBpZiAo
IW1fc2Vla2luZykKLSAgICAgICAgICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHNl
ZWtpbmcgdG8gJWYgZmFpbGVkIiwgbV9zZWVrVGltZSk7CisgICAgICAgICAgICAgICAgR1NUX0RF
QlVHKCJbU2Vla10gc2Vla2luZyB0byAlZiBmYWlsZWQiLCBtX3NlZWtUaW1lKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTE1NjgsNyArMTU2OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKIAogICAgICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CiAg
ICAgICAgIGlmIChzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7Ci0gICAgICAg
ICAgICBJTkZPX01FRElBX01FU1NBR0UoIk5ldyBtZWRpYSB1cmw6ICVzIiwgbmV3VXJsLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgR1NUX0lORk8oIk5ldyBtZWRpYSB1cmw6
ICVzIiwgbmV3VXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICAvLyBS
ZXNldCBwbGF5ZXIgc3RhdGVzLgogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBs
YXllcjo6TG9hZGluZzsKQEAgLTE1OTAsNyArMTU5MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBJTkZPX01F
RElBX01FU1NBR0UoIk5vdCBhbGxvd2VkIHRvIGxvYWQgbmV3IG1lZGlhIGxvY2F0aW9uOiAlcyIs
IG5ld1VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEdTVF9JTkZPKCJO
b3QgYWxsb3dlZCB0byBsb2FkIG5ldyBtZWRpYSBsb2NhdGlvbjogJXMiLCBuZXdVcmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogICAgIG1fbWVkaWFMb2NhdGlvbkN1cnJlbnRJbmRl
eC0tOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MTksMTEgKzE4MTksMTEgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldERvd25sb2FkQnVmZmVyaW5nKCkKIAogICAgIGJv
b2wgc2hvdWxkRG93bmxvYWQgPSAhaXNMaXZlU3RyZWFtKCkgJiYgbV9wcmVsb2FkID09IE1lZGlh
UGxheWVyOjpBdXRvOwogICAgIGlmIChzaG91bGREb3dubG9hZCkgewotICAgICAgICBMT0dfTUVE
SUFfTUVTU0FHRSgiRW5hYmxpbmcgb24tZGlzayBidWZmZXJpbmciKTsKKyAgICAgICAgR1NUX0RF
QlVHKCJFbmFibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwogICAgICAgICBnX29iamVjdF9zZXQo
bV9waXBlbGluZS5nZXQoKSwgImZsYWdzIiwgZmxhZ3MgfCBmbGFnRG93bmxvYWQsIG51bGxwdHIp
OwogICAgICAgICBtX2ZpbGxUaW1lci5zdGFydFJlcGVhdGluZygwLjIpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJEaXNhYmxpbmcgb24tZGlzayBidWZmZXJpbmci
KTsKKyAgICAgICAgR1NUX0RFQlVHKCJEaXNhYmxpbmcgb24tZGlzayBidWZmZXJpbmciKTsKICAg
ICAgICAgZ19vYmplY3Rfc2V0KG1fcGlwZWxpbmUuZ2V0KCksICJmbGFncyIsIGZsYWdzICYgfmZs
YWdEb3dubG9hZCwgbnVsbHB0cik7CiAgICAgICAgIG1fZmlsbFRpbWVyLnN0b3AoKTsKICAgICB9
CkBAIC0xODQ3LDcgKzE4NDcsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygpCiB7CiAgICAgbV9hdXRvQXVkaW9TaW5rID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgMCk7CiAgICAgaWYgKCFtX2F1dG9B
dWRpb1NpbmspIHsKLSAgICAgICAgV0FSTl9NRURJQV9NRVNTQUdFKCJHU3RyZWFtZXIncyBhdXRv
YXVkaW9zaW5rIG5vdCBmb3VuZC4gUGxlYXNlIGNoZWNrIHlvdXIgZ3N0LXBsdWdpbnMtZ29vZCBp
bnN0YWxsYXRpb24iKTsKKyAgICAgICAgR1NUX1dBUk5JTkcoIkdTdHJlYW1lcidzIGF1dG9hdWRp
b3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3QtcGx1Z2lucy1nb29kIGluc3Rh
bGxhdGlvbiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE4NzAsNyAr
MTg3MCw3IEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
QXVkaW9TaW5rKCkKICAgICBpZiAobV9wcmVzZXJ2ZXNQaXRjaCkgewogICAgICAgICBHc3RFbGVt
ZW50KiBzY2FsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgic2NhbGV0ZW1wbyIsIG51bGxw
dHIpOwogICAgICAgICBpZiAoIXNjYWxlKSB7Ci0gICAgICAgICAgICBXQVJOX01FRElBX01FU1NB
R0UoIkZhaWxlZCB0byBjcmVhdGUgc2NhbGV0ZW1wbyIpOworICAgICAgICAgICAgR1NUX1dBUk5J
TkcoIkZhaWxlZCB0byBjcmVhdGUgc2NhbGV0ZW1wbyIpOwogICAgICAgICAgICAgcmV0dXJuIG1f
YXV0b0F1ZGlvU2luay5nZXQoKTsKICAgICAgICAgfQogCkBAIC0xODg4LDcgKzE4ODgsNyBAQCBH
c3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygp
CiAgICAgICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihhdWRpb1NpbmtCaW4pLCBjb252ZXJ0
LCByZXNhbXBsZSwgbV9hdXRvQXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKIAogICAgICAgICBp
ZiAoIWdzdF9lbGVtZW50X2xpbmtfbWFueShzY2FsZSwgY29udmVydCwgcmVzYW1wbGUsIG1fYXV0
b0F1ZGlvU2luay5nZXQoKSwgbnVsbHB0cikpIHsKLSAgICAgICAgICAgIFdBUk5fTUVESUFfTUVT
U0FHRSgiRmFpbGVkIHRvIGxpbmsgYXVkaW8gc2luayBlbGVtZW50cyIpOworICAgICAgICAgICAg
R1NUX1dBUk5JTkcoIkZhaWxlZCB0byBsaW5rIGF1ZGlvIHNpbmsgZWxlbWVudHMiKTsKICAgICAg
ICAgICAgIGdzdF9vYmplY3RfdW5yZWYoYXVkaW9TaW5rQmluKTsKICAgICAgICAgICAgIHJldHVy
biBtX2F1dG9BdWRpb1NpbmsuZ2V0KCk7CiAgICAgICAgIH0KQEAgLTE5NzIsNyArMTk3Miw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAg
ICAgICAgR3N0RWxlbWVudCogc2NhbGUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInNjYWxl
dGVtcG8iLCAwKTsKIAogICAgICAgICBpZiAoIXNjYWxlKQotICAgICAgICAgICAgV0FSTl9NRURJ
QV9NRVNTQUdFKCJGYWlsZWQgdG8gY3JlYXRlIHNjYWxldGVtcG8iKTsKKyAgICAgICAgICAgIEdT
VF9XQVJOSU5HKCJGYWlsZWQgdG8gY3JlYXRlIHNjYWxldGVtcG8iKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGlwZWxpbmUuZ2V0KCksICJhdWRpby1maWx0ZXIi
LCBzY2FsZSwgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGVkNTY4YWMuLmE0MjYyNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
QEAgLTMwNSw4ICszMDUsOCBAQCBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6bmF0dXJhbFNpemUoKSBjb25zdAogICAgIH0KICNlbmRpZgogCi0gICAgTE9HX01FRElB
X01FU1NBR0UoIk9yaWdpbmFsIHZpZGVvIHNpemU6ICVkeCVkIiwgb3JpZ2luYWxTaXplLndpZHRo
KCksIG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSk7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIlBpeGVs
IGFzcGVjdCByYXRpbzogJWQvJWQiLCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFz
cGVjdFJhdGlvRGVub21pbmF0b3IpOworICAgIEdTVF9ERUJVRygiT3JpZ2luYWwgdmlkZW8gc2l6
ZTogJWR4JWQiLCBvcmlnaW5hbFNpemUud2lkdGgoKSwgb3JpZ2luYWxTaXplLmhlaWdodCgpKTsK
KyAgICBHU1RfREVCVUcoIlBpeGVsIGFzcGVjdCByYXRpbzogJWQvJWQiLCBwaXhlbEFzcGVjdFJh
dGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IpOwogCiAgICAgLy8gQ2Fs
Y3VsYXRlIERBUiBiYXNlZCBvbiBQQVIgYW5kIHZpZGVvIHNpemUuCiAgICAgaW50IGRpc3BsYXlX
aWR0aCA9IG9yaWdpbmFsU2l6ZS53aWR0aCgpICogcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvcjsK
QEAgLTMyMCwyMCArMzIwLDIwIEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAgICAgLy8gQXBwbHkgREFSIHRvIG9yaWdpbmFs
IHZpZGVvIHNpemUuIFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgaW4geHZpbWFnZXNpbmsn
cyBzZXRjYXBzIGZ1bmN0aW9uLgogICAgIGd1aW50NjQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwog
ICAgIGlmICghKG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSAlIGRpc3BsYXlIZWlnaHQpKSB7Ci0gICAg
ICAgIExPR19NRURJQV9NRVNTQUdFKCJLZWVwaW5nIHZpZGVvIG9yaWdpbmFsIGhlaWdodCIpOwor
ICAgICAgICBHU1RfREVCVUcoIktlZXBpbmcgdmlkZW8gb3JpZ2luYWwgaGVpZ2h0Iik7CiAgICAg
ICAgIHdpZHRoID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludChvcmlnaW5hbFNpemUuaGVpZ2h0
KCksIGRpc3BsYXlXaWR0aCwgZGlzcGxheUhlaWdodCk7CiAgICAgICAgIGhlaWdodCA9IHN0YXRp
Y19jYXN0PGd1aW50NjQ+KG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSk7CiAgICAgfSBlbHNlIGlmICgh
KG9yaWdpbmFsU2l6ZS53aWR0aCgpICUgZGlzcGxheVdpZHRoKSkgewotICAgICAgICBMT0dfTUVE
SUFfTUVTU0FHRSgiS2VlcGluZyB2aWRlbyBvcmlnaW5hbCB3aWR0aCIpOworICAgICAgICBHU1Rf
REVCVUcoIktlZXBpbmcgdmlkZW8gb3JpZ2luYWwgd2lkdGgiKTsKICAgICAgICAgaGVpZ2h0ID0g
Z3N0X3V0aWxfdWludDY0X3NjYWxlX2ludChvcmlnaW5hbFNpemUud2lkdGgoKSwgZGlzcGxheUhl
aWdodCwgZGlzcGxheVdpZHRoKTsKICAgICAgICAgd2lkdGggPSBzdGF0aWNfY2FzdDxndWludDY0
PihvcmlnaW5hbFNpemUud2lkdGgoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTE9HX01FRElB
X01FU1NBR0UoIkFwcHJveGltYXRpbmcgd2hpbGUga2VlcGluZyBvcmlnaW5hbCB2aWRlbyBoZWln
aHQiKTsKKyAgICAgICAgR1NUX0RFQlVHKCJBcHByb3hpbWF0aW5nIHdoaWxlIGtlZXBpbmcgb3Jp
Z2luYWwgdmlkZW8gaGVpZ2h0Iik7CiAgICAgICAgIHdpZHRoID0gZ3N0X3V0aWxfdWludDY0X3Nj
YWxlX2ludChvcmlnaW5hbFNpemUuaGVpZ2h0KCksIGRpc3BsYXlXaWR0aCwgZGlzcGxheUhlaWdo
dCk7CiAgICAgICAgIGhlaWdodCA9IHN0YXRpY19jYXN0PGd1aW50NjQ+KG9yaWdpbmFsU2l6ZS5o
ZWlnaHQoKSk7CiAgICAgfQogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIk5hdHVyYWwgc2l6ZTog
JSIgR19HVUlOVDY0X0ZPUk1BVCAieCUiIEdfR1VJTlQ2NF9GT1JNQVQsIHdpZHRoLCBoZWlnaHQp
OworICAgIEdTVF9ERUJVRygiTmF0dXJhbCBzaXplOiAlIiBHX0dVSU5UNjRfRk9STUFUICJ4JSIg
R19HVUlOVDY0X0ZPUk1BVCwgd2lkdGgsIGhlaWdodCk7CiAgICAgbV92aWRlb1NpemUgPSBGbG9h
dFNpemUoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIHN0YXRpY19jYXN0PGludD4oaGVpZ2h0KSk7
CiAgICAgcmV0dXJuIG1fdmlkZW9TaXplOwogfQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKICAg
ICBpZiAoIW1fdm9sdW1lRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX01FRElB
X01FU1NBR0UoIlNldHRpbmcgdm9sdW1lOiAlZiIsIHZvbHVtZSk7CisgICAgR1NUX0RFQlVHKCJT
ZXR0aW5nIHZvbHVtZTogJWYiLCB2b2x1bWUpOwogICAgIGdzdF9zdHJlYW1fdm9sdW1lX3NldF92
b2x1bWUobV92b2x1bWVFbGVtZW50LmdldCgpLCBHU1RfU1RSRUFNX1ZPTFVNRV9GT1JNQVRfQ1VC
SUMsIHN0YXRpY19jYXN0PGRvdWJsZT4odm9sdW1lKSk7CiB9CiAKQEAgLTM3Miw3ICszNzIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mVm9s
dW1lQ2hhbmdlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dm9sdW1l
Q2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqIHBsYXllcikK
IHsKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIG1fdm9sdW1lRWxlbWVudCByZWNlaXZlcyB0
aGUgbm90aWZ5Ojp2b2x1bWUgc2lnbmFsLgotICAgIExPR19NRURJQV9NRVNTQUdFKCJWb2x1bWUg
Y2hhbmdlZCB0bzogJWYiLCBwbGF5ZXItPnZvbHVtZSgpKTsKKyAgICBHU1RfREVCVUcoIlZvbHVt
ZSBjaGFuZ2VkIHRvOiAlZiIsIHBsYXllci0+dm9sdW1lKCkpOwogCiAgICAgcGxheWVyLT5tX25v
dGlmaWVyLm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpWb2x1bWVDaGFuZ2VkLCBbcGxh
eWVyXSB7IHBsYXllci0+bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFuZ2UoKTsgfSk7CiB9CkBAIC01
NDksNyArNTQ5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmln
Z2VyUmVwYWludChHc3RTYW1wbGUqIHNhbXBsZSkKICAgICB9CiAKICAgICBpZiAodHJpZ2dlclJl
c2l6ZSkgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiRmlyc3Qgc2FtcGxlIHJlYWNoZWQg
dGhlIHNpbmssIHRyaWdnZXJpbmcgdmlkZW8gZGltZW5zaW9ucyB1cGRhdGUiKTsKKyAgICAgICAg
R1NUX0RFQlVHKCJGaXJzdCBzYW1wbGUgcmVhY2hlZCB0aGUgc2luaywgdHJpZ2dlcmluZyB2aWRl
byBkaW1lbnNpb25zIHVwZGF0ZSIpOwogICAgICAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsK
ICAgICB9CiAKQEAgLTgxMiw3ICs4MTIsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmtHTCgpCiAgICAgR3N0RWxlbWVudCogY29s
b3Jjb252ZXJ0ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJnbGNvbG9yY29udmVydCIsIG51
bGxwdHIpOwogCiAgICAgaWYgKCF1cGxvYWQgfHwgIWNvbG9yY29udmVydCkgewotICAgICAgICBX
QVJOX01FRElBX01FU1NBR0UoIkZhaWxlZCB0byBjcmVhdGUgR3N0R0wgZWxlbWVudHMiKTsKKyAg
ICAgICAgR1NUX1dBUk5JTkcoIkZhaWxlZCB0byBjcmVhdGUgR3N0R0wgZWxlbWVudHMiKTsKICAg
ICAgICAgZ3N0X29iamVjdF91bnJlZih2aWRlb1NpbmspOwogCiAgICAgICAgIGlmICh1cGxvYWQp
CkBAIC04NDEsNyArODQxLDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rR0woKQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGFw
cHNpbmssICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSyhuZXdTYW1wbGVDYWxsYmFjayksIHRoaXMp
OwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmssICJuZXctcHJlcm9sbCIsIEdfQ0FM
TEJBQ0sobmV3UHJlcm9sbENhbGxiYWNrKSwgdGhpcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
V0FSTl9NRURJQV9NRVNTQUdFKCJGYWlsZWQgdG8gbGluayBHc3RHTCBlbGVtZW50cyIpOworICAg
ICAgICBHU1RfV0FSTklORygiRmFpbGVkIHRvIGxpbmsgR3N0R0wgZWxlbWVudHMiKTsKICAgICAg
ICAgZ3N0X29iamVjdF91bnJlZih2aWRlb1NpbmspOwogICAgICAgICB2aWRlb1NpbmsgPSBudWxs
cHRyOwogICAgIH0KQEAgLTg5NywxMiArODk3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6c2V0U3RyZWFtVm9sdW1lRWxlbWVudChHc3RTdHJlYW1Wb2x1bWUqIHZv
CiAgICAgLy8gV2UgZG9uJ3Qgc2V0IHRoZSBpbml0aWFsIHZvbHVtZSBiZWNhdXNlIHdlIHRydXN0
IHRoZSBzaW5rIHRvIGtlZXAgaXQgZm9yIHVzLiBTZWUKICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTc0IGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAg
IGlmICghbV9wbGF5ZXItPnBsYXRmb3JtVm9sdW1lQ29uZmlndXJhdGlvblJlcXVpcmVkKCkpIHsK
LSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlNldHRpbmcgc3RyZWFtIHZvbHVtZSB0byAlZiIs
IG1fcGxheWVyLT52b2x1bWUoKSk7CisgICAgICAgIEdTVF9ERUJVRygiU2V0dGluZyBzdHJlYW0g
dm9sdW1lIHRvICVmIiwgbV9wbGF5ZXItPnZvbHVtZSgpKTsKICAgICAgICAgZ19vYmplY3Rfc2V0
KG1fdm9sdW1lRWxlbWVudC5nZXQoKSwgInZvbHVtZSIsIG1fcGxheWVyLT52b2x1bWUoKSwgTlVM
TCk7CiAgICAgfSBlbHNlCi0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJOb3Qgc2V0dGluZyBz
dHJlYW0gdm9sdW1lLCB0cnVzdGluZyBzeXN0ZW0gb25lIik7CisgICAgICAgIEdTVF9ERUJVRygi
Tm90IHNldHRpbmcgc3RyZWFtIHZvbHVtZSwgdHJ1c3Rpbmcgc3lzdGVtIG9uZSIpOwogCi0gICAg
TE9HX01FRElBX01FU1NBR0UoIlNldHRpbmcgc3RyZWFtIG11dGVkICVkIiwgIG1fcGxheWVyLT5t
dXRlZCgpKTsKKyAgICBHU1RfREVCVUcoIlNldHRpbmcgc3RyZWFtIG11dGVkICVkIiwgIG1fcGxh
eWVyLT5tdXRlZCgpKTsKICAgICBnX29iamVjdF9zZXQobV92b2x1bWVFbGVtZW50LmdldCgpLCAi
bXV0ZSIsIG1fcGxheWVyLT5tdXRlZCgpLCBOVUxMKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChtX3ZvbHVtZUVsZW1lbnQuZ2V0KCksICJub3RpZnk6OnZvbHVtZSIsIEdfQ0FMTEJB
Q0sodm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyT3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IuY3BwCmluZGV4IGJhNzJjNTQuLmE1NzM1ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3Iu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyKE1lZGlhUGxheWVyKiBwbGF5CiAKIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cigp
CiB7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIkRlc3Ryb3lpbmciKTsKKyAgICBHU1RfREVCVUco
IkRlc3Ryb3lpbmciKTsKIAogICAgIGlmIChoYXNBdWRpbygpKQogICAgICAgICBtX2F1ZGlvVHJh
Y2stPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKQEAgLTYyLDcgKzYyLDcgQEAgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyT3dyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyKCkKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnBsYXkoKQogewotICAgIExPR19N
RURJQV9NRVNTQUdFKCJQbGF5Iik7CisgICAgR1NUX0RFQlVHKCJQbGF5Iik7CiAKICAgICBpZiAo
IW1fc3RyZWFtUHJpdmF0ZSB8fCAhbV9zdHJlYW1Qcml2YXRlLT5hY3RpdmUoKSkgewogICAgICAg
ICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpwbGF5KCkKIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnBhdXNlKCkKIHsKLSAgICBMT0dfTUVESUFf
TUVTU0FHRSgiUGF1c2UiKTsKKyAgICBHU1RfREVCVUcoIlBhdXNlIik7CiAgICAgbV9wYXVzZWQg
PSB0cnVlOwogICAgIHN0b3AoKTsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCBmbG9hdCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmN1cnJlbnRUaW1lKCkgY29uc3QKICAgICBpZiAoc3Rh
dGljX2Nhc3Q8R3N0Q2xvY2tUaW1lPihwb3NpdGlvbikgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkK
ICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyBHU1RfU0VD
T05EOwogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIlBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1B
VCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikpOworICAgIEdTVF9ERUJVRygiUG9zaXRpb24gJSIg
R1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKHBvc2l0aW9uKSk7CiAgICAgZ3N0X3F1ZXJ5
X3VucmVmKHF1ZXJ5KTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzgsNyArMTM4LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmxvYWQoTWVkaWFTdHJlYW1Qcml2
YXRlJiBzdHJlYW1Qcml2YXRlKQogICAgIGlmICghbV9hdWRpb1NpbmspCiAgICAgICAgIGNyZWF0
ZUdTVEF1ZGlvU2lua0JpbigpOwogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIkxvYWRpbmcgTWVk
aWFTdHJlYW1Qcml2YXRlICVwIiwgJnN0cmVhbVByaXZhdGUpOworICAgIEdTVF9ERUJVRygiTG9h
ZGluZyBNZWRpYVN0cmVhbVByaXZhdGUgJXAiLCAmc3RyZWFtUHJpdmF0ZSk7CiAKICAgICBtX3N0
cmVhbVByaXZhdGUgPSAmc3RyZWFtUHJpdmF0ZTsKICAgICBpZiAoIW1fc3RyZWFtUHJpdmF0ZS0+
YWN0aXZlKCkpIHsKQEAgLTE5MSwxMSArMTkxLDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyT3dyOjppbnRlcm5hbExvYWQoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIkNvbm5lY3RpbmcgdG8gbGl2ZSBzdHJlYW0sIGRl
c2NyaXB0b3I6ICVwIiwgbV9zdHJlYW1Qcml2YXRlLmdldCgpKTsKKyAgICBHU1RfREVCVUcoIkNv
bm5lY3RpbmcgdG8gbGl2ZSBzdHJlYW0sIGRlc2NyaXB0b3I6ICVwIiwgbV9zdHJlYW1Qcml2YXRl
LmdldCgpKTsKIAogICAgIGZvciAoYXV0byB0cmFjayA6IG1fc3RyZWFtUHJpdmF0ZS0+dHJhY2tz
KCkpIHsKICAgICAgICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBMT0df
TUVESUFfTUVTU0FHRSgiVHJhY2sgJXMgZGlzYWJsZWQiLCB0cmFjay0+bGFiZWwoKS5hc2NpaSgp
LmRhdGEoKSk7CisgICAgICAgICAgICBHU1RfREVCVUcoIlRyYWNrICVzIGRpc2FibGVkIiwgdHJh
Y2stPmxhYmVsKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIApAQCAtMjIyLDcgKzIyMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyT3dyOjppbnRlcm5hbExvYWQoKQogICAgICAgICAgICAgdHJhY2stPmFkZE9ic2VydmVyKCp0
aGlzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6Ok5vbmU6Ci0gICAgICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIkxvYWRpbmcgYSB0cmFj
ayB3aXRoIE5vbmUgdHlwZSIpOworICAgICAgICAgICAgR1NUX1dBUk5JTkcoIkxvYWRpbmcgYSB0
cmFjayB3aXRoIE5vbmUgdHlwZSIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzgsMTEgKzIz
OCwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6c3RvcCgpCiAKICAg
ICBtX3N0b3BwZWQgPSB0cnVlOwogICAgIGlmIChtX2F1ZGlvVHJhY2spIHsKLSAgICAgICAgTE9H
X01FRElBX01FU1NBR0UoIlN0b3A6IGRpc2Nvbm5lY3RpbmcgYXVkaW8iKTsKKyAgICAgICAgR1NU
X0RFQlVHKCJTdG9wOiBkaXNjb25uZWN0aW5nIGF1ZGlvIik7CiAgICAgICAgIGdfb2JqZWN0X3Nl
dChtX2F1ZGlvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIFRSVUUsIG51bGxwdHIpOwogICAg
IH0KICAgICBpZiAobV92aWRlb1RyYWNrKSB7Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJT
dG9wOiBkaXNjb25uZWN0aW5nIHZpZGVvIik7CisgICAgICAgIEdTVF9ERUJVRygiU3RvcDogZGlz
Y29ubmVjdGluZyB2aWRlbyIpOwogICAgICAgICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVy
LmdldCgpLCAiZGlzYWJsZWQiLCBUUlVFLCBudWxscHRyKTsKICAgICB9CiB9CkBAIC0yODYsNyAr
Mjg2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmluaXRpYWxpemVH
U3RyZWFtZXJBbmRHU3RyZWFtZXJEZWJ1Z2dpbmcoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3I6OmNyZWF0ZUdTVEF1ZGlvU2lua0JpbigpCiB7CiAgICAgQVNTRVJUKCFtX2F1
ZGlvU2luayk7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIkNyZWF0aW5nIGF1ZGlvIHNpbmsiKTsK
KyAgICBHU1RfREVCVUcoIkNyZWF0aW5nIGF1ZGlvIHNpbmsiKTsKICAgICAvLyBGSVhNRTogdm9s
dW1lL211dGUgc3VwcG9ydDogaHR0cHM6Ly93ZWJraXQub3JnL2IvMTUzODI4LgogCiAgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVk
aW9zaW5rIiwgMCk7CkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3I6OmNyZWF0ZUdTVEF1ZGlvU2lua0JpbigpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0
cmFjaykKIHsKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiVHJhY2sgZW5kZWQiKTsKKyAgICBHU1Rf
REVCVUcoIlRyYWNrIGVuZGVkIik7CiAKICAgICBpZiAoIW1fc3RyZWFtUHJpdmF0ZSB8fCAhbV9z
dHJlYW1Qcml2YXRlLT5hY3RpdmUoKSkgewogICAgICAgICBzdG9wKCk7CkBAIC0zMTQsMTcgKzMx
NCwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmRlZChN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyT3dyOjp0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
CiB7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIlRyYWNrIG11dGVkIHN0YXRlIGNoYW5nZWQiKTsK
KyAgICBHU1RfREVCVUcoIlRyYWNrIG11dGVkIHN0YXRlIGNoYW5nZWQiKTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikKIHsKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiVHJhY2sgc2V0
dGluZ3MgY2hhbmdlZCIpOworICAgIEdTVF9ERUJVRygiVHJhY2sgc2V0dGluZ3MgY2hhbmdlZCIp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmFibGVk
Q2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCiB7Ci0gICAgTE9HX01FRElBX01FU1NB
R0UoIlRyYWNrIGVuYWJsZWQgY2hhbmdlZCIpOworICAgIEdTVF9ERUJVRygiVHJhY2sgZW5hYmxl
ZCBjaGFuZ2VkIik7CiB9CiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck93cjo6Y3JlYXRlVmlkZW9TaW5rKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyLmNwcAppbmRleCA1Njg0YjljLi43Zjc1OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFn
cywgQXRvbWljU3RyaW5nJgogICAgIFN0cmluZyBsYW5ndWFnZTsKICAgICBpZiAoZ2V0VGFnKHRh
Z3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwgbGFuZ3VhZ2UpKSB7CiAgICAgICAgIGxhbmd1YWdl
ID0gZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgIElORk9fTUVESUFfTUVTU0FHRSgiQ29udmVydGVkIHRyYWNrICVkJ3Mg
bGFuZ3VhZ2UgY29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgR1NUX0lORk8oIkNvbnZlcnRlZCB0cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8g
JXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5n
dWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAgdmFsdWUgPSBsYW5ndWFnZTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1l
LCBTCiB7CiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYgKGdzdF90
YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsK
LSAgICAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRl
eCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOworICAgICAgICBHU1RfSU5GTygiVHJhY2sgJWQg
Z290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUsIHRhZ1ZhbHVlLmdldCgpKTsKICAgICAgICAg
dmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotLSAK
Mi44LjE=
</data>
<flag name="review"
          id="306860"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>