<?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>36654</bug_id>
          
          <creation_ts>2010-03-26 04:23:57 -0700</creation_ts>
          <short_desc>It should be possible to use GStreamer in addition to another media engine</short_desc>
          <delta_ts>2010-03-29 00:31:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>eric.carlson</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204498</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-26 04:23:57 -0700</bug_when>
    <thetext>It doesn&apos;t seem possible currently to have multiple media player private implementations because they all define the &quot;same&quot; MediaPlayerPrivate class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204499</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-26 04:26:28 -0700</bug_when>
    <thetext>I am experimenting with the GStreamer backend on the mac port and I stumbled upon this ;)

In file included from /Users/phil/gst/jhbuild/build/WebKit/WebCore/platform/graphics/MediaPlayer.cpp:46:
/Users/phil/gst/jhbuild/build/WebKit/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:52: error: redefinition of &apos;class WebCore::MediaPlayerPrivate&apos;
/Users/phil/gst/jhbuild/build/WebKit/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.h:58: error: previous definition of &apos;class WebCore::MediaPlayerPrivate&apos;


So for now I had to deactivate build of the MediaPlayerPrivateQTKit. It&apos;d be great to figure out a solution for this so we could eventually have 2 backends and let the MediaPlayer correctly decide which one to use depending on the media to play.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204529</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-26 05:59:39 -0700</bug_when>
    <thetext>I guess I can rename MediaPlayerPrivate in the gstreamer backend to MediaPlayerPrivateGStreamer :)

Renaming would be needed in other implementations as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204532</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-26 06:09:55 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I guess I can rename MediaPlayerPrivate in the gstreamer backend to
&gt; MediaPlayerPrivateGStreamer :)
&gt; 
&gt; Renaming would be needed in other implementations as well.

MediaPlayerPrivate:: is used in MediaPlayer::installedMediaEngines :(

Eric, what do you think we could do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204574</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 08:08:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; I guess I can rename MediaPlayerPrivate in the gstreamer backend to
&gt; &gt; MediaPlayerPrivateGStreamer :)
&gt; &gt; 
&gt; &gt; Renaming would be needed in other implementations as well.
&gt; 
&gt; MediaPlayerPrivate:: is used in MediaPlayer::installedMediaEngines :(
&gt; 
&gt; Eric, what do you think we could do?

I agree that the QTKit implementation class name should change, I will do that. 

Can&apos;t you do something like this in any case?

#if PLATFORM(MAC)
        MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
        MediaPlayerPrivateGStreamer::registerMediaEngine(addMediaEngine);
#else
        MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204576</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-26 08:14:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; I guess I can rename MediaPlayerPrivate in the gstreamer backend to
&gt; &gt; &gt; MediaPlayerPrivateGStreamer :)
&gt; &gt; &gt; 
&gt; &gt; &gt; Renaming would be needed in other implementations as well.
&gt; &gt; 
&gt; &gt; MediaPlayerPrivate:: is used in MediaPlayer::installedMediaEngines :(
&gt; &gt; 
&gt; &gt; Eric, what do you think we could do?
&gt; 
&gt; I agree that the QTKit implementation class name should change, I will do that. 
&gt; 

Thanks!

&gt; Can&apos;t you do something like this in any case?
&gt; 
&gt; #if PLATFORM(MAC)
&gt;         MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
&gt;         MediaPlayerPrivateGStreamer::registerMediaEngine(addMediaEngine);
&gt; #else
&gt;         MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
&gt; #endif

Hmm but then the gst player won&apos;t be compiled for the gtk port. Could we rather add a new feature macro and use it like

#if ENABLE(GSTREAMER)
....
#endif

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204577</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-26 08:19:28 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; I guess I can rename MediaPlayerPrivate in the gstreamer backend to
&gt; &gt; &gt; &gt; MediaPlayerPrivateGStreamer :)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Renaming would be needed in other implementations as well.
&gt; &gt; &gt; 
&gt; &gt; &gt; MediaPlayerPrivate:: is used in MediaPlayer::installedMediaEngines :(
&gt; &gt; &gt; 
&gt; &gt; &gt; Eric, what do you think we could do?
&gt; &gt; 
&gt; &gt; I agree that the QTKit implementation class name should change, I will do that. 
&gt; &gt; 
&gt; 
&gt; Thanks!
&gt; 
&gt; &gt; Can&apos;t you do something like this in any case?
&gt; &gt; 
&gt; &gt; #if PLATFORM(MAC)
&gt; &gt;         MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
&gt; &gt;         MediaPlayerPrivateGStreamer::registerMediaEngine(addMediaEngine);
&gt; &gt; #else
&gt; &gt;         MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
&gt; &gt; #endif
&gt; 
&gt; Hmm but then the gst player won&apos;t be compiled for the gtk port. Could we rather
&gt; add a new feature macro and use it like
&gt; 
&gt; #if ENABLE(GSTREAMER)
&gt; ....
&gt; #endif
&gt; 

and register the QTKit player for PLATFORM(MAC) || PLATFORM(WIN) ? Maybe it&apos;d make sense to have a macro for this feature as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204581</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 08:23:28 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Can&apos;t you do something like this in any case?
&gt; &gt; 
&gt; &gt; #if PLATFORM(MAC)
&gt; &gt;         MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
&gt; &gt;         MediaPlayerPrivateGStreamer::registerMediaEngine(addMediaEngine);
&gt; &gt; #else
&gt; &gt;         MediaPlayerPrivate::registerMediaEngine(addMediaEngine);
&gt; &gt; #endif
&gt; 
&gt; Hmm but then the gst player won&apos;t be compiled for the gtk port. Could we rather
&gt; add a new feature macro and use it like
&gt; 
&gt; #if ENABLE(GSTREAMER)
&gt; ....
&gt; #endif
&gt; 
This seems reasonable.


(In reply to comment #6)
&gt; and register the QTKit player for PLATFORM(MAC) || PLATFORM(WIN) ? Maybe it&apos;d
&gt; make sense to have a macro for this feature as well.
&gt; 
QTKit is Mac only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204583</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 08:31:04 -0700</bug_when>
    <thetext>Rename bug to more accurately describe its goal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204590</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 08:36:21 -0700</bug_when>
    <thetext>Wrote https://bugs.webkit.org/show_bug.cgi?id=36663 for the QTKit engine class name change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204679</commentid>
    <comment_count>10</comment_count>
      <attachid>51762</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-26 10:59:00 -0700</bug_when>
    <thetext>Created attachment 51762
renamed gstreamer player and added a WTF_USE_GSTREAMER define</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204693</commentid>
    <comment_count>11</comment_count>
      <attachid>51762</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 11:22:21 -0700</bug_when>
    <thetext>Comment on attachment 51762
renamed gstreamer player and added a WTF_USE_GSTREAMER define

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205312</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-29 00:31:08 -0700</bug_when>
    <thetext>Landed in r56707. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51762</attachid>
            <date>2010-03-26 10:59:00 -0700</date>
            <delta_ts>2010-03-26 11:22:20 -0700</delta_ts>
            <desc>renamed gstreamer player and added a WTF_USE_GSTREAMER define</desc>
            <filename>renamed-gstreamer-player-and-added-a-WTFUSEGSTREAM.patch</filename>
            <type>text/plain</type>
            <size>27557</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhMGUwMzE5ZWJjNzExZjNmMGE0OTUyZjk4MmQ5OTIwZGQzNWQ5YTY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI2IE1hciAyMDEwIDE0OjIyOjE0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
cmVuYW1lZCBnc3RyZWFtZXIgcGxheWVyIGFuZCBhZGRlZCBhIFdURl9VU0VfR1NUUkVBTUVSIGRl
ZmluZQoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgODEgKysrKysrKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgICAgICAgICAgfCAgICA3ICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDEzNiArKysrKysrKysrLS0tLS0tLS0tLQog
Li4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgfCAgIDE4
ICsrLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTY2IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZDdlMWFiYS4uMjlkMWNlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NCBAQAorMjAxMC0wMy0yNiAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBHU3Ry
ZWFtZXIgaW4gYWRkaXRpb24gdG8gYW5vdGhlciBtZWRpYSBlbmdpbmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjU0CisKKyAgICAgICAgUmVuYW1l
ZCBnc3RyZWFtZXIgcGxheWVyIGFuZCBhZGRlZCBhIFdURl9VU0VfR1NUUkVBTUVSCisgICAgICAg
IGRlZmluZS4gTWFkZSB0aGUgTWVkaWFQbGF5ZXIgcmVnaXN0ZXIgdGhlIEdTdHJlYW1lciBiYWNr
ZW5kIG9ubHkKKyAgICAgICAgaWYgaXQncyBlbmFibGVkICh0cnVlIGJ5IGRlZmF1bHQgb24gV2Vi
S2l0R1RLKykuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRN
ZWRpYUVuZ2luZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5
ZXJQcml2YXRlTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVy
UHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVBs
YXllclByaXZhdGVWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6bWVk
aWFQbGF5ZXJQcml2YXRlTXV0ZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpt
ZWRpYVBsYXllclByaXZhdGVSZXBhaW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJlcGFyZVRvUGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
ZWVrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3Rh
cnRFbmRQb2ludFRpbWVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjYW5jZWxTZWVrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5kUG9pbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vla2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdHVyYWxTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzVmlkZW8pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYXNBdWRpbyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFZvbHVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZvbHVtZUNoYW5n
ZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnNldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpuZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzQnVmZmVyaW5nU3RhdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1heFRpbWVT
ZWVrYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om1heFRpbWVMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpieXRlc0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWVkaWFMb2NhdGlvbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZFN0
YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpkaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c011dGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bXV0ZUNoYW5nZWRUaW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bXV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2Fk
aW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpyZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0
UHJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNyZWF0ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKwogMjAxMC0wMy0yNiAgSmFubmUgS29z
a2luZW4gIDxqYW5uZS5wLmtvc2tpbmVuQGRpZ2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBMYXN6bG8gR29tYm9zLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNTE3MzBiZC4uMDU1ZWJhMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC02
NCw2ICs2NCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCiB3ZWJjb3JlZ3RrX2NwcGZsYWdz
ICs9IFwKIAktRFdURl9VU0VfU09VUD0xIFwKKwktRFdURl9VU0VfR1NUUkVBTUVSPTEgXAogCS1J
JChzcmNkaXIpL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsgXAogCS1JJChzcmNkaXIpL1dlYkNv
cmUvbG9hZGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdlL2d0ayBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDFmZGMxZTUuLjM4MjA1YjMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xNTksNyAr
MTU5LDE0IEBAIHN0YXRpYyBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5Kj4mIGluc3RhbGxlZE1l
ZGlhRW5naW5lcygpCiAKICAgICBpZiAoIWVuZ2luZXNRdWVyaWVkKSB7CiAgICAgICAgIGVuZ2lu
ZXNRdWVyaWVkID0gdHJ1ZTsKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOwor
I2Vsc2UKKyAgICAgICAgLy8gRklYTUU6IGN1cnJlbnRseSBhbGwgdGhlIE1lZGlhRW5naW5lcyBh
cmUgbmFtZWQKKyAgICAgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlLiBUaGlzIGNvZGUgd2lsbCBu
ZWVkIGFuIHVwZGF0ZSB3aGVuIGJ1ZworICAgICAgICAvLyAzNjY2MyBpcyBhZHJlc3NlZC4KICAg
ICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlOjpyZWdpc3Rlck1lZGlhRW5naW5lKGFkZE1lZGlhRW5n
aW5lKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIHJlZ2lzdGVyIGFkZGl0aW9uYWwgZW5naW5lcyBo
ZXJlCiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZmY0
YTk5Mi4uNTNhMDEyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC05Myw3ICs5Myw3IEBAIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFj
ayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvCiAgICAgR093blB0cjxHRXJy
b3I+IGVycjsKICAgICBHT3duUHRyPGdjaGFyPiBkZWJ1ZzsKICAgICBNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlIGVycm9yOwotICAgIE1lZGlhUGxheWVyUHJpdmF0ZSogbXAgPSByZWludGVycHJl
dF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZSo+KGRhdGEpOworICAgIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lciogbXAgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcio+KGRhdGEpOwogICAgIGJvb2wgaXNzdWVFcnJvciA9IHRydWU7CiAgICAgYm9vbCBhdHRl
bXB0TmV4dExvY2F0aW9uID0gZmFsc2U7CiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtcC0+
cGlwZWxpbmUoKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZh
dGVNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwbwog
CiB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpv
YmplY3QsIEdQYXJhbVNwZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQogewotICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZSogbXAgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZSo+KGRh
dGEpOworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogbXAgPSByZWludGVycHJldF9j
YXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcio+KGRhdGEpOwogICAgIEdPd25QdHI8R3N0
RWxlbWVudD4gZWxlbWVudDsKIAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291
cmNlIiwgJmVsZW1lbnQub3V0UHRyKCksIE5VTEwpOwpAQCAtMTgwLDE0ICsxODAsMTQgQEAgdm9p
ZCBtZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqb2JqZWN0
LCBHUGFyYW1TcGVjICpwc3BlYywKIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlVm9sdW1lQ2hhbmdl
ZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNwZWMgKnBzcGVjLCBncG9pbnRlciBk
YXRhKQogewogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gcGxheWJpbiByZWNlaXZlcyB0aGUg
bm90aWZ5Ojp2b2x1bWUgc2lnbmFsLgotICAgIE1lZGlhUGxheWVyUHJpdmF0ZSogbXAgPSByZWlu
dGVycHJldF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZSo+KGRhdGEpOworICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogbXAgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcio+KGRhdGEpOwogICAgIG1wLT52b2x1bWVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQg
bWVkaWFQbGF5ZXJQcml2YXRlTXV0ZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBH
UGFyYW1TcGVjICpwc3BlYywgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICAvLyBUaGlzIGlzIGNhbGxl
ZCB3aGVuIHBsYXliaW4gcmVjZWl2ZXMgdGhlIG5vdGlmeTo6bXV0ZSBzaWduYWwuCi0gICAgTWVk
aWFQbGF5ZXJQcml2YXRlKiBtcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRl
Kj4oZGF0YSk7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBtcCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKj4oZGF0YSk7CiAgICAgbXAtPm11
dGVDaGFuZ2VkKCk7CiB9CiAKQEAgLTIxOSwxOSArMjE5LDE5IEBAIHN0YXRpYyBmbG9hdCBwbGF5
YmFja1Bvc2l0aW9uKEdzdEVsZW1lbnQqIHBsYXliaW4pCiB9CiAKIAotdm9pZCBtZWRpYVBsYXll
clByaXZhdGVSZXBhaW50Q2FsbGJhY2soV2ViS2l0VmlkZW9TaW5rKiwgR3N0QnVmZmVyICpidWZm
ZXIsIE1lZGlhUGxheWVyUHJpdmF0ZSogcGxheWVyUHJpdmF0ZSkKK3ZvaWQgbWVkaWFQbGF5ZXJQ
cml2YXRlUmVwYWludENhbGxiYWNrKFdlYktpdFZpZGVvU2luayosIEdzdEJ1ZmZlciAqYnVmZmVy
LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllclByaXZhdGUpCiB7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChHU1RfSVNfQlVGRkVSKGJ1ZmZlcikpOwogICAgIGdzdF9idWZmZXJfcmVw
bGFjZSgmcGxheWVyUHJpdmF0ZS0+bV9idWZmZXIsIGJ1ZmZlcik7CiAgICAgcGxheWVyUHJpdmF0
ZS0+cmVwYWludCgpOwogfQogCi1NZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6Y3JlYXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCitNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2UqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYVBsYXllclByaXZhdGUocGxheWVy
KTsKKyAgICByZXR1cm4gbmV3IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihwbGF5ZXIpOwog
fQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7
CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1
cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBi
b29sIGRvR3N0SW5pdCgpCiAgICAgcmV0dXJuIGdzdEluaXRpYWxpemVkOwogfQogCi1ib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6aXNBdmFpbGFibGUoKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmlzQXZhaWxhYmxlKCkKIHsKICAgICBpZiAoIWRvR3N0SW5pdCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yNzIsNyArMjcyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGU6OmlzQXZhaWxhYmxlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU1lZGlhUGxheWVyUHJp
dmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCitNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXll
ciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9wbGF5QmluKDApCiAg
ICAgLCBtX3ZpZGVvU2luaygwKQpAQCAtMjk2LDcgKzI5Niw3IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBtX2Vycm9y
T2NjdXJlZChmYWxzZSkKICAgICAsIG1fbWVkaWFEdXJhdGlvbigwKQogICAgICwgbV9zdGFydGVk
QnVmZmVyaW5nKGZhbHNlKQotICAgICwgbV9maWxsVGltZXIodGhpcywgJk1lZGlhUGxheWVyUHJp
dmF0ZTo6ZmlsbFRpbWVyRmlyZWQpCisgICAgLCBtX2ZpbGxUaW1lcih0aGlzLCAmTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCkKICAgICAsIG1fbWF4VGltZUxvYWRl
ZCgwKQogICAgICwgbV9idWZmZXJpbmdQZXJjZW50YWdlKDApCiAgICAgLCBtX3ByZWxvYWQoTWVk
aWFQbGF5ZXI6OkF1dG8pCkBAIC0zMDcsNyArMzA3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpN
ZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICAgICAgY3JlYXRlR1NU
UGxheUJpbigpOwogfQogCi1NZWRpYVBsYXllclByaXZhdGU6On5NZWRpYVBsYXllclByaXZhdGUo
KQorTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyKCkKIHsKICAgICBpZiAobV9maWxsVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9maWxs
VGltZXIuc3RvcCgpOwpAQCAtMzQyLDcgKzM0Miw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZTo6fk1l
ZGlhUGxheWVyUHJpdmF0ZSgpCiAgICAgfQogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4s
ICJ1cmkiLCB1cmwudXRmOCgpLmRhdGEoKSwgTlVMTCk7CiAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBjb21t
aXRMb2FkKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpjb21taXRMb2FkKCkKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb21taXRMb2FkKCkKIHsKICAgICAvLyBH
U3RyZWFtZXIgbmVlZHMgdG8gaGF2ZSB0aGUgcGlwZWxpbmUgc2V0IHRvIGEgcGF1c2VkIHN0YXRl
IHRvCiAgICAgLy8gc3RhcnQgcHJvdmlkaW5nIGFueXRoaW5nIHVzZWZ1bC4KQEAgLTM3NCw3ICsz
NzQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Y29tbWl0TG9hZCgpCiAgICAgfQogfQog
Ci1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBu
ZXdTdGF0ZSkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGlu
ZVN0YXRlKEdzdFN0YXRlIG5ld1N0YXRlKQogewogICAgIEFTU0VSVChuZXdTdGF0ZSA9PSBHU1Rf
U1RBVEVfUExBWUlORyB8fCBuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKTsKIApAQCAtMzkz
LDcgKzM5Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpjaGFuZ2VQaXBlbGluZVN0YXRl
KEdzdFN0YXRlIG5ld1N0YXRlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6cHJlcGFyZVRvUGxheSgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cHJlcGFyZVRvUGxheSgpCiB7CiAgICAgaWYgKG1fZGVsYXlpbmdMb2FkKSB7CiAgICAg
ICAgIG1fZGVsYXlpbmdMb2FkID0gZmFsc2U7CkBAIC00MDEsMTkgKzQwMSwxOSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6cHJlcGFyZVRvUGxheSgpCiAgICAgfQogfQogCi12b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6cGxheSgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cGxheSgpCiB7CiAgICAgaWYgKGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BMQVlJTkcp
KQogICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIlBsYXkiKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OnBhdXNlKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
YXVzZSgpCiB7CiAgICAgaWYgKGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCkp
CiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiUGF1c2UiKTsKIH0KIAotZmxvYXQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpkdXJhdGlvbigpIGNvbnN0CitmbG9hdCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGxheUJpbikKICAgICAg
ICAgcmV0dXJuIDAuMDsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZh
dGU6OmR1cmF0aW9uKCkgY29uc3QKICAgICAvLyBGSVhNRTogaGFuZGxlIDMuMTQuOS41IHByb3Bl
cmx5CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6Y3VycmVudFRpbWUoKSBjb25zdAor
ZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3BsYXlCaW4pCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDU3LDcgKzQ1Nyw3
IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6Y3VycmVudFRpbWUoKSBjb25zdAogCiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrKGZsb2F0IHRpbWUpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2VlayhmbG9hdCB0aW1lKQogewogICAgIC8vIEF2b2lkIHVz
ZWxlc3Mgc2Vla2luZy4KICAgICBpZiAodGltZSA9PSBwbGF5YmFja1Bvc2l0aW9uKG1fcGxheUJp
bikpCkBAIC00ODMsMzMgKzQ4MywzMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2Vlayhm
bG9hdCB0aW1lKQogICAgIH0KIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnN0YXJ0RW5k
UG9pbnRUaW1lcklmTmVlZGVkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
dGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmNhbmNlbFNlZWsoKQordm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbFNlZWsoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjplbmRQb2ludFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFQbGF5ZXJQcml2YXRlPiopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
ZW5kUG9pbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4qKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpw
YXVzZWQoKSBjb25zdAorYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNlZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGF1c2VkOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJp
dmF0ZTo6c2Vla2luZygpIGNvbnN0Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c2Vla2luZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Vla2luZzsKIH0KIAogLy8gUmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgdmlkZW8KLUludFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlOjpuYXR1
cmFsU2l6ZSgpIGNvbnN0CitJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0
dXJhbFNpemUoKSBjb25zdAogewogICAgIGlmICghaGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJu
IEludFNpemUoKTsKQEAgLTU3MSw3ICs1NzEsNyBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0
ZTo6bmF0dXJhbFNpemUoKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQp
OwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aGFzVmlkZW8oKSBjb25zdAorYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhhc1ZpZGVvKCkgY29uc3QKIHsKICAgICBnaW50
IGN1cnJlbnRWaWRlbyA9IC0xOwogICAgIGlmIChtX3BsYXlCaW4pCkBAIC01NzksNyArNTc5LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGU6Omhhc1ZpZGVvKCkgY29uc3QKICAgICByZXR1cm4g
Y3VycmVudFZpZGVvID4gLTE7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpoYXNBdWRp
bygpIGNvbnN0Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzQXVkaW8oKSBj
b25zdAogewogICAgIGdpbnQgY3VycmVudEF1ZGlvID0gLTE7CiAgICAgaWYgKG1fcGxheUJpbikK
QEAgLTU4Nyw3ICs1ODcsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aGFzQXVkaW8oKSBj
b25zdAogICAgIHJldHVybiBjdXJyZW50QXVkaW8gPiAtMTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKIHsKICAgICBpZiAoIW1fcGxheUJp
bikKICAgICAgICAgcmV0dXJuOwpAQCAtNTk1LDIwICs1OTUsMjAgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAgZ19vYmplY3Rfc2V0KG1fcGxh
eUJpbiwgInZvbHVtZSIsIHN0YXRpY19jYXN0PGRvdWJsZT4odm9sdW1lKSwgTlVMTCk7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp2b2x1bWVDaGFuZ2VkVGltZXJGaXJlZChUaW1lcjxN
ZWRpYVBsYXllclByaXZhdGU+KikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2
b2x1bWVDaGFuZ2VkVGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+
KikKIHsKICAgICBkb3VibGUgdm9sdW1lOwogICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4sICJ2
b2x1bWUiLCAmdm9sdW1lLCBOVUxMKTsKICAgICBtX3BsYXllci0+dm9sdW1lQ2hhbmdlZChzdGF0
aWNfY2FzdDxmbG9hdD4odm9sdW1lKSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp2
b2x1bWVDaGFuZ2VkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2b2x1bWVD
aGFuZ2VkKCkKIHsKLSAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IHZvbHVtZUNoYW5nZWRU
aW1lcih0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjp2b2x1bWVDaGFuZ2VkVGltZXJGaXJlZCk7
CisgICAgVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiB2b2x1bWVDaGFuZ2VkVGlt
ZXIodGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dm9sdW1lQ2hhbmdlZFRpbWVy
RmlyZWQpOwogICAgIHZvbHVtZUNoYW5nZWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRSYXRlKGZsb2F0IHJhdGUpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmF0ZShmbG9hdCByYXRlKQogewogICAgIC8vIEF2b2lk
IHVzZWxlc3MgcGxheWJhY2sgcmF0ZSB1cGRhdGUuCiAgICAgaWYgKG1fcGxheWJhY2tSYXRlID09
IHJhdGUpCkBAIC02NjEsMTcgKzY2MSwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0
UmF0ZShmbG9hdCByYXRlKQogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLCAibXV0ZSIs
IG11dGUsIE5VTEwpOwogfQogCi1NZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1lZGlhUGxheWVy
UHJpdmF0ZTo6bmV0d29ya1N0YXRlKCkgY29uc3QKK01lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuZXR3b3JrU3RhdGUoKSBjb25zdAogewogICAg
IHJldHVybiBtX25ldHdvcmtTdGF0ZTsKIH0KIAotTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVk
aWFQbGF5ZXJQcml2YXRlOjpyZWFkeVN0YXRlKCkgY29uc3QKK01lZGlhUGxheWVyOjpSZWFkeVN0
YXRlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRp
YVBsYXllclByaXZhdGU6OmJ1ZmZlcmVkKCkgY29uc3QKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKICAgICBm
bG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7CkBAIC02ODAsNyArNjgwLDcgQEAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGU6OmJ1ZmZlcmVkKCkgY29uc3QKICAg
ICByZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVzc2FnZSogbWVzc2FnZSkKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVzc2Fn
ZSogbWVzc2FnZSkKIHsKICAgICAvLyBUaGlzIGlzIHRoZSBpbW1lZGlhdGUgYnVmZmVyaW5nIHRo
YXQgbmVlZHMgdG8gaGFwcGVuIHNvIHdlIGhhdmUKICAgICAvLyBlbm91Z2ggdG8gcGxheSByaWdo
dCBub3cuCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnByb2Nl
c3NCdWZmZXJpbmdTdGF0cyhHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIH0KIH0KIAotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6OmZpbGxUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0
ZT4qKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKFRp
bWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4qKQogewogICAgIEdzdFF1ZXJ5KiBxdWVy
eSA9IGdzdF9xdWVyeV9uZXdfYnVmZmVyaW5nKEdTVF9GT1JNQVRfUEVSQ0VOVCk7CiAKQEAgLTc1
Nyw3ICs3NTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZmlsbFRpbWVyRmlyZWQoVGlt
ZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiopCiAgICAgdXBkYXRlU3RhdGVzKCk7CiB9CiAKLWZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZTo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKK2Zsb2F0IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIHsKICAgICBp
ZiAobV9lcnJvck9jY3VyZWQpCiAgICAgICAgIHJldHVybiAwLjA7CkBAIC03NzAsNyArNzcwLDcg
QEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogICAg
IHJldHVybiBtYXhUaW1lTG9hZGVkKCk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6
bWF4VGltZUxvYWRlZCgpIGNvbnN0CitmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om1heFRpbWVMb2FkZWQoKSBjb25zdAogewogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKICAgICAg
ICAgcmV0dXJuIDAuMDsKQEAgLTc4Miw3ICs3ODIsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZh
dGU6Om1heFRpbWVMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBsb2FkZWQ7CiB9CiAKLXVuc2ln
bmVkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Ynl0ZXNMb2FkZWQoKSBjb25zdAordW5zaWduZWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpieXRlc0xvYWRlZCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX3BsYXlCaW4pCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzk1LDcgKzc5NSw3IEBAIHVuc2ln
bmVkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Ynl0ZXNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBs
b2FkZWQ7CiB9CiAKLXVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dG90YWxCeXRlcygpIGNv
bnN0Cit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBj
b25zdAogewogICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODExLDcg
KzgxMSw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dG90YWxCeXRlcygpIGNvbnN0
CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmNhbmNl
bExvYWQoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbExvYWQoKQog
ewogICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkaW5nIHx8IG1fbmV0
d29ya1N0YXRlID09IE1lZGlhUGxheWVyOjpMb2FkZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTgy
MCw3ICs4MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Y2FuY2VsTG9hZCgpCiAgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9OVUxMKTsKIH0K
IAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKIHsKICAgICBpZiAoIW1fcGxheUJp
bikKICAgICAgICAgcmV0dXJuOwpAQCAtOTg4LDcgKzk4OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIH0KIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGU6Om1lZGlhTG9jYXRpb25DaGFuZ2VkKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWVkaWFMb2NhdGlvbkNoYW5nZWQoR3N0TWVzc2FnZSog
bWVzc2FnZSkKIHsKICAgICBpZiAobV9tZWRpYUxvY2F0aW9ucykKICAgICAgICAgZ3N0X3N0cnVj
dHVyZV9mcmVlKG1fbWVkaWFMb2NhdGlvbnMpOwpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6Om1lZGlhTG9jYXRpb25DaGFuZ2VkKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCiAgICAgfQogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZE5leHRMb2NhdGlv
bigpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigp
CiB7CiAgICAgaWYgKCFtX21lZGlhTG9jYXRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMDg3LDIzICsxMDg3LDIzIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkTmV4dExv
Y2F0aW9uKCkKIAogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZFN0YXRlQ2hhbmdl
ZCgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZFN0YXRlQ2hhbmdlZCgp
CiB7CiAgICAgdXBkYXRlU3RhdGVzKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpz
aXplQ2hhbmdlZCgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2l6ZUNoYW5n
ZWQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjp0aW1lQ2hhbmdlZCgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGlt
ZUNoYW5nZWQoKQogewogICAgIHVwZGF0ZVN0YXRlcygpOwogICAgIG1fcGxheWVyLT50aW1lQ2hh
bmdlZCgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQoKQogewogICAgIC8vIEVPUyB3YXMgcmVh
Y2hlZCBidXQgaW4gY2FzZSBvZiByZXZlcnNlIHBsYXliYWNrIHRoZSBwb3NpdGlvbiBpcwogICAg
IC8vIG5vdCBhbHdheXMgMC4gU28gdG8gbm90IGNvbmZ1c2UgdGhlIEhUTUxNZWRpYUVsZW1lbnQg
d2UKQEAgLTExMTksNyArMTExOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkaWRFbmQo
KQogICAgIHRpbWVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJh
dGlvbkNoYW5nZWQoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9u
Q2hhbmdlZCgpCiB7CiAgICAgLy8gUmVzZXQgY2FjaGVkIG1lZGlhIGR1cmF0aW9uCiAgICAgbV9t
ZWRpYUR1cmF0aW9uID0gMDsKQEAgLTExNDcsMTIgKzExNDcsMTIgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCgpCiAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdl
ZCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNNdXRpbmcoKSBjb25z
dAorYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzTXV0aW5nKCkgY29u
c3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNl
dE11dGVkKGJvb2wgbXV0ZWQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0
TXV0ZWQoYm9vbCBtdXRlZCkKIHsKICAgICBpZiAoIW1fcGxheUJpbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTE2MCwyMCArMTE2MCwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0TXV0
ZWQoYm9vbCBtdXRlZCkKICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLCAibXV0ZSIsIG11dGVk
LCBOVUxMKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om11dGVDaGFuZ2VkVGltZXJG
aXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+KikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjptdXRlQ2hhbmdlZFRpbWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyPiopCiB7CiAgICAgZ2Jvb2xlYW4gbXV0ZWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1f
cGxheUJpbiwgIm11dGUiLCAmbXV0ZWQsIE5VTEwpOwogICAgIG1fcGxheWVyLT5tdXRlQ2hhbmdl
ZChzdGF0aWNfY2FzdDxib29sPihtdXRlZCkpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6bXV0ZUNoYW5nZWQoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om11dGVD
aGFuZ2VkKCkKIHsKLSAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IG11dGVDaGFuZ2VkVGlt
ZXIodGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZTo6bXV0ZUNoYW5nZWRUaW1lckZpcmVkKTsKKyAg
ICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG11dGVDaGFuZ2VkVGltZXIodGhp
cywgJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bXV0ZUNoYW5nZWRUaW1lckZpcmVkKTsK
ICAgICBtdXRlQ2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJv
cikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IpCiB7CiAgICAgbV9lcnJvck9jY3VyZWQgPSB0cnVl
OwogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBlcnJvcikgewpAQCAtMTE4NiwyMSArMTE4Niwy
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlIGVycm9yKQogICAgIH0KIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6
OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgbV9zaXplID0gc2l6
ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNldFZpc2libGUoYm9vbCB2aXNpYmxl
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFZpc2libGUoYm9vbCB2aXNp
YmxlKQogewogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cmVwYWludCgpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVwYWludCgpCiB7CiAgICAgbV9wbGF5ZXItPnJl
cGFpbnQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7CiAgICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMyMSwxMiArMTMyMSwxMiBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmc+
IG1pbWVUeXBlQ2FjaGUoKQogICAgIHJldHVybiBjYWNoZTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmc+JiB0eXBlcykKIHsKICAgICB0eXBlcyA9IG1pbWVUeXBlQ2FjaGUoKTsKIH0KIAotTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGU6OnN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzKQorTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzKQogewogICAgIGlmICh0eXBlLmlz
TnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Oklz
Tm90U3VwcG9ydGVkOwpAQCAtMTMzNywxNyArMTMzNywxNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgYwogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKLWJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0Citib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBj
b25zdAogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6
c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9h
ZCBwcmVsb2FkKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFByZWxvYWQo
TWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKIHsKICAgICBBU1NFUlQobV9wbGF5QmluKTsK
IApAQCAtMTM2Niw3ICsxMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNldFByZWxv
YWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpjcmVhdGVHU1RQbGF5QmluKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKIHsKICAgICBBU1NFUlQoIW1fcGxheUJpbik7
CiAgICAgbV9wbGF5QmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwbGF5YmluMiIsICJw
bGF5Iik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGFiOGVlMDEuLmRm
OTk3ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00OCwxNCArNDgs
MTQgQEAgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyog
YnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG8KIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlVm9s
dW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqIGVsZW1lbnQsIEdQYXJhbVNwZWMqIHBzcGVjLCBn
cG9pbnRlciBkYXRhKTsKIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlU291cmNlQ2hhbmdlZENhbGxi
YWNrKEdPYmplY3QqIGVsZW1lbnQsIEdQYXJhbVNwZWMqIHBzcGVjLCBncG9pbnRlciBkYXRhKTsK
IAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZSB7CitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgZnJpZW5kIGdib29sZWFuIG1lZGlh
UGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVz
c2FnZSwgZ3BvaW50ZXIgZGF0YSk7Ci0gICAgICAgIGZyaWVuZCB2b2lkIG1lZGlhUGxheWVyUHJp
dmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RCdWZmZXIqIGJ1ZmZlciwg
TWVkaWFQbGF5ZXJQcml2YXRlKiBwbGF5ZXJQcml2YXRlKTsKKyAgICAgICAgZnJpZW5kIHZvaWQg
bWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKFdlYktpdFZpZGVvU2luayosIEdzdEJ1
ZmZlciogYnVmZmVyLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllclByaXZhdGUp
OwogICAgICAgICBmcmllbmQgdm9pZCBtZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2Fs
bGJhY2soR09iamVjdCogZWxlbWVudCwgR1BhcmFtU3BlYyogcHNwZWMsIGdwb2ludGVyIGRhdGEp
OwogCiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwotICAgICAgICAgICAgfk1lZGlhUGxheWVy
UHJpdmF0ZSgpOworICAgICAgICAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpOwog
CiAgICAgICAgICAgICBJbnRTaXplIG5hdHVyYWxTaXplKCkgY29uc3Q7CiAgICAgICAgICAgICBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CkBAIC04MSwxNSArODEsMTUgQEAgY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICAg
ICAgICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKICAgICAgICAgICAgIHZvaWQgdm9sdW1lQ2hh
bmdlZCgpOwotICAgICAgICAgICAgdm9pZCB2b2x1bWVDaGFuZ2VkVGltZXJGaXJlZChUaW1lcjxN
ZWRpYVBsYXllclByaXZhdGU+Kik7CisgICAgICAgICAgICB2b2lkIHZvbHVtZUNoYW5nZWRUaW1l
ckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4qKTsKIAogICAgICAgICAg
ICAgYm9vbCBzdXBwb3J0c011dGluZygpIGNvbnN0OwogICAgICAgICAgICAgdm9pZCBzZXRNdXRl
ZChib29sKTsKICAgICAgICAgICAgIHZvaWQgbXV0ZUNoYW5nZWQoKTsKLSAgICAgICAgICAgIHZv
aWQgbXV0ZUNoYW5nZWRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4qKTsKKyAg
ICAgICAgICAgIHZvaWQgbXV0ZUNoYW5nZWRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcj4qKTsKIAogICAgICAgICAgICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxh
eWVyOjpQcmVsb2FkKTsKLSAgICAgICAgICAgIHZvaWQgZmlsbFRpbWVyRmlyZWQoVGltZXI8TWVk
aWFQbGF5ZXJQcml2YXRlPiopOworICAgICAgICAgICAgdm9pZCBmaWxsVGltZXJGaXJlZChUaW1l
cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+Kik7CiAKICAgICAgICAgICAgIE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Q7CiAgICAgICAgICAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CkBAIC0xMjEsNyArMTIxLDcg
QEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZSB7CiAgICAgICAgICAgICBib29sIHBpcGVsaW5lUmVzZXQoKSBjb25zdCB7IHJldHVy
biBtX3Jlc2V0UGlwZWxpbmU7IH0KIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKik7CisgICAgICAgICAgICBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqKTsKICAgICAgICAgICAgIHN0YXRpYyBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2UqIGNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKTsKIAogICAg
ICAgICAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+Jik7
CkBAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlIDogcHVibGljIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICAgICAgICAgIHZvaWQgdXBkYXRlU3Rh
dGVzKCk7CiAgICAgICAgICAgICB2b2lkIGNhbmNlbFNlZWsoKTsKLSAgICAgICAgICAgIHZvaWQg
ZW5kUG9pbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4qKTsKKyAgICAgICAg
ICAgIHZvaWQgZW5kUG9pbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcj4qKTsKICAgICAgICAgICAgIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25zdDsKICAgICAg
ICAgICAgIHZvaWQgc3RhcnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKTsKIApAQCAtMTY0LDcgKzE2
NCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2UgewogICAgICAgICAgICAgYm9vbCBtX2Vycm9yT2NjdXJlZDsKICAgICAgICAg
ICAgIGdmbG9hdCBtX21lZGlhRHVyYXRpb247CiAgICAgICAgICAgICBib29sIG1fc3RhcnRlZEJ1
ZmZlcmluZzsKLSAgICAgICAgICAgIFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4gbV9maWxsVGlt
ZXI7CisgICAgICAgICAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1fZmls
bFRpbWVyOwogICAgICAgICAgICAgZmxvYXQgbV9tYXhUaW1lTG9hZGVkOwogICAgICAgICAgICAg
aW50IG1fYnVmZmVyaW5nUGVyY2VudGFnZTsKICAgICAgICAgICAgIE1lZGlhUGxheWVyOjpQcmVs
b2FkIG1fcHJlbG9hZDsKLS0gCjEuNi4zLjM=
</data>
<flag name="review"
          id="35100"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>