<?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>124020</bug_id>
          
          <creation_ts>2013-11-07 16:16:06 -0800</creation_ts>
          <short_desc>[GStreamer] Consolidate more code into TrackPrivateBaseGStreamer</short_desc>
          <delta_ts>2013-11-10 06:50:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brendan Long">b.long</reporter>
          <assigned_to name="Brendan Long">b.long</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948464</commentid>
    <comment_count>0</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-07 16:16:06 -0800</bug_when>
    <thetext>[GStreamer] Consolidate more code into TrackPrivateBaseGStreamer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948517</commentid>
    <comment_count>1</comment_count>
      <attachid>216355</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-07 18:44:39 -0800</bug_when>
    <thetext>Created attachment 216355
Patch

This moves significantly more code into TrackPrivateBaseGStreamer, and makes it a base class for InbandTextTrackPrivateGStreamer. There&apos;s some issue with sticky tags not working correctly, but it seems to be a GStreamer issue. I&apos;ll open a bug report for that before trying to get this committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948556</commentid>
    <comment_count>2</comment_count>
      <attachid>216355</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-07 23:36:30 -0800</bug_when>
    <thetext>Comment on attachment 216355
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:112
&gt;      g_signal_handlers_disconnect_by_func(m_pad.get(),

Shouldn&apos;t the handler be disconnected from playbin here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948745</commentid>
    <comment_count>3</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-08 11:21:44 -0800</bug_when>
    <thetext>I moved the track initialization earlier so we can catch all of the tags, since I suspect the difference between input-selector&apos;s tags and tag events is that the input-selector merges all tags and never throws them away.

After doing that, I get output like this, which seems to confirm my theory:

Track 0 got tags: taglist, track-id=(string)12845557391394096188, language-code=(string)la, description=(string)&quot;audiotest\ wave&quot;, encoder=(string)&quot;Xiph.Org\ libVorbis\ I\ 20101101\ \(Schaufenugget\)&quot;, encoder-version=(uint)0, audio-codec=(string)Vorbis, nominal-bitrate=(uint)80000, bitrate=(uint)80000;.
Track 0 got tags: taglist, container-format=(string)Matroska;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948750</commentid>
    <comment_count>4</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-08 11:23:18 -0800</bug_when>
    <thetext>Nevermind, I was reading my output wrong. I&quot;m still not sure why I sometimes don&apos;t get tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948848</commentid>
    <comment_count>5</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-08 14:21:58 -0800</bug_when>
    <thetext>It turns out TrackPrivateBaseGStreamer doesn&apos;t need access to playbin at all, since I can use &quot;notify::active&quot; on the pads. This didn&apos;t work previously, but we need GStreamer 1.2 anyway, and the fix is in that version:

https://bugzilla.gnome.org/show_bug.cgi?id=701319

If &quot;active&quot; was set-able, this could be even better, but I think this is decent.. for now.

I opened this bug for the sticky event issue:

https://bugzilla.gnome.org/show_bug.cgi?id=711710

I&apos;m planning to work around it by giving TextCombinerGStreamer its own pad type with an &quot;active&quot; property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948888</commentid>
    <comment_count>6</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-08 15:40:04 -0800</bug_when>
    <thetext>So when I was complaining about how hard it is to extend GstGhostPad? Apparently I just needed to read the documentation. It&apos;s actually really easy:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstGhostPad.html#gst-ghost-pad-construct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948930</commentid>
    <comment_count>7</comment_count>
      <attachid>216461</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-08 16:44:32 -0800</bug_when>
    <thetext>Created attachment 216461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948932</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-08 16:45:42 -0800</bug_when>
    <thetext>Attachment 216461 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.h&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp:93:  webkit_text_combiner_pad_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp:277:  webkit_text_combiner_pad_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948936</commentid>
    <comment_count>9</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-08 16:50:15 -0800</bug_when>
    <thetext>What I did:

  * Added WebKitTextCombinerPad, which has a &quot;tags&quot; property which behaves exactly like input-selector pads&apos; &quot;tags&quot; property.
  * Moved just about everything into TrackPrivateBaseGStreamer.
  * Simplified tag handling by refactoring part of it out into &quot;getTag()&quot;. This will become more important as we add more tags (list GST_TAG_TRACK_ID and GST_TAG_TRACK_KIND hopefully).

It will fail the style check because of Glib&apos;s requirement that init functions be name type_init().

For some reason the build suddenly refuses to parallelize, so I&apos;m submitting now, and I&apos;ll make a note after I run the tests again. The tests worked perfectly before I rebased, so I expect they will continue to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948969</commentid>
    <comment_count>10</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-11-08 17:54:44 -0800</bug_when>
    <thetext>The build finished and the tests are passing (consistently, even!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949139</commentid>
    <comment_count>11</comment_count>
      <attachid>216461</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-10 06:25:16 -0800</bug_when>
    <thetext>Comment on attachment 216461
Patch

Ok!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949140</commentid>
    <comment_count>12</comment_count>
      <attachid>216461</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-10 06:50:49 -0800</bug_when>
    <thetext>Comment on attachment 216461
Patch

Clearing flags on attachment: 216461

Committed r159024: &lt;http://trac.webkit.org/changeset/159024&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949141</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-10 06:50:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216355</attachid>
            <date>2013-11-07 18:44:39 -0800</date>
            <delta_ts>2013-11-08 16:44:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124020-20131107204438.patch</filename>
            <type>text/plain</type>
            <size>24722</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4ODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJiMjJmYTgzNmRkNTA5
YmE4Y2RjYTQyMzRjMDU3NGViZTBlOThiMy4uODYyYmM5OTlhZDk3NTE5YzAwYmRkMWFmNzJlMGVm
YTk4MDc2MWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTExLTA3ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBD
b25zb2xpZGF0ZSBtb3JlIGNvZGUgaW50byBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQwMjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
YmVjYXVzZSB0aGlzIGlzIGp1c3QgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OkF1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyKTogTW92ZSBtb3JlIGNvZGUgdG8gVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciBh
bmQgbW92ZSBwbGF5YmluIGludG8gdGhpcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpkaXNjb25uZWN0KTogUmVsZWFzZSBwbGF5YmluIHdoZW4g
dW5uZWVkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmg6IEFkZCBkaXNjb25uZWN0KCkgYW5kIG1fcGxheWJpbiwgbW92
ZSBsYWJlbENoYW5nZWQoKSBhbmQgbGFuZ3VhZ2VDaGFuZ2VkKCkgdG8gVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6IE1vdmUgZXZlcnl0aGluZyBleGNlcHQgY3Vl
IGhhbmRsaW5nIHRvIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaDog
U2FtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFja1ByaXZhdGVFdmVudENh
bGxiYWNrKTogTW92ZWQgZnJvbSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLiBIYW5k
bGVzIHRhZ3MgYW5kIHN0cmVhbSBzdGFydCBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjp0cmFj
a1ByaXZhdGVTdHJlYW1UaW1lb3V0Q2FsbGJhY2spOiBNb3ZlZCBmcm9tIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXIuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKTogUmVtb3ZlIG1fcGxheWJpbiwgYWRk
IG1fb3duZXIsIGhhbmRsZXIgdGFncyB3aXRoIGEgcGFkIHByb2JlIGluc3RlYWQgb2YgYSBzaWdu
YWwuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25u
ZWN0KTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OnN0cmVhbUNoYW5nZWQpOiBNb3ZlZCBmcm9tIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlU
cmFja09mU3RyZWFtQ2hhbmdlZCk6IE1vdmVkIGZyb20gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Omdl
dFRhZyk6IFJlZmFjdG9yZWQgZHVwbGljYXRlIGNvZGUgaW4gbm90aWZ5VHJhY2tPZlRhZ3NDaGFu
Z2VkKCkuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mVGFnc0NoYW5nZWQpOiBTYW1lLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmg6IEFkZGVkIGEgYnVuY2ggb2Yg
Y29kZSBmcm9tIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIsIGFuZCBhZGRlZCBhIFRy
YWNrUHJpdmF0ZUJhc2UqIG1fb3duZXIgdG8gbWFrZSBUcmFja1ByaXZhdGVCYXNlIGNhbGxiYWNr
cyBzaW1wbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6IFNhbWUgYXMgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmg6IFNhbWUuCisKIDIwMTMtMTEtMDcgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIENvc21ldGljOiByZW5hbWUgeHh4SWQgdG8geHh4SUQgZm9y
IFNjcmlwdElkLCBTb3VyY2VJZCwgYW5kIEJyZWFrcG9pbnRJZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGZhNTU5NjcxMGIwOTBlYTgzZjlj
NjMwMjU1OWNmZjNlMWRkZjYwOTkuLjlkNTY3ZGM5YWYyNjU1NjJlODcyZGNhZDcyZWNhNjE3ZWM0
NjNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMzQsMTAgKzM0LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihHUmVmUHRyPEdzdEVs
ZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCi0gICAgOiBU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKCJub3RpZnk6OmN1cnJlbnQtYXVkaW8iLCBwbGF5Ymlu
LCBpbmRleCwgcGFkKQorICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCAibm90
aWZ5OjpjdXJyZW50LWF1ZGlvIiwgcGxheWJpbiwgaW5kZXgsIHBhZCkKKyAgICAsIG1fcGxheWJp
bihwbGF5YmluKQogewotICAgIGFjdGl2ZUNoYW5nZWQoKTsKLSAgICB0YWdzQ2hhbmdlZCgpOwor
ICAgIG5vdGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI6OmRpc2Nvbm5lY3QoKQoreworICAgIFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXI6OmRpc2Nvbm5lY3QoKTsKKyAgICBtX3BsYXliaW4uY2xlYXIoKTsKIH0KIAogdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC01
MCwxOCArNTYsNiBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkKICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheWJpbi5nZXQoKSwgImN1
cnJlbnQtYXVkaW8iLCBtX2luZGV4LCBOVUxMKTsKIH0KIAotdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6bGFiZWxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbGFiZWwpCi17Ci0gICAgaWYg
KGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+bGFiZWxDaGFuZ2VkKHRoaXMsIGxhYmVsKTsK
LX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bGFuZ3VhZ2VDaGFuZ2VkKGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi17Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGll
bnQoKS0+bGFuZ3VhZ2VDaGFuZ2VkKHRoaXMsIGxhbmd1YWdlKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDVkMDIwNDM1Zjkw
MGViMzZhOGIxYTdjZGExZjU4NmNlYTdhZDY2ZmQuLmIxZThhNDhjNzQxZTJkMTI1NTdkYjE0MmEw
NGFhN2Y3MDFmNjMwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CiAg
ICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBPVkVSUklERSB7IHNldEVuYWJsZWQoZW5hYmxlZCk7IH0K
IApAQCAtNDksMTEgKzUxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBs
YWJlbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYWJlbENoYW5nZWQoY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGxhbmd1YWdlQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBPVkVS
UklERTsKLQogcHJpdmF0ZToKICAgICBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihHUmVmUHRy
PEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPik7CisKKyAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGxheWJpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCA3MGQ4MzhjNjZhODIwZWNhYWI3NGUwNmEwMDliZTI1ODlmYWI4YjEwLi5m
ODQ4YzJlZDdmMjYwOThmMzI2YWQ2Mzc3ZGQ3YzNkYTc5OTRkZjYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zOSw3NSAr
MzksMTcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfcGxheWVyX2Rl
YnVnKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4g
dGV4dFRyYWNrUHJpdmF0ZUV2ZW50Q2FsbGJhY2soR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBp
bmZvLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKiB0cmFjaykKLXsKLSAgICBHc3RF
dmVudCogZXZlbnQgPSBnc3RfcGFkX3Byb2JlX2luZm9fZ2V0X2V2ZW50KGluZm8pOwotICAgIHN3
aXRjaCAoR1NUX0VWRU5UX1RZUEUoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfVEFHOgot
ICAgICAgICB0cmFjay0+dGFnc0NoYW5nZWQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBH
U1RfRVZFTlRfU1RSRUFNX1NUQVJUOgotICAgICAgICB0cmFjay0+c3RyZWFtQ2hhbmdlZCgpOwot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
cmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7Ci19Ci0KIHN0YXRpYyBnYm9vbGVhbiB0ZXh0VHJhY2tQ
cml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIqIHRyYWNrKQogewogICAgIHRyYWNrLT5ub3RpZnlUcmFja09mU2FtcGxlKCk7CiAgICAgcmV0
dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gdGV4dFRyYWNrUHJpdmF0ZVN0cmVhbVRp
bWVvdXRDYWxsYmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKiB0cmFjaykKLXsK
LSAgICB0cmFjay0+bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKLSAgICByZXR1cm4gRkFM
U0U7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiB0ZXh0VHJhY2tQcml2YXRlVGFnc0NoYW5nZVRpbWVv
dXRDYWxsYmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKiB0cmFjaykKLXsKLSAg
ICB0cmFjay0+bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwot
fQotCiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCi0gICAgOiBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlKFdlYlZUVCkKLSAgICAsIG1faW5kZXgoaW5kZXgpCi0gICAgLCBt
X3BhZChwYWQpCisgICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKFdlYlZUVCksIFRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIodGhpcywgMCwgMCwgaW5kZXgsIHBhZCkKICAgICAsIG1fc2FtcGxl
VGltZXJIYW5kbGVyKDApCi0gICAgLCBtX3N0cmVhbVRpbWVySGFuZGxlcigwKQotICAgICwgbV90
YWdUaW1lckhhbmRsZXIoMCkKIHsKLSAgICBBU1NFUlQobV9wYWQpOwotICAgIG1fZXZlbnRQcm9i
ZSA9IGdzdF9wYWRfYWRkX3Byb2JlKG1fcGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZF
TlRfRE9XTlNUUkVBTSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxi
YWNrPih0ZXh0VHJhY2tQcml2YXRlRXZlbnRDYWxsYmFjayksIHRoaXMsIDApOwotCi0gICAgLyog
V2Ugd2FudCB0byBjaGVjayB0aGVzZSBpbiBjYXNlIHdlIGdvdCBldmVudHMgYmVmb3JlIHRoZSB0
cmFjayB3YXMgY3JlYXRlZCAqLwotICAgIHN0cmVhbUNoYW5nZWQoKTsKLSAgICB0YWdzQ2hhbmdl
ZCgpOwotfQotCi1JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjp+SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcigpCi17Ci0gICAgZGlzY29ubmVjdCgpOwotfQotCi12b2lkIElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmRpc2Nvbm5lY3QoKQotewotICAgIGlmICgh
bV9wYWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKG1fcGFk
LmdldCgpLCBtX2V2ZW50UHJvYmUpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3BhZC5nZXQoKSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4o
dGV4dFRyYWNrUHJpdmF0ZUV2ZW50Q2FsbGJhY2spLCB0aGlzKTsKLQotICAgIGlmIChtX3RhZ1Rp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdGFnVGltZXJIYW5kbGVyKTsK
LQotICAgIG1fcGFkLmNsZWFyKCk7CisgICAgbm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsK
IH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUo
R1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSkKQEAgLTEyMiwyMiArNjQsNiBAQCB2b2lkIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBs
ZT4gc2FtcGxlKQogICAgICAgICByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih0ZXh0VHJh
Y2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKSwgdGhpcyk7CiB9CiAKLXZvaWQgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1f
c3RyZWFtVGltZXJIYW5kbGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9zdHJlYW1UaW1l
ckhhbmRsZXIpOwotICAgIG1fc3RyZWFtVGltZXJIYW5kbGVyID0gZ190aW1lb3V0X2FkZCgwLAot
ICAgICAgICByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih0ZXh0VHJhY2tQcml2YXRlU3Ry
ZWFtVGltZW91dENhbGxiYWNrKSwgdGhpcyk7Ci19Ci0KLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6dGFnc0NoYW5nZWQoKQotewotICAgIGlmIChtX3RhZ1RpbWVySGFuZGxl
cikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdGFnVGltZXJIYW5kbGVyKTsKLSAgICBtX3Rh
Z1RpbWVySGFuZGxlciA9IGdfdGltZW91dF9hZGQoMCwKLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxHU291cmNlRnVuYz4odGV4dFRyYWNrUHJpdmF0ZVRhZ3NDaGFuZ2VUaW1lb3V0Q2FsbGJhY2sp
LCB0aGlzKTsKLX0KLQogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mU2FtcGxlKCkKIHsKICAgICBtX3NhbXBsZVRpbWVySGFuZGxlciA9IDA7CkBAIC0x
NzAsNjAgKzk2LDYgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mU2FtcGxlKCkKICAgICB9CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQotewotICAgIG1fc3RyZWFt
VGltZXJIYW5kbGVyID0gMDsKLQotICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50ID0gYWRvcHRH
UmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwKLSAgICAgICAgR1NUX0VW
RU5UX1NUUkVBTV9TVEFSVCwgMCkpOwotICAgIGlmICghZXZlbnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGNvbnN0IGdjaGFyKiBzdHJlYW1JZDsKLSAgICBnc3RfZXZlbnRfcGFyc2Vfc3RyZWFt
X3N0YXJ0KGV2ZW50LmdldCgpLCAmc3RyZWFtSWQpOwotICAgIElORk9fTUVESUFfTUVTU0FHRSgi
VHJhY2sgJWQgZ290IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIHN0cmVh
bUlkKTsKLSAgICBtX3N0cmVhbUlkID0gc3RyZWFtSWQ7Ci19Ci0KLXZvaWQgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCkKLXsKLSAgICBt
X3RhZ1RpbWVySGFuZGxlciA9IDA7Ci0gICAgaWYgKCFtX3BhZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgU3RyaW5nIGxhYmVsOwotICAgIFN0cmluZyBsYW5ndWFnZTsKLSAgICBHUmVmUHRyPEdz
dEV2ZW50PiBldmVudDsKLSAgICBmb3IgKGd1aW50IGkgPSAwOyAoZXZlbnQgPSBhZG9wdEdSZWYo
Z3N0X3BhZF9nZXRfc3RpY2t5X2V2ZW50KG1fcGFkLmdldCgpLCBHU1RfRVZFTlRfVEFHLCBpKSkp
OyArK2kpIHsKLSAgICAgICAgR3N0VGFnTGlzdCogdGFncyA9IDA7Ci0gICAgICAgIGdzdF9ldmVu
dF9wYXJzZV90YWcoZXZlbnQuZ2V0KCksICZ0YWdzKTsKLSAgICAgICAgQVNTRVJUKHRhZ3MpOwot
Ci0gICAgICAgIGdjaGFyKiB0YWdWYWx1ZTsKLSAgICAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRf
c3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0YWdWYWx1ZSkpIHsKLSAgICAgICAgICAgIElO
Rk9fTUVESUFfTUVTU0FHRSgiVGV4dCB0cmFjayAlZCBnb3QgdGl0bGUgJXMuIiwgbV9pbmRleCwg
dGFnVmFsdWUpOwotICAgICAgICAgICAgbGFiZWwgPSB0YWdWYWx1ZTsKLSAgICAgICAgICAgIGdf
ZnJlZSh0YWdWYWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dl
dF9zdHJpbmcodGFncywgR1NUX1RBR19MQU5HVUFHRV9DT0RFLCAmdGFnVmFsdWUpKSB7Ci0gICAg
ICAgICAgICBJTkZPX01FRElBX01FU1NBR0UoIlRleHQgdHJhY2sgJWQgZ290IGxhbmd1YWdlICVz
LiIsIG1faW5kZXgsIHRhZ1ZhbHVlKTsKLSAgICAgICAgICAgIGxhbmd1YWdlID0gdGFnVmFsdWU7
Ci0gICAgICAgICAgICBnX2ZyZWUodGFnVmFsdWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKG1fbGFiZWwgIT0gbGFiZWwpIHsKLSAgICAgICAgbV9sYWJlbCA9IGxhYmVsOwotICAgICAg
ICBjbGllbnQoKS0+bGFiZWxDaGFuZ2VkKHRoaXMsIG1fbGFiZWwpOwotICAgIH0KLQotICAgIGlm
IChtX2xhbmd1YWdlICE9IGxhbmd1YWdlKSB7Ci0gICAgICAgIG1fbGFuZ3VhZ2UgPSBsYW5ndWFn
ZTsKLSAgICAgICAgY2xpZW50KCktPmxhbmd1YWdlQ2hhbmdlZCh0aGlzLCBtX2xhbmd1YWdlKTsK
LSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMjc0YTc4NDg3ZDE5ZjJlNjc3NTYxNjJiYTIxYzg3OTFj
OGY0MjZhNi4uMGI0MzUxMmUzZGU4YmY5N2Y4NzE2OGU4MWQ2OWU5Mzk0ZTdkYWRiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0z
MCw1MiArMzAsMzMgQEAKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCi1j
bGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIEluYmFuZFRleHRU
cmFja1ByaXZhdGUgeworY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAotICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKCk7Ci0KLSAgICBHc3RQYWQqIHBhZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFk
LmdldCgpOyB9Ci0KLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKyAgICB2aXJ0dWFsIGludCB0cmFj
a0luZGV4KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbmRleDsgfQogCiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2xhYmVsOyB9
CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX2xhbmd1YWdlOyB9CiAKLSAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCkgeyBtX2lu
ZGV4ID0gIGluZGV4OyB9Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBTdHJpbmcgc3RyZWFtSWQoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmVhbUlkOyB9Ci0KICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNh
bXBsZT4pOwotICAgIHZvaWQgc3RyZWFtQ2hhbmdlZCgpOwotICAgIHZvaWQgdGFnc0NoYW5nZWQo
KTsKICAgICB2b2lkIG5vdGlmeVRyYWNrT2ZTYW1wbGUoKTsKLSAgICB2b2lkIG5vdGlmeVRyYWNr
T2ZTdHJlYW1DaGFuZ2VkKCk7Ci0gICAgdm9pZCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKTsK
IAogcHJpdmF0ZToKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGdpbnQgaW5k
ZXgsIEdSZWZQdHI8R3N0UGFkPik7CiAKLSAgICBnaW50IG1faW5kZXg7Ci0gICAgR1JlZlB0cjxH
c3RQYWQ+IG1fcGFkOwotICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwotICAgIEF0b21pY1N0cmlu
ZyBtX2xhbmd1YWdlOwogICAgIGd1aW50IG1fc2FtcGxlVGltZXJIYW5kbGVyOwotICAgIGd1aW50
IG1fc3RyZWFtVGltZXJIYW5kbGVyOwotICAgIGd1aW50IG1fdGFnVGltZXJIYW5kbGVyOwotICAg
IGd1bG9uZyBtX2V2ZW50UHJvYmU7CiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+IG1f
cGVuZGluZ1NhbXBsZXM7Ci0gICAgU3RyaW5nIG1fc3RyZWFtSWQ7CiAgICAgTXV0ZXggbV9zYW1w
bGVNdXRleDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAppbmRleCBhM2M0NWVmY2Q2MWVlYTc0ZmNmYjkwOTk4Y2U5ZGEwZjA4NzM2NTNlLi5iMDc5
MDk4MjBkNjI0YTdhN2I3MDE3MjQ2MzNmYTk4MTJjM2NlMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0zMSwyMiArMzEsMzUgQEAKIAogI2lu
Y2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJUcmFja1ByaXZhdGVCYXNlLmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNs
dWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogCiBHU1Rf
REVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcpOwogI2RlZmlu
ZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3BsYXllcl9kZWJ1ZwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHRyYWNrUHJpdmF0ZUFjdGl2ZUNoYW5nZWRDYWxsYmFj
ayhHT2JqZWN0KiwgR1BhcmFtU3BlYyosIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIqIHRyYWNr
KQorc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIHRyYWNrUHJpdmF0ZUV2ZW50Q2FsbGJhY2soR3N0
UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKiB0
cmFjaykKIHsKLSAgICB0cmFjay0+YWN0aXZlQ2hhbmdlZCgpOworICAgIEdzdEV2ZW50KiBldmVu
dCA9IGdzdF9wYWRfcHJvYmVfaW5mb19nZXRfZXZlbnQoaW5mbyk7CisgICAgc3dpdGNoIChHU1Rf
RVZFTlRfVFlQRShldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9UQUc6CisgICAgICAgIHRy
YWNrLT50YWdzQ2hhbmdlZCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9T
VFJFQU1fU1RBUlQ6CisgICAgICAgIHRyYWNrLT5zdHJlYW1DaGFuZ2VkKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gR1NU
X1BBRF9QUk9CRV9PSzsKIH0KIAotc3RhdGljIHZvaWQgdHJhY2tQcml2YXRlVGFnc0NoYW5nZWRD
YWxsYmFjayhHT2JqZWN0KiwgR1BhcmFtU3BlYyosIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIq
IHRyYWNrKQorc3RhdGljIHZvaWQgdHJhY2tQcml2YXRlQWN0aXZlQ2hhbmdlZENhbGxiYWNrKEdP
YmplY3QqLCBHUGFyYW1TcGVjKiwgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciogdHJhY2spCiB7
Ci0gICAgdHJhY2stPnRhZ3NDaGFuZ2VkKCk7CisgICAgdHJhY2stPmFjdGl2ZUNoYW5nZWQoKTsK
IH0KIAogc3RhdGljIGdib29sZWFuIHRyYWNrUHJpdmF0ZUFjdGl2ZUNoYW5nZVRpbWVvdXRDYWxs
YmFjayhUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKiB0cmFjaykKQEAgLTU1LDIyICs2OCwzMyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gdHJhY2tQcml2YXRlQWN0aXZlQ2hhbmdlVGltZW91dENhbGxiYWNr
KFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZQogICAgIHJldHVybiBGQUxTRTsKIH0KIAorc3RhdGlj
IGdib29sZWFuIHRyYWNrUHJpdmF0ZVN0cmVhbVRpbWVvdXRDYWxsYmFjayhUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyKiB0cmFjaykKK3sKKyAgICB0cmFjay0+bm90aWZ5VHJhY2tPZlN0cmVhbUNo
YW5nZWQoKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB0cmFja1By
aXZhdGVUYWdzQ2hhbmdlVGltZW91dENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIq
IHRyYWNrKQogewogICAgIHRyYWNrLT5ub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKTsKICAgICBy
ZXR1cm4gRkFMU0U7CiB9CiAKLVRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIoY29uc3QgY2hhciogbm90aWZ5QWN0aXZlU2lnbmFsLCBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCitUcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJp
dmF0ZUJhc2UqIG93bmVyLCBjb25zdCBjaGFyKiBub3RpZnlBY3RpdmVTaWduYWwsIEdSZWZQdHI8
R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKICAg
ICA6IG1faW5kZXgoaW5kZXgpCi0gICAgLCBtX3BsYXliaW4ocGxheWJpbikKKyAgICAsIG1fb3du
ZXIob3duZXIpCiAgICAgLCBtX3BhZChwYWQpCiAgICAgLCBtX2FjdGl2ZVRpbWVySGFuZGxlcigw
KQogICAgICwgbV90YWdUaW1lckhhbmRsZXIoMCkKIHsKICAgICBBU1NFUlQobV9wYWQpOwotICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5YmluLmdldCgpLCBub3RpZnlBY3RpdmVTaWduYWwsIEdf
Q0FMTEJBQ0sodHJhY2tQcml2YXRlQWN0aXZlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAg
Z19zaWduYWxfY29ubmVjdChtX3BhZC5nZXQoKSwgIm5vdGlmeTo6dGFncyIsIEdfQ0FMTEJBQ0so
dHJhY2tQcml2YXRlVGFnc0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOworICAgIG1fZXZlbnRQcm9i
ZSA9IGdzdF9wYWRfYWRkX3Byb2JlKG1fcGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZF
TlRfRE9XTlNUUkVBTSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxi
YWNrPih0cmFja1ByaXZhdGVFdmVudENhbGxiYWNrKSwgdGhpcywgMCk7CisKKyAgICBpZiAocGxh
eWJpbikKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChwbGF5YmluLmdldCgpLCBub3RpZnlBY3Rp
dmVTaWduYWwsIEdfQ0FMTEJBQ0sodHJhY2tQcml2YXRlQWN0aXZlQ2hhbmdlZENhbGxiYWNrKSwg
dGhpcyk7CisKKyAgICBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKTsKIH0KIAogVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lcjo6flRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoKQpAQCAtODMsMTAg
KzEwNywxMiBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmRpc2Nvbm5lY3QoKQog
ICAgIGlmICghbV9wYWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGdzdF9wYWRfcmVtb3ZlX3By
b2JlKG1fcGFkLmdldCgpLCBtX2V2ZW50UHJvYmUpOworCiAgICAgZ19zaWduYWxfaGFuZGxlcnNf
ZGlzY29ubmVjdF9ieV9mdW5jKG1fcGFkLmdldCgpLAogICAgICAgICByZWludGVycHJldF9jYXN0
PGdwb2ludGVyPih0cmFja1ByaXZhdGVBY3RpdmVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wYWQuZ2V0KCksCi0gICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHRyYWNrUHJpdmF0ZVRhZ3NDaGFuZ2VkQ2Fs
bGJhY2spLCB0aGlzKTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4odHJhY2tQ
cml2YXRlRXZlbnRDYWxsYmFjayksIHRoaXMpOwogCiAgICAgaWYgKG1fYWN0aXZlVGltZXJIYW5k
bGVyKQogICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9hY3RpdmVUaW1lckhhbmRsZXIpOwpAQCAt
OTUsNyArMTIxLDYgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0
KCkKICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdGFnVGltZXJIYW5kbGVyKTsKIAogICAgIG1f
cGFkLmNsZWFyKCk7Ci0gICAgbV9wbGF5YmluLmNsZWFyKCk7CiB9CiAKIHZvaWQgVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lcjo6YWN0aXZlQ2hhbmdlZCgpCkBAIC0xMDYsNiArMTMxLDE0IEBAIHZv
aWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6YWN0aXZlQ2hhbmdlZCgpCiAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRyYWNrUHJpdmF0ZUFjdGl2ZUNoYW5nZVRpbWVv
dXRDYWxsYmFjayksIHRoaXMpOwogfQogCit2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OnN0cmVhbUNoYW5nZWQoKQoreworICAgIGlmIChtX3N0cmVhbVRpbWVySGFuZGxlcikKKyAgICAg
ICAgZ19zb3VyY2VfcmVtb3ZlKG1fc3RyZWFtVGltZXJIYW5kbGVyKTsKKyAgICBtX3N0cmVhbVRp
bWVySGFuZGxlciA9IGdfdGltZW91dF9hZGQoMCwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxH
U291cmNlRnVuYz4odHJhY2tQcml2YXRlU3RyZWFtVGltZW91dENhbGxiYWNrKSwgdGhpcyk7Cit9
CisKIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6dGFnc0NoYW5nZWQoKQogewogICAg
IGlmIChtX3RhZ1RpbWVySGFuZGxlcikKQEAgLTEyNiwzOSArMTU5LDUwIEBAIHZvaWQgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZkFjdGl2ZUNoYW5nZWQoKQogICAgIHNl
dEFjdGl2ZShhY3RpdmUpOwogfQogCit2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5v
dGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCkKK3sKKyAgICBtX3N0cmVhbVRpbWVySGFuZGxlciA9
IDA7CisKKyAgICBHUmVmUHRyPEdzdEV2ZW50PiBldmVudCA9IGFkb3B0R1JlZihnc3RfcGFkX2dl
dF9zdGlja3lfZXZlbnQobV9wYWQuZ2V0KCksCisgICAgICAgIEdTVF9FVkVOVF9TVFJFQU1fU1RB
UlQsIDApKTsKKyAgICBpZiAoIWV2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBn
Y2hhciogc3RyZWFtSWQ7CisgICAgZ3N0X2V2ZW50X3BhcnNlX3N0cmVhbV9zdGFydChldmVudC5n
ZXQoKSwgJnN0cmVhbUlkKTsKKyAgICBJTkZPX01FRElBX01FU1NBR0UoIlRyYWNrICVkIGdvdCBz
dHJlYW0gc3RhcnQgZm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZCk7CisgICAgbV9z
dHJlYW1JZCA9IHN0cmVhbUlkOworfQorCitib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgU3RyaW5nJiB2
YWx1ZSkKK3sKKyAgICBHT3duUHRyPGdjaGFyPiB0YWdWYWx1ZTsKKyAgICBpZiAoZ3N0X3RhZ19s
aXN0X2dldF9zdHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgeworICAg
ICAgICBJTkZPX01FRElBX01FU1NBR0UoIlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0
YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7CisgICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZv
aWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCkK
IHsKICAgICBtX3RhZ1RpbWVySGFuZGxlciA9IDA7CiAgICAgaWYgKCFtX3BhZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3RyaW5nIGxhYmVsOwotICAgIFN0cmluZyBsYW5ndWFnZTsKLSAgICBH
UmVmUHRyPEdzdFRhZ0xpc3Q+IHRhZ3M7Ci0gICAgZ19vYmplY3RfZ2V0KG1fcGFkLmdldCgpLCAi
dGFncyIsICZ0YWdzLm91dFB0cigpLCBOVUxMKTsKLSAgICBpZiAodGFncykgewotICAgICAgICBn
Y2hhciogdGFnVmFsdWU7Ci0gICAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdz
LmdldCgpLCBHU1RfVEFHX1RJVExFLCAmdGFnVmFsdWUpKSB7Ci0gICAgICAgICAgICBJTkZPX01F
RElBX01FU1NBR0UoIlZpZGVvIHRyYWNrICVkIGdvdCB0aXRsZSAlcy4iLCBtX2luZGV4LCB0YWdW
YWx1ZSk7Ci0gICAgICAgICAgICBsYWJlbCA9IHRhZ1ZhbHVlOwotICAgICAgICAgICAgZ19mcmVl
KHRhZ1ZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0
cmluZyh0YWdzLmdldCgpLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsICZ0YWdWYWx1ZSkpIHsKLSAg
ICAgICAgICAgIElORk9fTUVESUFfTUVTU0FHRSgiVmlkZW8gdHJhY2sgJWQgZ290IGxhbmd1YWdl
ICVzLiIsIG1faW5kZXgsIHRhZ1ZhbHVlKTsKLSAgICAgICAgICAgIGxhbmd1YWdlID0gdGFnVmFs
dWU7Ci0gICAgICAgICAgICBnX2ZyZWUodGFnVmFsdWUpOwotICAgICAgICB9Ci0gICAgfQorICAg
IFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQqIGNsaWVudCA9IG1fb3duZXItPmNsaWVudCgpOworICAg
IEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50OworICAgIGZvciAoZ3VpbnQgaSA9IDA7IChldmVudCA9
IGFkb3B0R1JlZihnc3RfcGFkX2dldF9zdGlja3lfZXZlbnQobV9wYWQuZ2V0KCksIEdTVF9FVkVO
VF9UQUcsIGkpKSk7ICsraSkgeworICAgICAgICBHc3RUYWdMaXN0KiB0YWdzID0gMDsKKyAgICAg
ICAgZ3N0X2V2ZW50X3BhcnNlX3RhZyhldmVudC5nZXQoKSwgJnRhZ3MpOworICAgICAgICBBU1NF
UlQodGFncyk7CiAKLSAgICBpZiAobV9sYWJlbCAhPSBsYWJlbCkgewotICAgICAgICBtX2xhYmVs
ID0gbGFiZWw7Ci0gICAgICAgIGxhYmVsQ2hhbmdlZChtX2xhYmVsKTsKLSAgICB9CisgICAgICAg
IGlmIChnZXRUYWcodGFncywgR1NUX1RBR19USVRMRSwgbV9sYWJlbCkgJiYgY2xpZW50KQorICAg
ICAgICAgICAgY2xpZW50LT5sYWJlbENoYW5nZWQobV9vd25lciwgbV9sYWJlbCk7CiAKLSAgICBp
ZiAobV9sYW5ndWFnZSAhPSBsYW5ndWFnZSkgewotICAgICAgICBtX2xhbmd1YWdlID0gbGFuZ3Vh
Z2U7Ci0gICAgICAgIGxhbmd1YWdlQ2hhbmdlZChtX2xhbmd1YWdlKTsKKyAgICAgICAgaWYgKGdl
dFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIG1fbGFuZ3VhZ2UpICYmIGNsaWVudCkK
KyAgICAgICAgICAgIGNsaWVudC0+bGFuZ3VhZ2VDaGFuZ2VkKG1fb3duZXIsIG1fbGFuZ3VhZ2Up
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgK
aW5kZXggNGU1MmJiZTFlMDNjMjBlNzRmNjNhZTllZmRmYzA1NDkxNTRhMmUzMC4uMjQ1NmQyOTM5
YjRjOTUxYzZkY2I1Nzg3NTliZGRlZWFkNTliMjBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lci5oCkBAIC0zMyw0MCArMzMsNDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBUcmFja1ByaXZhdGVCYXNlOworCiBjbGFzcyBUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGFiZWxDaGFuZ2VkKGNvbnN0IFN0cmluZyYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0g
MDsKLQogICAgIEdzdFBhZCogcGFkKCkgY29uc3QgeyByZXR1cm4gbV9wYWQuZ2V0KCk7IH0KKyAg
ICBTdHJpbmcgc3RyZWFtSWQoKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbUlkOyB9CiAKLSAgICB2
b2lkIGRpc2Nvbm5lY3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFj
dGl2ZShib29sKSB7IH0KIAogICAgIHZvaWQgc2V0SW5kZXgoaW50IGluZGV4KSB7IG1faW5kZXgg
PSAgaW5kZXg7IH0KIAogICAgIHZvaWQgYWN0aXZlQ2hhbmdlZCgpOworICAgIHZvaWQgc3RyZWFt
Q2hhbmdlZCgpOwogICAgIHZvaWQgdGFnc0NoYW5nZWQoKTsKIAogICAgIHZvaWQgbm90aWZ5VHJh
Y2tPZkFjdGl2ZUNoYW5nZWQoKTsKKyAgICB2b2lkIG5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2Vk
KCk7CiAgICAgdm9pZCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKTsKIAogcHJvdGVjdGVkOgot
ICAgIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoY29uc3QgY2hhciogbm90aWZ5QWN0aXZlU2ln
bmFsLCBHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0
UGFkPik7CisgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlKiBv
d25lciwgY29uc3QgY2hhciogbm90aWZ5QWN0aXZlU2lnbmFsLCBHUmVmUHRyPEdzdEVsZW1lbnQ+
IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPik7CiAKICAgICBnaW50IG1faW5k
ZXg7Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3BsYXliaW47Ci0KICAgICBTdHJpbmcgbV9s
YWJlbDsKICAgICBTdHJpbmcgbV9sYW5ndWFnZTsKIAogcHJpdmF0ZToKKyAgICBib29sIGdldFRh
ZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgU3RyaW5nJiB2YWx1ZSk7
CisKKyAgICBUcmFja1ByaXZhdGVCYXNlKiBtX293bmVyOwogICAgIEdSZWZQdHI8R3N0UGFkPiBt
X3BhZDsKKyAgICBTdHJpbmcgbV9zdHJlYW1JZDsKICAgICBndWludCBtX2FjdGl2ZVRpbWVySGFu
ZGxlcjsKKyAgICBndWludCBtX3N0cmVhbVRpbWVySGFuZGxlcjsKICAgICBndWludCBtX3RhZ1Rp
bWVySGFuZGxlcjsKKyAgICBndWxvbmcgbV9ldmVudFByb2JlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggOTU4YzkyOTlmMmMyZjcyYjMyNjg5ODJmMjQwYmU0ZTUwODliMjg5ZC4uYzk1MjM5
YzEzOTY2MDZkZDk4MjE1NTE1ZTE2MGZkNzRhY2U0N2Y4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNCwxMCArMzQsMTYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwg
R1JlZlB0cjxHc3RQYWQ+IHBhZCkKLSAgICA6IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoIm5v
dGlmeTo6Y3VycmVudC12aWRlbyIsIHBsYXliaW4sIGluZGV4LCBwYWQpCisgICAgOiBUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyKHRoaXMsICJub3RpZnk6OmN1cnJlbnQtdmlkZW8iLCBwbGF5Ymlu
LCBpbmRleCwgcGFkKQorICAgICwgbV9wbGF5YmluKHBsYXliaW4pCiB7Ci0gICAgYWN0aXZlQ2hh
bmdlZCgpOwotICAgIHRhZ3NDaGFuZ2VkKCk7CisgICAgbm90aWZ5VHJhY2tPZkFjdGl2ZUNoYW5n
ZWQoKTsKK30KKwordm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCgp
Cit7CisgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCgpOworICAgIG1f
cGxheWJpbi5jbGVhcigpOwogfQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpz
ZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQpAQCAtNTAsMTggKzU2LDYgQEAgdm9pZCBWaWRlb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkKICAgICAgICAg
Z19vYmplY3Rfc2V0KG1fcGxheWJpbi5nZXQoKSwgImN1cnJlbnQtdmlkZW8iLCBtX2luZGV4LCBO
VUxMKTsKIH0KIAotdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bGFiZWxDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgbGFiZWwpCi17Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGll
bnQoKS0+bGFiZWxDaGFuZ2VkKHRoaXMsIGxhYmVsKTsKLX0KLQotdm9pZCBWaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi17
Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+bGFuZ3VhZ2VDaGFuZ2VkKHRo
aXMsIGxhbmd1YWdlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oCmluZGV4IGU3ZGYzYTRmNzVhOGMxNjM4N2M3ODVlYzMwZThjNzZiMzg0
ZjNhMTcuLmFlZjFmNThlZDUyNTg3NDYyMWI3YTFhZDI3MDUxZmQxMDMxNGQ1OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00MSw2ICs0MSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lk
IGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChi
b29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgZW5hYmxlZCkg
T1ZFUlJJREUgeyBzZXRTZWxlY3RlZChlbmFibGVkKTsgfQogCkBAIC00OSwxMSArNTEsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9sYWJlbDsgfQogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGxhYmVsQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotCiBwcml2YXRlOgogICAg
IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwg
Z2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+KTsKKworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
bV9wbGF5YmluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216461</attachid>
            <date>2013-11-08 16:44:32 -0800</date>
            <delta_ts>2013-11-10 06:50:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124020-20131108184431.patch</filename>
            <type>text/plain</type>
            <size>27629</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwMGI0YTExZGFiZmMx
MWNiZmRlMGFkMzZiNzdmZjIwNDRiNmY4My4uZTc2NjJmMzIyM2Y4ZDVmMjU2ZDhiYmRhNzNhNTZh
ZGZjZTViMTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTExLTA4ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBD
b25zb2xpZGF0ZSBtb3JlIGNvZGUgaW50byBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQwMjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
YmVjYXVzZSB0aGlzIGlzIGp1c3QgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OkF1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyKTogRG9uJ3QgcGFzcyBwbGF5YmluIHRvIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIsIGFuZCBkbyBwYXNzIGEgcG9pbnRlciB0byAidGhpcyIuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCk6IENsZWFyIG1fcGxheWJpbigp
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5oOiBNb3ZlIGxhYmVsQ2hhbmdlZCgpIGFuZCBsYW5ndWFnZUNoYW5nZWQoKSB0
byBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLiBNb3ZlIG1fcGxheWJpbiB0byB0aGlzIGNsYXNz
IChhbG9uZyB3aXRoIGRpc2Nvbm5lY3QoKSB0byBjbGVhciBpdCkuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
OiBNb3ZlIHRhZyBoYW5kbGluZywgcGFkIGFuZCBpbmRleCB0byBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFRyYWNrUHJpdmF0ZUV2ZW50Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFt
ZXIuY3BwOiBBZGQgV2ViS2l0VGV4dENvbWJpbmVyUGFkIHdpdGggInRhZ3MiIHByb3BlcnR5LCBz
ZXQgaW4gdGhlIHNhbWUgd2FzIGFzIGlucHV0LXNlbGVjdG9yJ3MgcGFkcy4KKyAgICAgICAgKHdl
YmtpdF90ZXh0X2NvbWJpbmVyX3BhZF9pbml0KTogSW5pdGlhbGl6ZSB0YWdzIHRvIDAuCisgICAg
ICAgICh3ZWJraXRUZXh0Q29tYmluZXJQYWRGaW5hbGl6ZSk6IENsZWFyIHRhZ3MuCisgICAgICAg
ICh3ZWJraXRUZXh0Q29tYmluZXJQYWRHZXRQcm9wZXJ0eSk6IEhhbmRsaW5nICJ0YWdzIiBwcm9w
ZXJ0eS4KKyAgICAgICAgKHdlYmtpdFRleHRDb21iaW5lclBhZEV2ZW50KTogQ2hhbmdlZCB0byBi
ZSBhIHBhZCBldmVudCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgcGFkIHByb2JlLCBhbmQgbm93IGlu
dGVyY2VwdHMgdGFncyBhbmQgbWVyZ2VzIHRoZW0gKGxpa2UgaW5wdXQtc2VsZWN0b3IgcGFkcyBk
bykuCisgICAgICAgICh3ZWJraXRUZXh0Q29tYmluZXJSZXF1ZXN0TmV3UGFkKTogVXNpbmcgV2Vi
S2l0VGV4dENvbWJpbmVyUGFkIGluc3RlYWQgb2YganVzdCBHaG9zdFBhZC4KKyAgICAgICAgKHdl
YmtpdF90ZXh0X2NvbWJpbmVyX3BhZF9jbGFzc19pbml0KTogU2V0dXAgV2ViS2l0VGV4dENvbWJp
bmVyUGFkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmlu
ZXJHU3RyZWFtZXIuaDogUmVtb3ZlIHN1cGVyZmx1b3VzIGNvZGUuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcik6IFVzZSAibm90aWZ5OjphY3RpdmUiIHNvIHdlIGRvbid0IG5lZWQgYSBwbGF5
YmluLCBhbmQgaW1tZWRpYXRlbHkgY2hlY2sgZm9yIHRhZ3MgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9y
LgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6ZGlzY29ubmVj
dCk6IFJlbW92ZSBtX3BsYXliaW4uCisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyOjpnZXRUYWcpOiBSZWZhY3RvcmVkIG91dCBmcm9tIG5vdGlmeVRyYWNrT2ZUYWdz
Q2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5v
dGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCk6IFNpbXBsaWZ5IHVzaW5nIG1fb3duZXIgKHNvIHdlIGNh
biBjYWxsIGxhYmVsQ2hhbmdlZCgpIGFuZCBsYW5ndWFnZUNoYW5nZWQoKSBkaXJlY3RseSksIGFu
ZCB1c2UgZ2V0VGFnKCkgYWJvdmUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaDogQWRkIG1fb3duZXIgdG8gd2UgY2FuIGFj
Y2VzcyB0aGUgb3duaW5nIHRyYWNrLCBhbmQgY2hhbmdlIHNvbWUgZnVuY3Rpb25zIHRvIG1hdGNo
IG91ciBuZWVkcyBiZXR0ZXIuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpzZXRBY3RpdmUpOiBBZGQgZW1wdHkgZGVmYXVsdCBzaW5jZSBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyIGRvZXNuJ3QgbmVlZCB0aGlzLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6IFNhbWUg
YXMgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmRpc2Nvbm5lY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oOiBTYW1lIGFzIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLgorCiAyMDEzLTExLTA4
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIxNTU2NjApOiBTb21lIEV0aGVycGFkIHBhZ2VzIG5vdCBzY3JvbGxhYmxlIHdpdGgg
b3ZlcmxheSBzY3JvbGxiYXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCBmYTU1OTY3MTBiMDkwZWE4M2Y5YzYzMDI1NTljZmYzZTFkZGY2MDk5
Li45MGQzMGE2OWE0NjgwYmM0MWI4OTdkZGMxMzJmMTZkZTllNDlmMGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM0LDEwICszNCwxNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50
IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQotICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcigibm90aWZ5OjpjdXJyZW50LWF1ZGlvIiwgcGxheWJpbiwgaW5kZXgsIHBhZCkKKyAgICA6
IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIodGhpcywgaW5kZXgsIHBhZCkKKyAgICAsIG1fcGxh
eWJpbihwbGF5YmluKQogewotICAgIGFjdGl2ZUNoYW5nZWQoKTsKLSAgICB0YWdzQ2hhbmdlZCgp
OworICAgIG5vdGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmRpc2Nvbm5lY3QoKQoreworICAgIG1fcGxheWJpbi5jbGVhcigp
OworICAgIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmRpc2Nvbm5lY3QoKTsKIH0KIAogdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCkBA
IC01MCwxOCArNTYsNiBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzZXRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheWJpbi5nZXQoKSwg
ImN1cnJlbnQtYXVkaW8iLCBtX2luZGV4LCBOVUxMKTsKIH0KIAotdm9pZCBBdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6bGFiZWxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbGFiZWwpCi17Ci0gICAg
aWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+bGFiZWxDaGFuZ2VkKHRoaXMsIGxhYmVs
KTsKLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bGFuZ3VhZ2VDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi17Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBj
bGllbnQoKS0+bGFuZ3VhZ2VDaGFuZ2VkKHRoaXMsIGxhbmd1YWdlKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVS
KSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDVkMDIwNDM1
ZjkwMGViMzZhOGIxYTdjZGExZjU4NmNlYTdhZDY2ZmQuLmIxZThhNDhjNzQxZTJkMTI1NTdkYjE0
MmEwNGFhN2Y3MDFmNjMwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7
CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKwogICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBPVkVSUklERSB7IHNldEVuYWJsZWQoZW5hYmxlZCk7
IH0KIApAQCAtNDksMTEgKzUxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBsYWJlbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbGFuZ3Vh
Z2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYWJlbENoYW5nZWQoY29uc3QgU3RyaW5nJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGxhbmd1YWdlQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKLQogcHJpdmF0ZToKICAgICBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihHUmVm
UHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPik7CisK
KyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGxheWJpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCA3MGQ4MzhjNjZhODIwZWNhYWI3NGUwNmEwMDliZTI1ODlmYWI4YjEw
Li5jODQ5YjhjZWIwN2Y3MmM2MzA0OGY4ODc0MTI1ZWZhOGZkZmZmZWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC00Myw5
ICs0Myw2IEBAIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiB0ZXh0VHJhY2tQcml2YXRlRXZlbnRD
YWxsYmFjayhHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qCiB7CiAgICAgR3N0RXZlbnQqIGV2ZW50
ID0gZ3N0X3BhZF9wcm9iZV9pbmZvX2dldF9ldmVudChpbmZvKTsKICAgICBzd2l0Y2ggKEdTVF9F
VkVOVF9UWVBFKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX1RBRzoKLSAgICAgICAgdHJh
Y2stPnRhZ3NDaGFuZ2VkKCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX0VWRU5UX1NU
UkVBTV9TVEFSVDoKICAgICAgICAgdHJhY2stPnN0cmVhbUNoYW5nZWQoKTsKICAgICAgICAgYnJl
YWs7CkBAIC02NywzMiArNjQsMTUgQEAgc3RhdGljIGdib29sZWFuIHRleHRUcmFja1ByaXZhdGVT
dHJlYW1UaW1lb3V0Q2FsbGJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHIKICAgICByZXR1
cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB0ZXh0VHJhY2tQcml2YXRlVGFnc0NoYW5n
ZVRpbWVvdXRDYWxsYmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKiB0cmFjaykK
LXsKLSAgICB0cmFjay0+bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCk7Ci0gICAgcmV0dXJuIEZB
TFNFOwotfQotCiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCi0gICAg
OiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKFdlYlZUVCkKLSAgICAsIG1faW5kZXgoaW5kZXgpCi0g
ICAgLCBtX3BhZChwYWQpCisgICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKFdlYlZUVCksIFRy
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIodGhpcywgaW5kZXgsIHBhZCkKICAgICAsIG1fc2FtcGxl
VGltZXJIYW5kbGVyKDApCiAgICAgLCBtX3N0cmVhbVRpbWVySGFuZGxlcigwKQotICAgICwgbV90
YWdUaW1lckhhbmRsZXIoMCkKIHsKLSAgICBBU1NFUlQobV9wYWQpOwogICAgIG1fZXZlbnRQcm9i
ZSA9IGdzdF9wYWRfYWRkX3Byb2JlKG1fcGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZF
TlRfRE9XTlNUUkVBTSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxi
YWNrPih0ZXh0VHJhY2tQcml2YXRlRXZlbnRDYWxsYmFjayksIHRoaXMsIDApOwogCi0gICAgLyog
V2Ugd2FudCB0byBjaGVjayB0aGVzZSBpbiBjYXNlIHdlIGdvdCBldmVudHMgYmVmb3JlIHRoZSB0
cmFjayB3YXMgY3JlYXRlZCAqLwotICAgIHN0cmVhbUNoYW5nZWQoKTsKLSAgICB0YWdzQ2hhbmdl
ZCgpOwotfQotCi1JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjp+SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcigpCi17Ci0gICAgZGlzY29ubmVjdCgpOworICAgIG5vdGlmeVRy
YWNrT2ZTdHJlYW1DaGFuZ2VkKCk7CiB9CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6ZGlzY29ubmVjdCgpCkBAIC0xMDEsMTMgKzgxLDExIEBAIHZvaWQgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKG1fcGFkLmdldCgpLCBtX2V2ZW50UHJvYmUpOwotICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3BhZC5nZXQoKSwKLSAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4odGV4dFRyYWNrUHJpdmF0ZUV2ZW50Q2FsbGJh
Y2spLCB0aGlzKTsKIAotICAgIGlmIChtX3RhZ1RpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3Vy
Y2VfcmVtb3ZlKG1fdGFnVGltZXJIYW5kbGVyKTsKKyAgICBpZiAobV9zdHJlYW1UaW1lckhhbmRs
ZXIpCisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX3N0cmVhbVRpbWVySGFuZGxlcik7CiAKLSAg
ICBtX3BhZC5jbGVhcigpOworICAgIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmRpc2Nvbm5l
Y3QoKTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVT
YW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSkKQEAgLTEzMCwxNCArMTA4LDYgQEAgdm9p
ZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKCkKICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4odGV4dFRyYWNrUHJpdmF0ZVN0cmVhbVRp
bWVvdXRDYWxsYmFjayksIHRoaXMpOwogfQogCi12b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKLXsKLSAgICBpZiAobV90YWdUaW1lckhhbmRsZXIpCi0g
ICAgICAgIGdfc291cmNlX3JlbW92ZShtX3RhZ1RpbWVySGFuZGxlcik7Ci0gICAgbV90YWdUaW1l
ckhhbmRsZXIgPSBnX3RpbWVvdXRfYWRkKDAsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1Nv
dXJjZUZ1bmM+KHRleHRUcmFja1ByaXZhdGVUYWdzQ2hhbmdlVGltZW91dENhbGxiYWNrKSwgdGhp
cyk7Ci19Ci0KIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJh
Y2tPZlNhbXBsZSgpCiB7CiAgICAgbV9zYW1wbGVUaW1lckhhbmRsZXIgPSAwOwpAQCAtMTg1LDQ1
ICsxNTUsNiBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRy
YWNrT2ZTdHJlYW1DaGFuZ2VkKCkKICAgICBtX3N0cmVhbUlkID0gc3RyZWFtSWQ7CiB9CiAKLXZv
aWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFu
Z2VkKCkKLXsKLSAgICBtX3RhZ1RpbWVySGFuZGxlciA9IDA7Ci0gICAgaWYgKCFtX3BhZCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGxhYmVsOwotICAgIFN0cmluZyBsYW5ndWFnZTsK
LSAgICBHUmVmUHRyPEdzdEV2ZW50PiBldmVudDsKLSAgICBmb3IgKGd1aW50IGkgPSAwOyAoZXZl
bnQgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfc3RpY2t5X2V2ZW50KG1fcGFkLmdldCgpLCBHU1Rf
RVZFTlRfVEFHLCBpKSkpOyArK2kpIHsKLSAgICAgICAgR3N0VGFnTGlzdCogdGFncyA9IDA7Ci0g
ICAgICAgIGdzdF9ldmVudF9wYXJzZV90YWcoZXZlbnQuZ2V0KCksICZ0YWdzKTsKLSAgICAgICAg
QVNTRVJUKHRhZ3MpOwotCi0gICAgICAgIGdjaGFyKiB0YWdWYWx1ZTsKLSAgICAgICAgaWYgKGdz
dF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0YWdWYWx1ZSkpIHsK
LSAgICAgICAgICAgIElORk9fTUVESUFfTUVTU0FHRSgiVGV4dCB0cmFjayAlZCBnb3QgdGl0bGUg
JXMuIiwgbV9pbmRleCwgdGFnVmFsdWUpOwotICAgICAgICAgICAgbGFiZWwgPSB0YWdWYWx1ZTsK
LSAgICAgICAgICAgIGdfZnJlZSh0YWdWYWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
Z3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RBR19MQU5HVUFHRV9DT0RFLCAmdGFn
VmFsdWUpKSB7Ci0gICAgICAgICAgICBJTkZPX01FRElBX01FU1NBR0UoIlRleHQgdHJhY2sgJWQg
Z290IGxhbmd1YWdlICVzLiIsIG1faW5kZXgsIHRhZ1ZhbHVlKTsKLSAgICAgICAgICAgIGxhbmd1
YWdlID0gdGFnVmFsdWU7Ci0gICAgICAgICAgICBnX2ZyZWUodGFnVmFsdWUpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKG1fbGFiZWwgIT0gbGFiZWwpIHsKLSAgICAgICAgbV9sYWJlbCA9
IGxhYmVsOwotICAgICAgICBjbGllbnQoKS0+bGFiZWxDaGFuZ2VkKHRoaXMsIG1fbGFiZWwpOwot
ICAgIH0KLQotICAgIGlmIChtX2xhbmd1YWdlICE9IGxhbmd1YWdlKSB7Ci0gICAgICAgIG1fbGFu
Z3VhZ2UgPSBsYW5ndWFnZTsKLSAgICAgICAgY2xpZW50KCktPmxhbmd1YWdlQ2hhbmdlZCh0aGlz
LCBtX2xhbmd1YWdlKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMjc0YTc4NDg3ZDE5ZjJlNjc3
NTYxNjJiYTIxYzg3OTFjOGY0MjZhNi4uNDM4OGY5ODBjMDY2YTM2MmUzZjcwNTU0ZmE2NjMwY2Vi
Njc3YWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC0zMCw0OSArMzAsMzkgQEAKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUg
R3N0U2FtcGxlOwogCi1jbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyIDogcHVi
bGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgeworY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQgaW5kZXgsIEdSZWZQdHI8
R3N0UGFkPiBwYWQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAotICAgIH5JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKCk7Ci0KLSAgICBHc3RQYWQqIHBhZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFkLmdldCgpOyB9Ci0KLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBBdG9taWNT
dHJpbmcgbGFiZWwoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2xhYmVsOyB9CiAgICAgdmly
dHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2xh
bmd1YWdlOyB9CiAKLSAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCkgeyBtX2luZGV4ID0gIGlu
ZGV4OyB9CiAgICAgdmlydHVhbCBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1faW5kZXg7IH0KICAgICBTdHJpbmcgc3RyZWFtSWQoKSBjb25zdCB7IHJldHVybiBtX3N0
cmVhbUlkOyB9CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4pOwog
ICAgIHZvaWQgc3RyZWFtQ2hhbmdlZCgpOwotICAgIHZvaWQgdGFnc0NoYW5nZWQoKTsKKwogICAg
IHZvaWQgbm90aWZ5VHJhY2tPZlNhbXBsZSgpOwogICAgIHZvaWQgbm90aWZ5VHJhY2tPZlN0cmVh
bUNoYW5nZWQoKTsKLSAgICB2b2lkIG5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpOwogCiBwcml2
YXRlOgogICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+KTsKIAotICAgIGdpbnQgbV9pbmRleDsKLSAgICBHUmVmUHRyPEdzdFBhZD4g
bV9wYWQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7Ci0gICAgQXRvbWljU3RyaW5nIG1fbGFu
Z3VhZ2U7CiAgICAgZ3VpbnQgbV9zYW1wbGVUaW1lckhhbmRsZXI7CiAgICAgZ3VpbnQgbV9zdHJl
YW1UaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV90YWdUaW1lckhhbmRsZXI7CiAgICAgZ3Vsb25n
IG1fZXZlbnRQcm9iZTsKICAgICBWZWN0b3I8R1JlZlB0cjxHc3RTYW1wbGU+ID4gbV9wZW5kaW5n
U2FtcGxlczsKICAgICBTdHJpbmcgbV9zdHJlYW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5l
ckdTdHJlYW1lci5jcHAKaW5kZXggNzYzYjNlM2IyNGI0MDM1ZDJkNjdjYjMxZjc2MzQ2ODdkMmM5
Y2M2OC4uZjkyMjg0NWJjOWI2OTUzMDY5ZDNjNjk0ODMwY2EyZmM2NTQ0OGIxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5l
ckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5jcHAKQEAgLTQ0LDYgKzQ0LDM1IEBAIEdfREVG
SU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFRleHRDb21iaW5lciwgd2Via2l0X3RleHRfY29tYmlu
ZXIsIEdTVF9UWVBFX0JJTiwKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRUZXh0
Q29tYmluZXJEZWJ1ZywgIndlYmtpdHRleHRjb21iaW5lciIsIDAsCiAgICAgICAgICJ3ZWJraXQg
dGV4dCBjb21iaW5lciIpKTsKIAorZW51bSB7CisgICAgUFJPUF9QQURfMCwKKyAgICBQUk9QX1BB
RF9UQUdTCit9OworCisjZGVmaW5lIFdFQktJVF9UWVBFX1RFWFRfQ09NQklORVJfUEFEIHdlYmtp
dF90ZXh0X2NvbWJpbmVyX3BhZF9nZXRfdHlwZSgpCisKKyNkZWZpbmUgV0VCS0lUX1RFWFRfQ09N
QklORVJfUEFEKG9iaikgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRf
VFlQRV9URVhUX0NPTUJJTkVSX1BBRCwgV2ViS2l0VGV4dENvbWJpbmVyUGFkKSkKKyNkZWZpbmUg
V0VCS0lUX1RFWFRfQ09NQklORVJfUEFEX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfVEVYVF9DT01CSU5FUl9QQUQsIFdlYktpdFRleHRD
b21iaW5lclBhZENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1RFWFRfQ09NQklORVJfUEFEKG9i
aikgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9URVhUX0NP
TUJJTkVSX1BBRCkpCisjZGVmaW5lIFdFQktJVF9JU19URVhUX0NPTUJJTkVSX1BBRF9DTEFTUyhr
bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX1RFWFRf
Q09NQklORVJfUEFEKSkKKyNkZWZpbmUgV0VCS0lUX1RFWFRfQ09NQklORVJfUEFEX0dFVF9DTEFT
UyhvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRfVFlQRV9URVhU
X0NPTUJJTkVSX1BBRCwgV2ViS2l0VGV4dENvbWJpbmVyUGFkQ2xhc3MpKQorCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0VGV4dENvbWJpbmVyUGFkIFdlYktpdFRleHRDb21iaW5lclBhZDsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRUZXh0Q29tYmluZXJQYWRDbGFzcyBXZWJLaXRUZXh0Q29tYmluZXJQ
YWRDbGFzczsKKworc3RydWN0IF9XZWJLaXRUZXh0Q29tYmluZXJQYWQgeworICAgIEdzdEdob3N0
UGFkIHBhcmVudDsKKworICAgIEdzdFRhZ0xpc3QqIHRhZ3M7Cit9OworCitzdHJ1Y3QgX1dlYktp
dFRleHRDb21iaW5lclBhZENsYXNzIHsKKyAgICBHc3RHaG9zdFBhZENsYXNzIHBhcmVudDsKK307
CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0VGV4dENvbWJpbmVyUGFkLCB3ZWJraXRfdGV4dF9jb21i
aW5lcl9wYWQsIEdTVF9UWVBFX0dIT1NUX1BBRCk7CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRU
ZXh0Q29tYmluZXJQYWRFdmVudChHc3RQYWQqLCBHc3RPYmplY3QqIHBhcmVudCwgR3N0RXZlbnQq
KTsKIAogc3RhdGljIHZvaWQgd2Via2l0X3RleHRfY29tYmluZXJfaW5pdChXZWJLaXRUZXh0Q29t
YmluZXIqIGNvbWJpbmVyKQogewpAQCAtNjEsMTcgKzkwLDQ2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF90ZXh0X2NvbWJpbmVyX2luaXQoV2ViS2l0VGV4dENvbWJpbmVyKiBjb21iaW5lcikKICAgICBB
U1NFUlQocmV0KTsKIH0KIAotc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIHdlYmtpdFRleHRDb21i
aW5lclBhZEV2ZW50KEdzdFBhZCogcGFkLCBHc3RQYWRQcm9iZUluZm8gKmluZm8sIGdwb2ludGVy
KQorc3RhdGljIHZvaWQgd2Via2l0X3RleHRfY29tYmluZXJfcGFkX2luaXQoV2ViS2l0VGV4dENv
bWJpbmVyUGFkKiBwYWQpCit7CisgICAgcGFkLT50YWdzID0gMDsKKworICAgIGdzdF9wYWRfc2V0
X2V2ZW50X2Z1bmN0aW9uKEdTVF9QQUQocGFkKSwgd2Via2l0VGV4dENvbWJpbmVyUGFkRXZlbnQp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRUZXh0Q29tYmluZXJQYWRGaW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCit7CisgICAgV2ViS2l0VGV4dENvbWJpbmVyUGFkKiBwYWQgPSBXRUJLSVRfVEVY
VF9DT01CSU5FUl9QQUQob2JqZWN0KTsKKyAgICBpZiAocGFkLT50YWdzKQorICAgICAgICBnc3Rf
dGFnX2xpc3RfdW5yZWYocGFkLT50YWdzKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfdGV4
dF9jb21iaW5lcl9wYWRfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0VGV4dENvbWJpbmVyUGFkR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sK
KyAgICBXZWJLaXRUZXh0Q29tYmluZXJQYWQqIHBhZCA9IFdFQktJVF9URVhUX0NPTUJJTkVSX1BB
RChvYmplY3QpOworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9QQURf
VEFHUzoKKyAgICAgICAgR1NUX09CSkVDVF9MT0NLKG9iamVjdCk7CisgICAgICAgIGdfdmFsdWVf
c2V0X2JveGVkKHZhbHVlLCBwYWQtPnRhZ3MpOworICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhv
YmplY3QpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdFRleHRDb21iaW5l
clBhZEV2ZW50KEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHBhcmVudCwgR3N0RXZlbnQqIGV2ZW50
KQogewogICAgIGdib29sZWFuIHJldDsKICAgICBVTlVTRURfUEFSQU0ocmV0KTsKLSAgICBXZWJL
aXRUZXh0Q29tYmluZXIqIGNvbWJpbmVyID0gV0VCS0lUX1RFWFRfQ09NQklORVIoZ3N0X3BhZF9n
ZXRfcGFyZW50KHBhZCkpOworICAgIFdlYktpdFRleHRDb21iaW5lciogY29tYmluZXIgPSBXRUJL
SVRfVEVYVF9DT01CSU5FUihwYXJlbnQpOworICAgIFdlYktpdFRleHRDb21iaW5lclBhZCogY29t
YmluZXJQYWQgPSBXRUJLSVRfVEVYVF9DT01CSU5FUl9QQUQocGFkKTsKICAgICBBU1NFUlQoY29t
YmluZXIpOwogCi0gICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X3BhZF9wcm9iZV9pbmZvX2dldF9l
dmVudChpbmZvKTsKLSAgICBBU1NFUlQoZXZlbnQpOwotCi0gICAgaWYgKEdTVF9FVkVOVF9UWVBF
KGV2ZW50KSA9PSBHU1RfRVZFTlRfQ0FQUykgeworICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUo
ZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzogewogICAgICAgICBHc3RDYXBzKiBj
YXBzOwogICAgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyhldmVudCwgJmNhcHMpOwogICAgICAg
ICBBU1NFUlQoY2Fwcyk7CkBAIC0xMzcsMTAgKzE5NSwyMSBAQCBzdGF0aWMgR3N0UGFkUHJvYmVS
ZXR1cm4gd2Via2l0VGV4dENvbWJpbmVyUGFkRXZlbnQoR3N0UGFkKiBwYWQsIEdzdFBhZFByb2Jl
SW5mbwogICAgICAgICBnc3RfY2Fwc191bnJlZih0ZXh0Q2Fwcyk7CiAgICAgICAgIGdzdF9vYmpl
Y3RfdW5yZWYodGFyZ2V0UGFyZW50KTsKICAgICAgICAgZ3N0X29iamVjdF91bnJlZih0YXJnZXQp
OworICAgICAgICBicmVhazsKICAgICB9Ci0gICAgZ3N0X29iamVjdF91bnJlZihjb21iaW5lcik7
Ci0KLSAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICBjYXNlIEdTVF9FVkVOVF9UQUc6
IHsKKyAgICAgICAgR3N0VGFnTGlzdCogdGFnczsKKyAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Rh
ZyhldmVudCwgJnRhZ3MpOworICAgICAgICBBU1NFUlQodGFncyk7CisKKyAgICAgICAgY29tYmlu
ZXJQYWQtPnRhZ3MgPSBnc3RfdGFnX2xpc3RfbWVyZ2UoY29tYmluZXJQYWQtPnRhZ3MsIHRhZ3Ms
IEdTVF9UQUdfTUVSR0VfUkVQTEFDRSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVD
VChwYWQpLCAidGFncyIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBnc3RfcGFkX2V2ZW50X2RlZmF1bHQocGFk
LCBwYXJlbnQsIGV2ZW50KTsKIH0KIAogc3RhdGljIEdzdFBhZCogd2Via2l0VGV4dENvbWJpbmVy
UmVxdWVzdE5ld1BhZChHc3RFbGVtZW50ICogZWxlbWVudCwKQEAgLTE1NiwxMCArMjI1LDE0IEBA
IHN0YXRpYyBHc3RQYWQqIHdlYmtpdFRleHRDb21iaW5lclJlcXVlc3ROZXdQYWQoR3N0RWxlbWVu
dCAqIGVsZW1lbnQsCiAgICAgR3N0UGFkKiBwYWQgPSBnc3RfZWxlbWVudF9yZXF1ZXN0X3BhZChj
b21iaW5lci0+ZnVubmVsLCB0ZW1wbCwgbmFtZSwgY2Fwcyk7CiAgICAgQVNTRVJUKHBhZCk7CiAK
LSAgICBHc3RQYWQqIGdob3N0UGFkID0gZ3N0X2dob3N0X3BhZF9uZXcoTlVMTCwgcGFkKTsKKyAg
ICBHc3RQYWQqIGdob3N0UGFkID0gR1NUX1BBRChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVEVY
VF9DT01CSU5FUl9QQUQsICJkaXJlY3Rpb24iLCBnc3RfcGFkX2dldF9kaXJlY3Rpb24ocGFkKSwg
TlVMTCkpOwogICAgIEFTU0VSVChnaG9zdFBhZCk7CiAKLSAgICBnc3RfcGFkX2FkZF9wcm9iZShn
aG9zdFBhZCwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sIHdlYmtpdFRleHRD
b21iaW5lclBhZEV2ZW50LCBOVUxMLCBOVUxMKTsKKyAgICByZXQgPSBnc3RfZ2hvc3RfcGFkX2Nv
bnN0cnVjdChHU1RfR0hPU1RfUEFEKGdob3N0UGFkKSk7CisgICAgQVNTRVJUKHJldCk7CisKKyAg
ICByZXQgPSBnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQoR1NUX0dIT1NUX1BBRChnaG9zdFBhZCks
IHBhZCk7CisgICAgQVNTRVJUKHJldCk7CiAKICAgICByZXQgPSBnc3RfcGFkX3NldF9hY3RpdmUo
Z2hvc3RQYWQsIHRydWUpOwogICAgIEFTU0VSVChyZXQpOwpAQCAtMjAxLDYgKzI3NCwxOCBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfdGV4dF9jb21iaW5lcl9jbGFzc19pbml0KFdlYktpdFRleHRDb21i
aW5lckNsYXNzKiBrbGFzcykKICAgICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIod2Via2l0VGV4dENv
bWJpbmVyUmVsZWFzZVBhZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF90ZXh0X2NvbWJpbmVy
X3BhZF9jbGFzc19pbml0KFdlYktpdFRleHRDb21iaW5lclBhZENsYXNzKiBrbGFzcykKK3sKKyAg
ICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKwor
ICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJraXRUZXh0
Q29tYmluZXJQYWRGaW5hbGl6ZSk7CisgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSBH
U1RfREVCVUdfRlVOQ1BUUih3ZWJraXRUZXh0Q29tYmluZXJQYWRHZXRQcm9wZXJ0eSk7CisKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywgUFJPUF9QQURf
VEFHUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJ0YWdzIiwgIlRhZ3MiLCAiVGhlIGN1
cnJlbnRseSBhY3RpdmUgdGFncyBvbiB0aGUgcGFkIiwgR1NUX1RZUEVfVEFHX0xJU1QsCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFS
QU1fU1RBVElDX1NUUklOR1MpKSk7Cit9CisKIEdzdEVsZW1lbnQqIHdlYmtpdFRleHRDb21iaW5l
ck5ldygpCiB7CiAgICAgcmV0dXJuIEdTVF9FTEVNRU5UKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9URVhUX0NPTUJJTkVSLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmgK
aW5kZXggY2Y0NDQyMzg0MjA2MGM2NmM1ZDBjOWEyZGU2NzIyYWU2Yzc5ZDI5ZC4uYTE5MzAzZGMy
NTEwYzhiZTgxNDBmNGQzNTE5ZDAxYzMzMjk1OGNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmlu
ZXJHU3RyZWFtZXIuaApAQCAtNDYsOCArNDYsNiBAQCBzdHJ1Y3QgX1dlYktpdFRleHRDb21iaW5l
ciB7CiAgICAgR3N0QmluIHBhcmVudDsKIAogICAgIEdzdEVsZW1lbnQgKmZ1bm5lbDsKLXByaXZh
dGU6Ci0KIH07CiAKIHN0cnVjdCBfV2ViS2l0VGV4dENvbWJpbmVyQ2xhc3MgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGEzYzQ1ZWZjZDYxZWVh
NzRmY2ZiOTA5OThjZTlkYTBmMDg3MzY1M2UuLmIzMjAxNTc1N2NhNWNkMGI5NTY4NTlmMjNiZGRi
OTM3ZTM3NWFiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ci5jcHAKQEAgLTMxLDggKzMxLDEwIEBACiAKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgog
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJr
aXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9t
ZWRpYV9wbGF5ZXJfZGVidWcKQEAgLTYxLDE2ICs2MywxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gdHJh
Y2tQcml2YXRlVGFnc0NoYW5nZVRpbWVvdXRDYWxsYmFjayhUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyKgogICAgIHJldHVybiBGQUxTRTsKIH0KIAotVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihjb25zdCBjaGFyKiBub3RpZnlBY3RpdmVTaWduYWws
IEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
IHBhZCkKK1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIoVHJhY2tQcml2YXRlQmFzZSogb3duZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBw
YWQpCiAgICAgOiBtX2luZGV4KGluZGV4KQotICAgICwgbV9wbGF5YmluKHBsYXliaW4pCiAgICAg
LCBtX3BhZChwYWQpCisgICAgLCBtX293bmVyKG93bmVyKQogICAgICwgbV9hY3RpdmVUaW1lckhh
bmRsZXIoMCkKICAgICAsIG1fdGFnVGltZXJIYW5kbGVyKDApCiB7CiAgICAgQVNTRVJUKG1fcGFk
KTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheWJpbi5nZXQoKSwgbm90aWZ5QWN0aXZlU2ln
bmFsLCBHX0NBTExCQUNLKHRyYWNrUHJpdmF0ZUFjdGl2ZUNoYW5nZWRDYWxsYmFjayksIHRoaXMp
OworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3BhZC5nZXQoKSwgIm5vdGlmeTo6YWN0aXZlIiwg
R19DQUxMQkFDSyh0cmFja1ByaXZhdGVBY3RpdmVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fcGFkLmdldCgpLCAibm90aWZ5Ojp0YWdzIiwgR19DQUxMQkFD
Syh0cmFja1ByaXZhdGVUYWdzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBub3RpZnlU
cmFja09mVGFnc0NoYW5nZWQoKTsKIH0KIAogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6flRy
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoKQpAQCAtOTUsNyArMTAwLDYgQEAgdm9pZCBUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkKICAgICAgICAgZ19zb3VyY2VfcmVtb3Zl
KG1fdGFnVGltZXJIYW5kbGVyKTsKIAogICAgIG1fcGFkLmNsZWFyKCk7Ci0gICAgbV9wbGF5Ymlu
LmNsZWFyKCk7CiB9CiAKIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6YWN0aXZlQ2hh
bmdlZCgpCkBAIC0xMjYsNDAgKzEzMCwzNCBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXI6Om5vdGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCkKICAgICBzZXRBY3RpdmUoYWN0aXZlKTsK
IH0KIAorYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCog
dGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFN0cmluZyYgdmFsdWUpCit7CisgICAgR093blB0
cjxnY2hhcj4gdGFnVmFsdWU7CisgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3Ms
IHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKKyAgICAgICAgSU5GT19NRURJQV9NRVNT
QUdFKCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0
KCkpOworICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpCiB7CiAgICAgbV90YWdUaW1lckhh
bmRsZXIgPSAwOwogICAgIGlmICghbV9wYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmlu
ZyBsYWJlbDsKLSAgICBTdHJpbmcgbGFuZ3VhZ2U7CisgICAgVHJhY2tQcml2YXRlQmFzZUNsaWVu
dCogY2xpZW50ID0gbV9vd25lci0+Y2xpZW50KCk7CiAgICAgR1JlZlB0cjxHc3RUYWdMaXN0PiB0
YWdzOwogICAgIGdfb2JqZWN0X2dldChtX3BhZC5nZXQoKSwgInRhZ3MiLCAmdGFncy5vdXRQdHIo
KSwgTlVMTCk7Ci0gICAgaWYgKHRhZ3MpIHsKLSAgICAgICAgZ2NoYXIqIHRhZ1ZhbHVlOwotICAg
ICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncy5nZXQoKSwgR1NUX1RBR19USVRM
RSwgJnRhZ1ZhbHVlKSkgewotICAgICAgICAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJWaWRlbyB0
cmFjayAlZCBnb3QgdGl0bGUgJXMuIiwgbV9pbmRleCwgdGFnVmFsdWUpOwotICAgICAgICAgICAg
bGFiZWwgPSB0YWdWYWx1ZTsKLSAgICAgICAgICAgIGdfZnJlZSh0YWdWYWx1ZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncy5nZXQoKSwgR1NU
X1RBR19MQU5HVUFHRV9DT0RFLCAmdGFnVmFsdWUpKSB7Ci0gICAgICAgICAgICBJTkZPX01FRElB
X01FU1NBR0UoIlZpZGVvIHRyYWNrICVkIGdvdCBsYW5ndWFnZSAlcy4iLCBtX2luZGV4LCB0YWdW
YWx1ZSk7Ci0gICAgICAgICAgICBsYW5ndWFnZSA9IHRhZ1ZhbHVlOwotICAgICAgICAgICAgZ19m
cmVlKHRhZ1ZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoIXRhZ3MpCisgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX2xhYmVsICE9IGxhYmVsKSB7Ci0gICAgICAgIG1fbGFiZWwg
PSBsYWJlbDsKLSAgICAgICAgbGFiZWxDaGFuZ2VkKG1fbGFiZWwpOwotICAgIH0KKyAgICBpZiAo
Z2V0VGFnKHRhZ3MuZ2V0KCksIEdTVF9UQUdfVElUTEUsIG1fbGFiZWwpICYmIGNsaWVudCkKKyAg
ICAgICAgY2xpZW50LT5sYWJlbENoYW5nZWQobV9vd25lciwgbV9sYWJlbCk7CiAKLSAgICBpZiAo
bV9sYW5ndWFnZSAhPSBsYW5ndWFnZSkgewotICAgICAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7
Ci0gICAgICAgIGxhbmd1YWdlQ2hhbmdlZChtX2xhbmd1YWdlKTsKLSAgICB9CisgICAgaWYgKGdl
dFRhZyh0YWdzLmdldCgpLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIG1fbGFuZ3VhZ2UpICYmIGNs
aWVudCkKKyAgICAgICAgY2xpZW50LT5sYW5ndWFnZUNoYW5nZWQobV9vd25lciwgbV9sYW5ndWFn
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lci5oCmluZGV4IDRlNTJiYmUxZTAzYzIwZTc0ZjYzYWU5ZWZkZmMwNTQ5
MTU0YTJlMzAuLjk5NWRhNGZmOGE3ZjFlNTBhNjA0NTcwZjY3MDcyOTRjYjQ5YjE2YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaApAQCAtMzMsMTggKzMzLDE3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVHJhY2tQcml2YXRlQmFzZTsKKwog
Y2xhc3MgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGxhYmVsQ2hh
bmdlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxhbmd1YWdlQ2hhbmdl
ZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KICAgICBHc3RQYWQqIHBhZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFkLmdldCgpOyB9CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSB7IH0KIAogICAgIHZvaWQgc2V0SW5k
ZXgoaW50IGluZGV4KSB7IG1faW5kZXggPSAgaW5kZXg7IH0KIApAQCAtNTUsMTYgKzU0LDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihjb25zdCBjaGFyKiBub3RpZnlBY3Rp
dmVTaWduYWwsIEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0
cjxHc3RQYWQ+KTsKKyAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJh
c2UqIG93bmVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwogCiAgICAgZ2ludCBtX2lu
ZGV4OwotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9wbGF5YmluOwotCiAgICAgU3RyaW5nIG1f
bGFiZWw7CiAgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CisgICAgR1JlZlB0cjxHc3RQYWQ+IG1fcGFk
OwogCiBwcml2YXRlOgotICAgIEdSZWZQdHI8R3N0UGFkPiBtX3BhZDsKKyAgICBib29sIGdldFRh
ZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgU3RyaW5nJiB2YWx1ZSk7
CisKKyAgICBUcmFja1ByaXZhdGVCYXNlKiBtX293bmVyOwogICAgIGd1aW50IG1fYWN0aXZlVGlt
ZXJIYW5kbGVyOwogICAgIGd1aW50IG1fdGFnVGltZXJIYW5kbGVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDk1OGM5Mjk5ZjJjMmY3
MmIzMjY4OTgyZjI0MGJlNGU1MDg5YjI4OWQuLjI3ZGU1N2ZkNjFkMGU5Yjk0ZWY0NTFhN2FkM2U2
MGU0Zjc3MmJhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtMzQsMTAgKzM0LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihHUmVmUHRy
PEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCi0g
ICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKCJub3RpZnk6OmN1cnJlbnQtdmlkZW8iLCBw
bGF5YmluLCBpbmRleCwgcGFkKQorICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlz
LCBpbmRleCwgcGFkKQorICAgICwgbV9wbGF5YmluKHBsYXliaW4pCiB7Ci0gICAgYWN0aXZlQ2hh
bmdlZCgpOwotICAgIHRhZ3NDaGFuZ2VkKCk7CisgICAgbm90aWZ5VHJhY2tPZkFjdGl2ZUNoYW5n
ZWQoKTsKK30KKwordm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCgp
Cit7CisgICAgbV9wbGF5YmluLmNsZWFyKCk7CisgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cjo6ZGlzY29ubmVjdCgpOwogfQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpz
ZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQpAQCAtNTAsMTggKzU2LDYgQEAgdm9pZCBWaWRlb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkKICAgICAgICAg
Z19vYmplY3Rfc2V0KG1fcGxheWJpbi5nZXQoKSwgImN1cnJlbnQtdmlkZW8iLCBtX2luZGV4LCBO
VUxMKTsKIH0KIAotdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bGFiZWxDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgbGFiZWwpCi17Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGll
bnQoKS0+bGFiZWxDaGFuZ2VkKHRoaXMsIGxhYmVsKTsKLX0KLQotdm9pZCBWaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi17
Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+bGFuZ3VhZ2VDaGFuZ2VkKHRo
aXMsIGxhbmd1YWdlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oCmluZGV4IGU3ZGYzYTRmNzVhOGMxNjM4N2M3ODVlYzMwZThjNzZiMzg0
ZjNhMTcuLmFlZjFmNThlZDUyNTg3NDYyMWI3YTFhZDI3MDUxZmQxMDMxNGQ1OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00MSw2ICs0MSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lk
IGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChi
b29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgZW5hYmxlZCkg
T1ZFUlJJREUgeyBzZXRTZWxlY3RlZChlbmFibGVkKTsgfQogCkBAIC00OSwxMSArNTEsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9sYWJlbDsgfQogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGxhYmVsQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotCiBwcml2YXRlOgogICAg
IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwg
Z2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+KTsKKworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
bV9wbGF5YmluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>