<?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>77005</bug_id>
          
          <creation_ts>2012-01-25 06:40:52 -0800</creation_ts>
          <short_desc>[GStreamer] 0.11 support for Media elements</short_desc>
          <delta_ts>2012-06-19 19:48:12 -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>WebKitGTK</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>
          <dependson>77085</dependson>
    
    <dependson>77086</dependson>
    
    <dependson>77087</dependson>
    
    <dependson>77088</dependson>
    
    <dependson>77089</dependson>
    
    <dependson>84029</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>levin+threading</cc>
    
    <cc>slomo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>542228</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 06:40:52 -0800</bug_when>
    <thetext>We should support the 0.11 APIs.
A ./configure --with-gstreamer=0.11 could be used to build (defaulting to 0.10).

For video rendering we will need a new video-sink that will initially provide the same features as the current 0.10 video-sink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542232</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 06:58:19 -0800</bug_when>
    <thetext>Also, the GStreamerGWorld module is not really worth porting as it&apos;s planned to be removed soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542272</commentid>
    <comment_count>2</comment_count>
      <attachid>123944</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 08:01:13 -0800</bug_when>
    <thetext>Created attachment 123944
Patch

First iteration :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542275</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 08:05:50 -0800</bug_when>
    <thetext>I can probably find a way to split this patch if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542276</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 08:06:03 -0800</bug_when>
    <thetext>Attachment 123944 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1

Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:67:  webkit_video_sink_signals is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:71:  timeout_id is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:72:  buffer_mutex is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:73:  data_cond is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:331:  need_pool is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:362:  n_param_values is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:363:  invocation_hint is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:387:  gobject_class is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:388:  gstbase_sink_class is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp:389:  element_class is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 10 in 22 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>543005</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-26 02:55:11 -0800</bug_when>
    <thetext>I&apos;m going to split this in 4 patches:

- build infrastructure
- webkitwebsrc changes
- video-sink
- disable GStreamerGWorld</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543026</commentid>
    <comment_count>6</comment_count>
      <attachid>123944</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-26 03:32:54 -0800</bug_when>
    <thetext>Comment on attachment 123944
Patch

Went through the patch split machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653112</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-19 19:48:12 -0700</bug_when>
    <thetext>Last patch landed. Next step would be to have test coverage on the bots. I&apos;ll file a separate bug for this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123944</attachid>
            <date>2012-01-25 08:01:13 -0800</date>
            <delta_ts>2012-01-26 03:32:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>61393</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyZjUwYmFhNzU0YTgyZWNhNDU1YzVhNTcwMTk4YTE4OWM2MjU4NjZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI1IEphbiAyMDEyIDE2OjU5OjU0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICA2NyArKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
ICAgICAgICAgICAgICAgIHwgICAgMSArCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwICAgICAgICB8ICAgMTYgKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJHV29ybGQuY3BwICAgICAgICAgfCAgICAyICsKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAgMiArCiAuLi4vcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmggICB8ICAgIDIgKy0KIC4uLi9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDRy5tbSAgICAgICAgIHwgICAzMCArLQogLi4uL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcCAgICAgfCAgIDI3ICstCiAuLi4v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyUXQuY3BwICAgICAgICB8ICAgMjcgKy0K
IC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDEx
MyArKysrKy0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggICAg
ICAgIHwgICAgMiArCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5j
cHAgICAgICB8ICAgIDIgKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFt
ZXIuaCAgICAgICAgfCAgICA1ICsKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0
cmVhbWVyMS5jcHAgICAgIHwgIDQzMiArKysrKysrKysrKysrKysrKysrKwogLi4uL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgMTcwICsrKysrKy0tCiBT
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkg
KwogLi4uL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwICAgfCAg
ICAyICstCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
aCB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAg
ICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdw
cml2YXRlLmggICAgfCAgICAyICstCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgNTIgKystCiAyMiBmaWxlcyBjaGFuZ2VkLCA4OTMgaW5zZXJ0
aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lcjEuY3BwCgpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDE2ZjM2ZGUuLjk0Mjk3ZDMg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dTdHJlYW1lcl0gMC4xMSBzdXBwb3J0IGZvciBNZWRpYSBlbGVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwMDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzog
TmV3IC0td2l0aC1nc3RyZWFtZXIgb3B0aW9uLCBkZWZhdWx0aW5nIHRvIDAuMTAuCisKIDIwMTIt
MDEtMjUgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgPHN0eWxlIHNjb3BlZD46IEltcGxlbWVudCByZWdpc3RlcmluZyBvZiA8c3R5bGUgc2Nv
cGVkPiB3aXRoIHRoZSBzY29waW5nIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZjRlNDIxLi42ZTI1
ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTItMDEtMjUgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIDAuMTEg
c3VwcG9ydCBmb3IgTWVkaWEgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc3MDA1CisKKyAgICAgICAgUG9ydCB0byBHU3RyZWFtZXIgMC4x
MS4gVGhlIG9ubHkgdmlzaWJsZSBjaGFuZ2UgaXMgdGhhdCB0aGUKKyAgICAgICAgRnVsbHNjcmVl
biB2aWRlbyBjb250cm9sbGVyIGlzIG5vIGxvbmdlciB1c2VkLiBUaGlzIHBhcnQgb2YgdGhlCisg
ICAgICAgIGJhY2tlbmQgaXMgbm90IHBvcnRlZCB0byBHU3RyZWFtZXIgMC4xMSBiZWNhdXNlIGl0
IGlzIHBsYW5uZWQgdG8KKyAgICAgICAgcmVtb3ZlIGl0IHNvb24uIFRoZSBjaGFuZ2VzIGluIHRo
ZSB2aWRlby1zaW5rIHdlcmUgYWxzbyBzbworICAgICAgICBpbXBvcnRhbnQgdGhhdCBhIG5ldyBj
b2RlIGJhc2Ugd2FzIHJlcXVpcmVkIGZvciBpdC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIG1lZGlhIGxheW91
dCB0ZXN0cyBjb3ZlciB0aGlzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRk
IG5ldyB2aWRlbyBzaW5rIGNvZGUgdG8gdGhlIGJ1aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgZ3N0X29iamVj
dF9yZWZfc2luayBpcyBub3cgcHJlZmVycmVkIHRvIGNvbWJpbmVkIF9yZWYgKyBfc2luayBjYWxs
cy4KKyAgICAgICAgKFdURjo6R3N0RWxlbWVudCk6CisgICAgICAgIChXVEY6OkdzdFBhZCk6Cisg
ICAgICAgIChXVEY6OkdzdFBhZFRlbXBsYXRlKToKKyAgICAgICAgKFdURjo6R3N0VGFzayk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHA6
IERvbid0IGJ1aWxkIGlmCisgICAgICAgIGdzdCAwLjExIGlzIGVuYWJsZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaDogY3Jl
YXRlSW1hZ2UgQVBJCisgICAgICAgIHVwZGF0ZSBzbyBpbXBsZW1lbnRhdGlvbnMgZG9uJ3QgbmVl
ZCB0byB1c2UKKyAgICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF9wYXJzZV9jYXBzIHdoaWNoIGhhcyBi
ZWVuIHJlbW92ZWQgaW4gZ3N0LTAuMTEuCisgICAgICAgIChJbWFnZUdTdHJlYW1lcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ0cubW06Cisg
ICAgICAgIChJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoSW1hZ2VHU3Ry
ZWFtZXI6OkltYWdlR1N0cmVhbWVyKTogVXNlIHRoZSBuZXcgZ3N0X2J1ZmZlcl97LHVufW1hcCBB
UElzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcDoKKyAgICAgICAgKEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZSk6CisgICAg
ICAgIChJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIpOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHA6CisgICAgICAg
IChJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoSW1hZ2VHU3RyZWFtZXI6
OkltYWdlR1N0cmVhbWVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXR1cmFsU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6
IEJ1aWxkIG9ubHkKKyAgICAgICAgZm9yIGdzdC0wLjEwLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaDogTm8gbmVlZCBmb3IKKyAgICAg
ICAgR1N0cmVhbWVyR1dvcmxkIGluIHRoZSBnc3QtMC4xMSB2aWRlbyBzaW5rLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIxLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
U2lua0dTdHJlYW1lci5jcHAuCisgICAgICAgIChfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk6Cisg
ICAgICAgICh3ZWJraXRfdmlkZW9fc2lua19pbml0KToKKyAgICAgICAgKHdlYmtpdF92aWRlb19z
aW5rX3RpbWVvdXRfZnVuYyk6CisgICAgICAgICh3ZWJraXRfdmlkZW9fc2lua19yZW5kZXIpOgor
ICAgICAgICAod2Via2l0X3ZpZGVvX3NpbmtfZGlzcG9zZSk6CisgICAgICAgICh1bmxvY2tfYnVm
ZmVyX211dGV4KToKKyAgICAgICAgKHdlYmtpdF92aWRlb19zaW5rX3VubG9jayk6CisgICAgICAg
ICh3ZWJraXRfdmlkZW9fc2lua191bmxvY2tfc3RvcCk6CisgICAgICAgICh3ZWJraXRfdmlkZW9f
c2lua19zdG9wKToKKyAgICAgICAgKHdlYmtpdF92aWRlb19zaW5rX3N0YXJ0KToKKyAgICAgICAg
KHdlYmtpdF92aWRlb19zaW5rX3Byb3Bvc2VfYWxsb2NhdGlvbik6CisgICAgICAgIChtYXJzaGFs
X1ZPSURfX01JTklPQkpFQ1QpOgorICAgICAgICAod2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5p
dCk6CisgICAgICAgICh3ZWJraXRfdmlkZW9fc2lua19uZXcpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAod2Via2l0X3dlYl9zcmNfY2xhc3NfaW5pdCk6CisKIDIwMTItMDEtMjUgIFJvbGFuZCBTdGVp
bmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgPHN0eWxlIHNjb3Bl
ZD46IEltcGxlbWVudCByZWdpc3RlcmluZyBvZiA8c3R5bGUgc2NvcGVkPiB3aXRoIHRoZSBzY29w
aW5nIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDIxOTU4NmYuLjdk
ZmVhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQ2OCw2ICs0NDY4LDcg
QEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1l
ci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyMS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQ
dHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmluZGV4IDI0MjdjMDYuLjNiYTU4MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKQEAgLTM0LDggKzM0LDEyIEBAIHRlbXBsYXRlIDw+IEdS
ZWZQdHI8R3N0RWxlbWVudD4gYWRvcHRHUmVmKEdzdEVsZW1lbnQqIHB0cikKIHRlbXBsYXRlIDw+
IEdzdEVsZW1lbnQqIHJlZkdQdHI8R3N0RWxlbWVudD4oR3N0RWxlbWVudCogcHRyKQogewogICAg
IGlmIChwdHIpIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgICAgICBnc3Rfb2JqZWN0
X3JlZl9zaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisjZWxzZQogICAgICAgICBnc3Rfb2JqZWN0X3Jl
ZihHU1RfT0JKRUNUKHB0cikpOwogICAgICAgICBnc3Rfb2JqZWN0X3NpbmsoR1NUX09CSkVDVChw
dHIpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiBwdHI7CkBAIC01Niw4ICs2MCwxMiBA
QCB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFBhZD4gYWRvcHRHUmVmKEdzdFBhZCogcHRyKQogdGVt
cGxhdGUgPD4gR3N0UGFkKiByZWZHUHRyPEdzdFBhZD4oR3N0UGFkKiBwdHIpCiB7CiAgICAgaWYg
KHB0cikgeworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIGdzdF9vYmplY3RfcmVm
X3NpbmsoR1NUX09CSkVDVChwdHIpKTsKKyNlbHNlCiAgICAgICAgIGdzdF9vYmplY3RfcmVmKEdT
VF9PQkpFQ1QocHRyKSk7CiAgICAgICAgIGdzdF9vYmplY3Rfc2luayhHU1RfT0JKRUNUKHB0cikp
OworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBwdHI7CiB9CkBAIC03Nyw4ICs4NSwxMiBAQCB0
ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPiBhZG9wdEdSZWYoR3N0UGFkVGVtcGxh
dGUqIHB0cikKIHRlbXBsYXRlIDw+IEdzdFBhZFRlbXBsYXRlKiByZWZHUHRyPEdzdFBhZFRlbXBs
YXRlPihHc3RQYWRUZW1wbGF0ZSogcHRyKQogewogICAgIGlmIChwdHIpIHsKKyNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQorICAgICAgICBnc3Rfb2JqZWN0X3JlZl9zaW5rKEdTVF9PQkpFQ1QocHRy
KSk7CisjZWxzZQogICAgICAgICBnc3Rfb2JqZWN0X3JlZihHU1RfT0JKRUNUKHB0cikpOwogICAg
ICAgICBnc3Rfb2JqZWN0X3NpbmsoR1NUX09CSkVDVChwdHIpKTsKKyNlbmRpZgogICAgIH0KICAg
ICByZXR1cm4gcHRyOwogfQpAQCAtMTEyLDggKzEyNCwxMiBAQCB0ZW1wbGF0ZSA8PiBHUmVmUHRy
PEdzdFRhc2s+IGFkb3B0R1JlZihHc3RUYXNrKiBwdHIpCiB0ZW1wbGF0ZSA8PiBHc3RUYXNrKiBy
ZWZHUHRyPEdzdFRhc2s+KEdzdFRhc2sqIHB0cikKIHsKICAgICBpZiAocHRyKSB7CisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNU
KHB0cikpOworI2Vsc2UKICAgICAgICAgZ3N0X29iamVjdF9yZWYoR1NUX09CSkVDVChwdHIpKTsK
ICAgICAgICAgZ3N0X29iamVjdF9zaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisjZW5kaWYKICAgICB9
CiAKICAgICByZXR1cm4gcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAppbmRleCA0NTM2
MzQyLi5iNjNmZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcApAQCAtMTksNiArMTks
NyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgi
CisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgpAQCAtMjE3LDMgKzIxOCw0
IEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1l
c3NhZ2UpCiAKIH0KICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQorI2VuZGlmIC8vICFHU1RfQVBJ
X1ZFUlNJT05fMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCmluZGV4IDc0Y2E4NGMuLjAwOGViMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJHV29ybGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2lmbmRlZiBH
U3RyZWFtZXJHV29ybGRfaAogI2RlZmluZSBHU3RyZWFtZXJHV29ybGRfaAorI2lmbmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIAogI2lu
Y2x1ZGUgIkdPd25QdHIuaCIKQEAgLTY2LDQgKzY3LDUgQEAgcHJpdmF0ZToKIAogfQogI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVIpCisjZW5kaWYgLy8gIUdTVF9BUElfVkVSU0lPTl8xCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKaW5kZXggYWI3OTliYS4uMTczZGFkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgSW1h
Z2VHU3RyZWFtZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUdTdHJlYW1lcj4gewogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGNyZWF0ZUlt
YWdlKEdzdEJ1ZmZlciopOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUdTdHJlYW1l
cj4gY3JlYXRlSW1hZ2UoR3N0QnVmZmVyKiwgSW50U2l6ZSwgR3N0VmlkZW9Gb3JtYXQpOwogICAg
ICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIAogICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdl
PiBpbWFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDRy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNHLm1tCmluZGV4IGZlMDkyOGIuLjIyODA0
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZUdTdHJlYW1lckNHLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNHLm1tCkBAIC0yNSwyOSArMjUsMzUgQEAKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IElt
YWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShHc3RCdWZmZXIqIGJ1ZmZlcikKK1Bhc3NSZWZQdHI8
SW1hZ2VHU3RyZWFtZXI+IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShHc3RCdWZmZXIqIGJ1
ZmZlciwgSW50U2l6ZSBzaXplLCBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQpCiB7Ci0gICAgaW50IHdp
ZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2J1ZmZlcl9nZXRf
Y2FwcyhidWZmZXIpOwotICAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKLSAgICBpZiAoIWdzdF92
aWRlb19mb3JtYXRfcGFyc2VfY2FwcyhjYXBzLCAmZm9ybWF0LCAmd2lkdGgsICZoZWlnaHQpKSB7
Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKGJ1ZmZlciwgSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3Ry
ZWFtZXIoYnVmZmVyLCBzaXplKSk7CiB9CiAKIEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1l
cihHc3RCdWZmZXIqJiBidWZmZXIsIEludFNpemUgc2l6ZSkKICAgICA6IG1faW1hZ2UoMCkKIHsK
LSAgICBBU1NFUlQoR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcikpOwogCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gZGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoMCwgc3Rh
dGljX2Nhc3Q8VUludDgqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSksIEdTVF9CVUZGRVJfU0la
RShidWZmZXIpLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
KyAgICBHc3RNYXBJbmZvIGluZm87CisgICAgZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAmaW5mbywg
R1NUX01BUF9SRUFEKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXJEYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaW5mby5kYXRhKTsKKyNlbHNlCisgICAgZ3VpbnQgYnVm
ZmVyU2l6ZSA9IEdTVF9CVUZGRVJfU0laRShidWZmZXIpOworICAgIGNvbnN0IFVJbnQ4KiBidWZm
ZXJEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KEdTVF9CVUZGRVJfREFUQShi
dWZmZXIpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGJ1ZmZlclNpemUpOworCisgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHko
MCwgYnVmZmVyRGF0YSwgYnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gcHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJD
cmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKICAgICBDR0ltYWdlUmVmIGZyYW1lSW1hZ2Ug
PSBDR0ltYWdlQ3JlYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHNpemUu
d2lkdGgoKSo0LCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksCiAgICAgICAgIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYUZpcnN0LCBwcm92aWRlci5nZXQoKSwgMCwg
ZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOwogICAgIG1faW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKGZyYW1lSW1hZ2UpOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAg
ICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJmluZm8pOworI2VuZGlmCiB9CiAKIEltYWdlR1N0
cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8u
Y3BwCmluZGV4IDhiM2EwNzYuLmMxZmVmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJD
YWlyby5jcHAKQEAgLTI3LDM1ICsyNywzNiBAQAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QYXNzUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBJbWFnZUdT
dHJlYW1lcjo6Y3JlYXRlSW1hZ2UoR3N0QnVmZmVyKiBidWZmZXIpCitQYXNzUmVmUHRyPEltYWdl
R1N0cmVhbWVyPiBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UoR3N0QnVmZmVyKiBidWZmZXIs
IEludFNpemUgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0KQogewotICAgIGludCB3aWR0aCA9
IDAsIGhlaWdodCA9IDA7Ci0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9idWZmZXJfZ2V0X2NhcHMo
YnVmZmVyKTsKLSAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7Ci0gICAgaWYgKCFnc3RfdmlkZW9f
Zm9ybWF0X3BhcnNlX2NhcHMoY2FwcywgJmZvcm1hdCwgJndpZHRoLCAmaGVpZ2h0KSkgewotICAg
ICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7Ci0KICAgICBjYWlyb19mb3JtYXRfdCBjYWlyb0Zvcm1h
dDsKICAgICBpZiAoZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfQVJHQiB8fCBmb3JtYXQgPT0g
R1NUX1ZJREVPX0ZPUk1BVF9CR1JBKQogICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1B
VF9BUkdCMzI7CiAgICAgZWxzZQogICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1BVF9S
R0IyNDsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFtZXIoYnVmZmVyLCBJ
bnRTaXplKHdpZHRoLCBoZWlnaHQpLCBjYWlyb0Zvcm1hdCkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW1hZ2VHU3RyZWFtZXIoYnVmZmVyLCBzaXplLCBjYWlyb0Zvcm1hdCkpOwogfQogCiBJ
bWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0QnVmZmVyKiYgYnVmZmVyLCBJbnRTaXpl
IHNpemUsIGNhaXJvX2Zvcm1hdF90JiBjYWlyb0Zvcm1hdCkKICAgICA6IG1faW1hZ2UoMCkKIHsK
LSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZV9mb3JfZGF0YShHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSwgY2Fpcm9Gb3JtYXQsCisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHc3RNYXBJbmZvIGluZm87CisgICAgZ3N0X2J1ZmZlcl9t
YXAoYnVmZmVyLCAmaW5mbywgR1NUX01BUF9SRUFEKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZm
ZXJEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaW5mby5kYXRhKTsKKyNl
bHNlCisgICAgdW5zaWduZWQgY2hhciogYnVmZmVyRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgY2hhcio+KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKTsKKyNlbmRpZgorICAgIGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRh
KGJ1ZmZlckRhdGEsIGNhaXJvRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19mb3Jt
YXRfc3RyaWRlX2Zvcl93aWR0aChjYWlyb0Zvcm1hdCwgc2l6ZS53aWR0aCgpKSk7CiAgICAgQVNT
RVJUKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpID09IENBSVJPX1NUQVRVU19TVUNDRVNT
KTsKICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShzdXJmYWNlKTsKKworI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsICZpbmZvKTsK
KyNlbmRpZgogfQogCiBJbWFnZUdTdHJlYW1lcjo6fkltYWdlR1N0cmVhbWVyKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lclF0LmNwcAppbmRleCAxODhjMGJiLi5jMjUzNDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlR1N0cmVhbWVyUXQuY3BwCkBAIC0yNiwzNCArMjYsMzUgQEAKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUGFzc1JlZlB0cjxJbWFnZUdTdHJlYW1l
cj4gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKEdzdEJ1ZmZlciogYnVmZmVyKQorUGFzc1Jl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKEdzdEJ1ZmZl
ciogYnVmZmVyLCBJbnRTaXplIHNpemUsIEdzdFZpZGVvRm9ybWF0IGZvcm1hdCkKIHsKLSAgICBp
bnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwotICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfYnVmZmVy
X2dldF9jYXBzKGJ1ZmZlcik7Ci0gICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OwotICAgIGlmICgh
Z3N0X3ZpZGVvX2Zvcm1hdF9wYXJzZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdo
dCkpIHsKLSAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwotCiAgICAgUUltYWdlOjpGb3JtYXQg
aW1hZ2VGb3JtYXQ7CiAgICAgaWYgKGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1JHQikKICAg
ICAgICAgaW1hZ2VGb3JtYXQgPSBRSW1hZ2U6OkZvcm1hdF9SR0I4ODg7CiAgICAgZWxzZQogICAg
ICAgICBpbWFnZUZvcm1hdCA9IFFJbWFnZTo6Rm9ybWF0X1JHQjMyOwogCi0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbWFnZUdTdHJlYW1lcihidWZmZXIsIEludFNpemUod2lkdGgsIGhlaWdodCks
IGltYWdlRm9ybWF0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUdTdHJlYW1lcihi
dWZmZXIsIHNpemUsIGltYWdlRm9ybWF0KSk7CiB9CiAKIEltYWdlR1N0cmVhbWVyOjpJbWFnZUdT
dHJlYW1lcihHc3RCdWZmZXIqJiBidWZmZXIsIEludFNpemUgc2l6ZSwgUUltYWdlOjpGb3JtYXQg
aW1hZ2VGb3JtYXQpCiAgICAgOiBtX2ltYWdlKDApCiB7CiAgICAgUVBpeG1hcCogc3VyZmFjZSA9
IG5ldyBRUGl4bWFwOwotICAgIFFJbWFnZSBpbWFnZShHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBpbWFnZUZvcm1hdCk7CisjaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKKyAgICBHc3RNYXBJbmZvIGluZm87CisgICAgZ3N0X2J1ZmZlcl9tYXAoYnVm
ZmVyLCAmaW5mbywgR1NUX01BUF9SRUFEKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXJEYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaW5mby5kYXRhKTsKKyNlbHNlCisg
ICAgdWNoYXIqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVjaGFyKj4oR1NUX0JVRkZF
Ul9EQVRBKGJ1ZmZlcikpOworI2VuZGlmCisgICAgUUltYWdlIGltYWdlKGJ1ZmZlckRhdGEsIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgaW1hZ2VGb3JtYXQpOwogICAgIHN1cmZhY2UtPmNv
bnZlcnRGcm9tSW1hZ2UoaW1hZ2UpOwogICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRl
KHN1cmZhY2UpOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnc3RfYnVmZmVyX3Vu
bWFwKGJ1ZmZlciwgJmluZm8pOworI2VuZGlmCiB9CiAKIEltYWdlR1N0cmVhbWVyOjp+SW1hZ2VH
U3RyZWFtZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBlMjhiNjdiLi5kNTU5ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNDYsNyArNDYsMTEgQEAKICNpbmNsdWRlICJX
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDxHT3duUHRyLmg+CiAjaW5jbHVk
ZSA8Z3N0L2dzdC5oPgorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaW5jbHVkZSA8Z3N0L2F1
ZGlvL3N0cmVhbXZvbHVtZS5oPgorI2Vsc2UKICNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9zdHJl
YW12b2x1bWUuaD4KKyNlbmRpZgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1
ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxtYXRoLmg+CkBAIC02Nyw2ICs3MSwxMiBAQCB0eXBlZGVm
IGVudW0gewogICAgIEdTVF9QTEFZX0ZMQUdfQlVGRkVSSU5HICAgICA9IDB4MDAwMDAwMTAwCiB9
IEdzdFBsYXlGbGFnczsKIAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjZGVmaW5lIFBMQVlC
SU5fTkFNRSAicGxheWJpbiIKKyNlbHNlCisjZGVmaW5lIFBMQVlCSU5fTkFNRSAicGxheWJpbjIi
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTg2LDcgKzE5Niw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppc0F2
YWlsYWJsZSgpCiAgICAgaWYgKCFkb0dzdEluaXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgR3N0RWxlbWVudEZhY3RvcnkqIGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2Zp
bmQoInBsYXliaW4yIik7CisgICAgR3N0RWxlbWVudEZhY3RvcnkqIGZhY3RvcnkgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X2ZpbmQoUExBWUJJTl9OQU1FKTsKICAgICBpZiAoZmFjdG9yeSkgewogICAg
ICAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1QoZmFjdG9yeSkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTM5Miw3ICs0MDIsMTIgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpkdXJhdGlvbigpIGNvbnN0CiAgICAgR3N0Rm9ybWF0IHRpbWVGb3JtYXQgPSBHU1Rf
Rk9STUFUX1RJTUU7CiAgICAgZ2ludDY0IHRpbWVMZW5ndGggPSAwOwogCi0gICAgaWYgKCFnc3Rf
ZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BsYXlCaW4sICZ0aW1lRm9ybWF0LCAmdGltZUxlbmd0
aCkgfHwgdGltZUZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUgfHwgc3RhdGljX2Nhc3Q8Z3VpbnQ2
ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgeworI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCisgICAgYm9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9u
KG1fcGxheUJpbiwgdGltZUZvcm1hdCwgJnRpbWVMZW5ndGgpIHx8IHN0YXRpY19jYXN0PGd1aW50
NjQ+KHRpbWVMZW5ndGgpID09IEdTVF9DTE9DS19USU1FX05PTkU7CisjZWxzZQorICAgIGJvb2wg
ZmFpbHVyZSA9ICFnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BsYXlCaW4sICZ0aW1lRm9y
bWF0LCAmdGltZUxlbmd0aCkgfHwgdGltZUZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUgfHwgc3Rh
dGljX2Nhc3Q8Z3VpbnQ2ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyNl
bmRpZgorICAgIGlmIChmYWlsdXJlKSB7CiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiVGlt
ZSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQuIik7CiAgICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0
czxmbG9hdD46OmluZmluaXR5KCk7CiAgICAgfQpAQCAtNDg1LDggKzUwMCw2IEBAIEludFNpemUg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAgICAgaWYg
KCFwYWQpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKLSAgICBndWludDY0IHdpZHRoID0g
MCwgaGVpZ2h0ID0gMDsKLSAgICBHc3RDYXBzKiBjYXBzID0gR1NUX1BBRF9DQVBTKHBhZC5nZXQo
KSk7CiAgICAgaW50IHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9E
ZW5vbWluYXRvcjsKICAgICBpbnQgZGlzcGxheVdpZHRoLCBkaXNwbGF5SGVpZ2h0LCBkaXNwbGF5
QXNwZWN0UmF0aW9HQ0Q7CiAgICAgaW50IG9yaWdpbmFsV2lkdGggPSAwLCBvcmlnaW5hbEhlaWdo
dCA9IDA7CkBAIC00OTgsMTEgKzUxMSwzMSBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bmF0dXJhbFNpemUoKSBjb25zdAogCiAgICAgLy8gR2V0IHRoZSB2aWRlbyBQQVIg
YW5kIG9yaWdpbmFsIHNpemUsIGlmIHRoaXMgZmFpbHMgdGhlCiAgICAgLy8gdmlkZW8tc2luayBo
YXMgbGlrZWx5IG5vdCB5ZXQgbmVnb3RpYXRlZCBpdHMgY2Fwcy4KKyNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQorICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMocGFk
LmdldCgpKTsKKyAgICBpZiAoIWNhcHMpCisgICAgICAgIGNhcHMgPSBnc3RfcGFkX3F1ZXJ5X2Nh
cHMocGFkLmdldCgpLCAwKTsKKworICAgIEdzdFZpZGVvSW5mbyBpbmZvOworICAgIGlmICghZ3N0
X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkgeworICAgICAgICBnX3ByaW50ZXJy
KCJubyBpbmZvXG4iKTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICB9CisKKyAgICBv
cmlnaW5hbFdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pOworICAgIG9yaWdpbmFs
SGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZpbmZvKTsKKyAgICBwaXhlbEFzcGVjdFJh
dGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8pOworICAgIHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsKKyNlbHNl
CisgICAgR3N0Q2FwcyogY2FwcyA9IEdTVF9QQURfQ0FQUyhwYWQuZ2V0KCkpOworCisgICAgLy8g
R2V0IHRoZSB2aWRlbyBQQVIgYW5kIG9yaWdpbmFsIHNpemUuCiAgICAgaWYgKCFHU1RfSVNfQ0FQ
UyhjYXBzKSB8fCAhZ3N0X2NhcHNfaXNfZml4ZWQoY2FwcykKICAgICAgICAgfHwgIWdzdF92aWRl
b19mb3JtYXRfcGFyc2VfY2FwcyhjYXBzLCAwLCAmb3JpZ2luYWxXaWR0aCwgJm9yaWdpbmFsSGVp
Z2h0KQogICAgICAgICB8fCAhZ3N0X3ZpZGVvX3BhcnNlX2NhcHNfcGl4ZWxfYXNwZWN0X3JhdGlv
KGNhcHMsICZwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0
b3IpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOworI2VuZGlmCiAKICAgICBMT0dfVkVSQk9T
RShNZWRpYSwgIk9yaWdpbmFsIHZpZGVvIHNpemU6ICVkeCVkIiwgb3JpZ2luYWxXaWR0aCwgb3Jp
Z2luYWxIZWlnaHQpOwogICAgIExPR19WRVJCT1NFKE1lZGlhLCAiUGl4ZWwgYXNwZWN0IHJhdGlv
OiAlZC8lZCIsIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9EZW5v
bWluYXRvcik7CkBAIC01MTcsNiArNTUwLDcgQEAgSW50U2l6ZSBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5hdHVyYWxTaXplKCkgY29uc3QKICAgICBkaXNwbGF5SGVpZ2h0IC89IGRpc3Bs
YXlBc3BlY3RSYXRpb0dDRDsKIAogICAgIC8vIEFwcGx5IERBUiB0byBvcmlnaW5hbCB2aWRlbyBz
aXplLiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGluIHh2aW1hZ2VzaW5rJ3Mgc2V0Y2Fw
cyBmdW5jdGlvbi4KKyAgICBndWludDY0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKICAgICBpZiAo
IShvcmlnaW5hbEhlaWdodCAlIGRpc3BsYXlIZWlnaHQpKSB7CiAgICAgICAgIExPR19WRVJCT1NF
KE1lZGlhLCAiS2VlcGluZyB2aWRlbyBvcmlnaW5hbCBoZWlnaHQiKTsKICAgICAgICAgd2lkdGgg
PSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KG9yaWdpbmFsSGVpZ2h0LCBkaXNwbGF5V2lkdGgs
IGRpc3BsYXlIZWlnaHQpOwpAQCAtOTIxLDcgKzk1NSwxMSBAQCB1bnNpZ25lZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBjb25zdAogCiAgICAgR3N0Rm9ybWF0IGZt
dCA9IEdTVF9GT1JNQVRfQllURVM7CiAgICAgZ2ludDY0IGxlbmd0aCA9IDA7CisjaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKKyAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24obV9zb3Vy
Y2UsIGZtdCwgJmxlbmd0aCkpIHsKKyNlbHNlCiAgICAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5X2R1
cmF0aW9uKG1fc291cmNlLCAmZm10LCAmbGVuZ3RoKSkgeworI2VuZGlmCiAgICAgICAgIExPR19W
RVJCT1NFKE1lZGlhLCAidG90YWxCeXRlcyAlIiBHX0dJTlQ2NF9GT1JNQVQsIGxlbmd0aCk7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsKICAgICB9CkBAIC05
MzEsNiArOTY5LDE5IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90
YWxCeXRlcygpIGNvbnN0CiAgICAgR3N0SXRlcmF0b3IqIGl0ZXIgPSBnc3RfZWxlbWVudF9pdGVy
YXRlX3NyY19wYWRzKG1fc291cmNlKTsKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICB3aGls
ZSAoIWRvbmUpIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgICAgICBHVmFsdWUgaXRl
bSA9IHswLCB9OworICAgICAgICBzd2l0Y2ggKGdzdF9pdGVyYXRvcl9uZXh0KGl0ZXIsICZpdGVt
KSkgeworICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9PSzogeworICAgICAgICAgICAgR3N0UGFk
KiBwYWQgPSByZWludGVycHJldF9jYXN0PEdzdFBhZCo+KGdfdmFsdWVfZHVwX29iamVjdCgmaXRl
bSkpOworICAgICAgICAgICAgZ2ludDY0IHBhZExlbmd0aCA9IDA7CisgICAgICAgICAgICBpZiAo
Z3N0X3BhZF9xdWVyeV9kdXJhdGlvbihwYWQsIGZtdCwgJnBhZExlbmd0aCkKKyAgICAgICAgICAg
ICAgICAmJiBwYWRMZW5ndGggPiBsZW5ndGgpCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gcGFk
TGVuZ3RoOworICAgICAgICAgICAgZ3N0X29iamVjdF91bnJlZihwYWQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGdwb2ludGVyIGRhdGE7CiAKICAgICAg
ICAgc3dpdGNoIChnc3RfaXRlcmF0b3JfbmV4dChpdGVyLCAmZGF0YSkpIHsKQEAgLTk0Miw2ICs5
OTMsNyBAQCB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMo
KSBjb25zdAogICAgICAgICAgICAgICAgIGxlbmd0aCA9IHBhZExlbmd0aDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgY2FzZSBHU1RfSVRFUkFUT1JfUkVT
WU5DOgogICAgICAgICAgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyhpdGVyKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtOTUxLDcgKzEwMDMsMTIgQEAgdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QKICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
CisgICAgICAgIGdfdmFsdWVfdW5zZXQoJml0ZW0pOworI2VuZGlmCiAgICAgfQorCiAgICAgZ3N0
X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CiAKICAgICBMT0dfVkVSQk9TRShNZWRpYSwgInRvdGFsQnl0
ZXMgJSIgR19HSU5UNjRfRk9STUFULCBsZW5ndGgpOwpAQCAtMTQ1Niw3ICsxNTEzLDMxIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVy
OjpjcmVhdGVJbWFnZShtX2J1ZmZlcik7CisgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZCA9IGFkb3B0
R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX3dlYmtpdFZpZGVvU2luaywgInNpbmsi
KSk7CisgICAgaWYgKCFwYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGludCB3aWR0aCA9IDAs
IGhlaWdodCA9IDA7CisgICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OworCisjaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBz
KHBhZC5nZXQoKSk7CisgICAgaWYgKCFjYXBzKQorICAgICAgICByZXR1cm47CisgICAgR3N0Vmlk
ZW9JbmZvIGluZm87CisgICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNh
cHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JN
QVQoJmluZm8pOworICAgIHdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pOworICAg
IGhlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbyk7CisjZWxzZQorICAgIEdzdENh
cHMqIGNhcHMgPSBHU1RfUEFEX0NBUFMocGFkLmdldCgpKTsKKyAgICBpZiAoIWdzdF92aWRlb19m
b3JtYXRfcGFyc2VfY2FwcyhjYXBzLCAmZm9ybWF0LCAmd2lkdGgsICZoZWlnaHQpKQorICAgICAg
ICByZXR1cm47CisjZW5kaWYKKworICAgIFJlZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2Ug
PSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9idWZmZXIsIEludFNpemUod2lkdGgsIGhl
aWdodCksIGZvcm1hdCk7CiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xNjQwLDggKzE3MjEsMTAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1
cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1NZWRpYSBw
OworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIHAudHlwZSA9IFBsYXRmb3JtTWVkaWE6
OkdTdHJlYW1lckdXb3JsZFR5cGU7CiAgICAgcC5tZWRpYS5nc3RyZWFtZXJHV29ybGQgPSBtX2dz
dEdXb3JsZC5nZXQoKTsKKyNlbmRpZgogICAgIHJldHVybiBwOwogfQogCkBAIC0xNjY3LDkgKzE3
NTAsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFByZWxvYWQoTWVk
aWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKIHsKICAgICBBU1NFUlQoIW1fcGxheUJpbik7Ci0gICAg
bV9wbGF5QmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwbGF5YmluMiIsICJwbGF5Iik7
CisgICAgbV9wbGF5QmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKFBMQVlCSU5fTkFNRSwg
InBsYXkiKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIG1fZ3N0R1dvcmxkID0g
R1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQobV9wbGF5QmluKTsKKyNlbmRpZgogCiAgICAg
R3N0QnVzKiBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9wbGF5Qmlu
KSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cyk7CkBAIC0xNjg0LDcgKzE3Njks
MTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4o
KQogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLCAidmlkZW8tY2hhbmdlZCIsIEdfQ0FM
TEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheUJpbiwgImF1ZGlvLWNoYW5nZWQiLCBHX0NBTExCQUNL
KG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAKKyNpZm5k
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtpdF92aWRl
b19zaW5rX25ldyhtX2dzdEdXb3JsZC5nZXQoKSk7CisjZWxzZQorICAgIG1fd2Via2l0VmlkZW9T
aW5rID0gd2Via2l0X3ZpZGVvX3NpbmtfbmV3KCk7CisjZW5kaWYKKyAgICBnc3RfZWxlbWVudF9z
ZXRfbmFtZShtX3dlYmtpdFZpZGVvU2luaywgIndlYmtpdFNpbmsiKTsKIAogICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV93ZWJraXRWaWRlb1NpbmssICJyZXBhaW50LXJlcXVlc3RlZCIsIEdfQ0FMTEJB
Q0sobWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKSwgdGhpcyk7CiAKQEAgLTE3MDMs
NyArMTc5MywxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NU
UGxheUJpbigpCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwg
dmlkZW9UZWUsIHF1ZXVlLCBOVUxMKTsKIAogICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9t
IHRlZSB0byBxdWV1ZTEuCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHUmVmUHRyPEdz
dFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCh2aWRl
b1RlZSwgInNyY18ldSIpKTsKKyNlbHNlCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFk
b3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQodmlkZW9UZWUsICJzcmMlZCIpKTsK
KyNlbmRpZgogICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVt
ZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpKTsKICAgICBnc3RfcGFkX2xpbmsoc3Jj
UGFkLmdldCgpLCBzaW5rUGFkLmdldCgpKTsKIApAQCAtMTczOSw4ICsxODMzLDE1IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKIAogICAgIEFT
U0VSVChhY3R1YWxWaWRlb1NpbmspOwogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBH
c3RFbGVtZW50KiB2aWRlb0NvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZpZGVv
Y29udmVydCIsIDApOworICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCB2
aWRlb0NvbnZlcnQpOworICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHF1ZXVlLCAic3Jj
IiwgdmlkZW9Db252ZXJ0LCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAg
ICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh2aWRlb0NvbnZlcnQsICJzcmMiLCBhY3R1YWxW
aWRlb1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworI2Vsc2UKICAg
ICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2luZy4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNf
ZnVsbChxdWV1ZSwgInNyYyIsIGFjdHVhbFZpZGVvU2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktf
Q0hFQ0tfTk9USElORyk7CisjZW5kaWYKIAogICAgIC8vIEFkZCBhIGdob3N0cGFkIHRvIHRoZSBi
aW4gc28gaXQgY2FuIHByb3h5IHRvIHRlZS4KICAgICBHUmVmUHRyPEdzdFBhZD4gcGFkID0gYWRv
cHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHZpZGVvVGVlLCAic2luayIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBiMDg4ODE0
Li5lOThmZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCkBAIC0xODAsNyArMTgwLDkgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
IDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAgICAgICBNZWRp
YVBsYXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgICAgICAgICBib29sIG1fZGVsYXlpbmdM
b2FkOwogICAgICAgICAgICAgYm9vbCBtX21lZGlhRHVyYXRpb25Lbm93bjsKKyNpZm5kZWYgR1NU
X0FQSV9WRVJTSU9OXzEKICAgICAgICAgICAgIFJlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0
R1dvcmxkOworI2VuZGlmCiAgICAgICAgICAgICBndWludCBtX3ZvbHVtZVRpbWVySGFuZGxlcjsK
ICAgICAgICAgICAgIGd1aW50IG1fbXV0ZVRpbWVySGFuZGxlcjsKICAgICAgICAgICAgIGJvb2wg
bV9oYXNWaWRlbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggNDM2MzAz
Ni4uMzIyMzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWaWRlb1NpbmtHU3RyZWFt
ZXIuaCIKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisjaWZuZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpA
QCAtMzk4LDQgKzM5OSw1IEBAIEdzdEVsZW1lbnQqIHdlYmtpdF92aWRlb19zaW5rX25ldyhXZWJD
b3JlOjpHU3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCkKICAgICByZXR1cm4gZWxlbWVudDsKIH0K
IAorI2VuZGlmIC8vIEdTVF9BUElfVkVSU0lPTl8xCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1NpbmtHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaAppbmRleCA1MDE4NTBmLi43OWY3ZWQ1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
U2lua0dTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkdTdHJlYW1lckdXb3JsZC5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8
Z3N0L3ZpZGVvL2dzdHZpZGVvc2luay5oPgorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgog
CiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTc1LDcgKzc2LDExIEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9T
aW5rQ2xhc3MgewogCiAKIEdUeXBlICAgICAgIHdlYmtpdF92aWRlb19zaW5rX2dldF90eXBlKHZv
aWQpIEdfR05VQ19DT05TVDsKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKIEdzdEVsZW1lbnQg
KndlYmtpdF92aWRlb19zaW5rX25ldyhXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQqKTsKKyNlbHNl
CitHc3RFbGVtZW50ICp3ZWJraXRfdmlkZW9fc2lua19uZXcoKTsKKyNlbmRpZgogCiBHX0VORF9E
RUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyMS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMmE5NGNmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIxLmNw
cApAQCAtMCwwICsxLDQzMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgT3BlbmVkSGFu
ZAorICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICog
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBJZ2FsaWEgUy5MCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKKyAqLworCisvKioKKyAqIFNFQ1RJT046d2Via2l0LXZpZGVvLXNp
bmsKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogR1N0cmVhbWVyIHZpZGVvIHNpbmsKKyAqCisgKiAj
V2ViS2l0VmlkZW9TaW5rIGlzIGEgR1N0cmVhbWVyIHNpbmsgZWxlbWVudCB0aGF0IHRyaWdnZXJz
CisgKiByZXBhaW50cyBpbiB0aGUgV2ViS2l0IEdTdHJlYW1lciBtZWRpYSBwbGF5ZXIgZm9yIHRo
ZQorICogY3VycmVudCB2aWRlbyBidWZmZXIuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSKQor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8
Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KKyNpbmNsdWRl
IDxnc3QvdmlkZW8vZ3N0dmlkZW9wb29sLmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKworLy8gQ0FJUk9fRk9STUFUX1JHQjI0
IHVzZWQgdG8gcmVuZGVyIHRoZSB2aWRlbyBidWZmZXJzIGlzIGxpdHRsZS9iaWcgZW5kaWFuIGRl
cGVuZGFudC4KKyNpZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVfRU5ESUFOCisjZGVmaW5lIFZJ
REVPX0ZPUk1BVFMgInsgQkdSeCwgQkdSQSB9IgorI2Vsc2UKKyNkZWZpbmUgVklERU9fRk9STUFU
UyAieyB4UkdCLCBBUkdCIH0iCisjZW5kaWYKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBz
aW5rdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSgic2luayIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1NUX1BBRF9TSU5LLCBHU1RfUEFEX0FMV0FZUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfU1RBVElDX0NBUFMo
R1NUX1ZJREVPX0NBUFNfTUFLRShWSURFT19GT1JNQVRTKSkpOworCisKK0dTVF9ERUJVR19DQVRF
R09SWV9TVEFUSUMod2Via2l0X3ZpZGVvX3NpbmtfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RF
RkFVTFQgd2Via2l0X3ZpZGVvX3NpbmtfZGVidWcKKworZW51bSB7CisgICAgUkVQQUlOVF9SRVFV
RVNURUQsCisgICAgTEFTVF9TSUdOQUwKK307CisKK2VudW0geworICAgIFBST1BfMAorfTsKKwor
c3RhdGljIGd1aW50IHdlYmtpdF92aWRlb19zaW5rX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAw
LCB9OworCitzdHJ1Y3QgX1dlYktpdFZpZGVvU2lua1ByaXZhdGUgeworICAgIEdzdEJ1ZmZlciog
YnVmZmVyOworICAgIGd1aW50IHRpbWVvdXRfaWQ7CisgICAgR011dGV4KiBidWZmZXJfbXV0ZXg7
CisgICAgR0NvbmQqIGRhdGFfY29uZDsKKyAgICBHc3RWaWRlb0luZm8gaW5mbzsKKworICAgIC8v
IElmIHRoaXMgaXMgVFJVRSBhbGwgcHJvY2Vzc2luZyBzaG91bGQgZmluaXNoIEFTQVAKKyAgICAv
LyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIGEgcmFjZSBiZXR3ZWVu
CisgICAgLy8gdW5sb2NrKCkgYW5kIHJlbmRlcigpLCB3aGVyZSB1bmxvY2soKSB3aW5zLCBzaWdu
YWxzIHRoZQorICAgIC8vIEdDb25kLCB0aGVuIHJlbmRlcigpIHRyaWVzIHRvIHJlbmRlciBhIGZy
YW1lIGFsdGhvdWdoCisgICAgLy8gZXZlcnl0aGluZyBlbHNlIGlzbid0IHJ1bm5pbmcgYW55bW9y
ZS4gVGhpcyB3aWxsIGxlYWQKKyAgICAvLyB0byBkZWFkbG9ja3MgYmVjYXVzZSByZW5kZXIoKSBo
b2xkcyB0aGUgc3RyZWFtIGxvY2suCisgICAgLy8KKyAgICAvLyBQcm90ZWN0ZWQgYnkgdGhlIGJ1
ZmZlciBtdXRleAorICAgIGdib29sZWFuIHVubG9ja2VkOworfTsKKworI2RlZmluZSB3ZWJraXRf
dmlkZW9fc2lua19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFX1dJVEhf
Q09ERShXZWJLaXRWaWRlb1NpbmssIHdlYmtpdF92aWRlb19zaW5rLCBHU1RfVFlQRV9WSURFT19T
SU5LLCBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfdmlkZW9fc2lua19kZWJ1ZywgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZWJraXRzaW5rIiwgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2Via2l0
IHZpZGVvIHNpbmsiKSk7CisKKworc3RhdGljIHZvaWQKK3dlYmtpdF92aWRlb19zaW5rX2luaXQo
V2ViS2l0VmlkZW9TaW5rKiBzaW5rKQoreworICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHBy
aXY7CisKKyAgICBzaW5rLT5wcml2ID0gcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RShzaW5rLCBXRUJLSVRfVFlQRV9WSURFT19TSU5LLCBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKTsK
KyNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwgMzEsIDApCisgICAgcHJpdi0+ZGF0YV9jb25kID0g
V1RGOjpmYXN0TmV3PEdDb25kPigpOworICAgIGdfY29uZF9pbml0KHByaXYtPmRhdGFfY29uZCk7
CisgICAgcHJpdi0+YnVmZmVyX211dGV4ID0gV1RGOjpmYXN0TmV3PEdNdXRleD4oKTsKKyAgICBn
X211dGV4X2luaXQocHJpdi0+YnVmZmVyX211dGV4KTsKKyNlbHNlCisgICAgcHJpdi0+ZGF0YV9j
b25kID0gZ19jb25kX25ldygpOworICAgIHByaXYtPmJ1ZmZlcl9tdXRleCA9IGdfbXV0ZXhfbmV3
KCk7CisjZW5kaWYKKyAgICBnc3RfdmlkZW9faW5mb19pbml0KCZwcml2LT5pbmZvKTsKK30KKwor
c3RhdGljIGdib29sZWFuCit3ZWJraXRfdmlkZW9fc2lua190aW1lb3V0X2Z1bmMoZ3BvaW50ZXIg
ZGF0YSkKK3sKKyAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSByZWludGVycHJldF9jYXN0PFdl
YktpdFZpZGVvU2luayo+KGRhdGEpOworICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYg
PSBzaW5rLT5wcml2OworICAgIEdzdEJ1ZmZlciogYnVmZmVyOworCisgICAgZ19tdXRleF9sb2Nr
KHByaXYtPmJ1ZmZlcl9tdXRleCk7CisgICAgYnVmZmVyID0gcHJpdi0+YnVmZmVyOworICAgIHBy
aXYtPmJ1ZmZlciA9IDA7CisgICAgcHJpdi0+dGltZW91dF9pZCA9IDA7CisKKyAgICBpZiAoIWJ1
ZmZlciB8fCBwcml2LT51bmxvY2tlZCB8fCBHX1VOTElLRUxZKCFHU1RfSVNfQlVGRkVSKGJ1ZmZl
cikpKSB7CisgICAgICAgIGdfY29uZF9zaWduYWwocHJpdi0+ZGF0YV9jb25kKTsKKyAgICAgICAg
Z19tdXRleF91bmxvY2socHJpdi0+YnVmZmVyX211dGV4KTsKKyAgICAgICAgcmV0dXJuIEZBTFNF
OworICAgIH0KKworICAgIGdfc2lnbmFsX2VtaXQoc2luaywgd2Via2l0X3ZpZGVvX3Npbmtfc2ln
bmFsc1tSRVBBSU5UX1JFUVVFU1RFRF0sIDAsIGJ1ZmZlcik7CisgICAgZ3N0X2J1ZmZlcl91bnJl
ZihidWZmZXIpOworICAgIGdfY29uZF9zaWduYWwocHJpdi0+ZGF0YV9jb25kKTsKKyAgICBnX211
dGV4X3VubG9jayhwcml2LT5idWZmZXJfbXV0ZXgpOworCisgICAgcmV0dXJuIEZBTFNFOworfQor
CitzdGF0aWMgR3N0Rmxvd1JldHVybgord2Via2l0X3ZpZGVvX3NpbmtfcmVuZGVyKEdzdEJhc2VT
aW5rKiBic2luaywgR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgV2ViS2l0VmlkZW9TaW5rKiBz
aW5rID0gV0VCS0lUX1ZJREVPX1NJTksoYnNpbmspOworICAgIFdlYktpdFZpZGVvU2lua1ByaXZh
dGUqIHByaXYgPSBzaW5rLT5wcml2OworCisgICAgZ19tdXRleF9sb2NrKHByaXYtPmJ1ZmZlcl9t
dXRleCk7CisKKyAgICBpZiAocHJpdi0+dW5sb2NrZWQpIHsKKyAgICAgICAgZ19tdXRleF91bmxv
Y2socHJpdi0+YnVmZmVyX211dGV4KTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOworICAg
IH0KKworICAgIHByaXYtPmJ1ZmZlciA9IGdzdF9idWZmZXJfcmVmKGJ1ZmZlcik7CisKKyAgICBH
c3RWaWRlb0ZyYW1lIGZyYW1lOworICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmZnJhbWUs
ICZwcml2LT5pbmZvLCBidWZmZXIsIEdTVF9NQVBfUkVBRCkpIHsKKyAgICAgICAgZ3N0X2J1ZmZl
cl91bnJlZihidWZmZXIpOworICAgICAgICBnX211dGV4X3VubG9jayhwcml2LT5idWZmZXJfbXV0
ZXgpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgR3N0Vmlk
ZW9Gb3JtYXQgZm9ybWF0ID0gR1NUX1ZJREVPX0ZSQU1FX0ZPUk1BVCgmZnJhbWUpOworICAgIGlu
dCB3aWR0aCA9IEdTVF9WSURFT19GUkFNRV9XSURUSCgmZnJhbWUpOworICAgIGludCBoZWlnaHQg
PSBHU1RfVklERU9fRlJBTUVfSEVJR0hUKCZmcmFtZSk7CisKKyAgICBnc3RfdmlkZW9fZnJhbWVf
dW5tYXAoJmZyYW1lKTsKKworICAgIC8vIENhaXJvJ3MgQVJHQiBoYXMgcHJlLW11bHRpcGxpZWQg
YWxwaGEgd2hpbGUgR1N0cmVhbWVyJ3MgZG9lc24ndC4KKyAgICAvLyBIZXJlIHdlIGNvbnZlcnQg
dG8gQ2Fpcm8ncyBBUkdCLgorICAgIGlmIChmb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9BUkdC
IHx8IGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0JHUkEpIHsKKyAgICAgICAgLy8gQmVjYXVz
ZSBHc3RCYXNlU2luazo6cmVuZGVyKCkgb25seSBvd25zIHRoZSBidWZmZXIgcmVmZXJlbmNlIGlu
IHRoZQorICAgICAgICAvLyBtZXRob2Qgc2NvcGUgd2UgY2FuJ3QgdXNlIGdzdF9idWZmZXJfbWFr
ZV93cml0YWJsZSgpIGhlcmUuIEFsc28KKyAgICAgICAgLy8gVGhlIGJ1ZmZlciBjb250ZW50IHNo
b3VsZCBub3QgYmUgY2hhbmdlZCBoZXJlIGJlY2F1c2UgdGhlIHNhbWUgYnVmZmVyCisgICAgICAg
IC8vIGNvdWxkIGJlIHBhc3NlZCBtdWx0aXBsZSB0aW1lcyB0byB0aGlzIG1ldGhvZCAoaW4gdGhl
b3J5KQorICAgICAgICBnc2l6ZSBidWZmZXJTaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZShidWZm
ZXIpOworICAgICAgICBHc3RCdWZmZXIqIG5ld0J1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9h
bGxvYyhidWZmZXJTaXplKTsKKworICAgICAgICAvLyBDaGVjayBpZiBhbGxvY2F0aW9uIGZhaWxl
ZAorICAgICAgICBpZiAoR19VTkxJS0VMWSghbmV3QnVmZmVyKSkgeworICAgICAgICAgICAgZ19t
dXRleF91bmxvY2socHJpdi0+YnVmZmVyX211dGV4KTsKKyAgICAgICAgICAgIHJldHVybiBHU1Rf
RkxPV19FUlJPUjsKKyAgICAgICAgfQorCisgICAgICAgIGdzdF9idWZmZXJfY29weV9pbnRvKG5l
d0J1ZmZlciwgYnVmZmVyLCAoR3N0QnVmZmVyQ29weUZsYWdzKSBHU1RfQlVGRkVSX0NPUFlfQUxM
LCAwLCBidWZmZXJTaXplKTsKKworICAgICAgICAvLyBXZSBkb24ndCB1c2UgQ29sb3I6OnByZW11
bHRpcGxpZWRBUkdCRnJvbUNvbG9yKCkgaGVyZSBiZWNhdXNlCisgICAgICAgIC8vIG9uZSBmdW5j
dGlvbiBjYWxsIHBlciB2aWRlbyBwaXhlbCBpcyBqdXN0IHRvbyBleHBlbnNpdmU6CisgICAgICAg
IC8vIEZvciA3MjBwL1BBTCBmb3IgZXhhbXBsZSB0aGlzIG1lYW5zIDEyODAqNzIwKjI1PTIzMDQw
MDAwCisgICAgICAgIC8vIGZ1bmN0aW9uIGNhbGxzIHBlciBzZWNvbmQhCisgICAgICAgIHVuc2ln
bmVkIHNob3J0IGFscGhhOworICAgICAgICBHc3RNYXBJbmZvIHNvdXJjZUluZm87CisgICAgICAg
IEdzdE1hcEluZm8gZGVzdGluYXRpb25JbmZvOworICAgICAgICBnc3RfYnVmZmVyX21hcChidWZm
ZXIsICZzb3VyY2VJbmZvLCBHU1RfTUFQX1JFQUQpOworICAgICAgICBjb25zdCBndWludDgqIHNv
dXJjZSA9IChjb25zdCBndWludDgqKSBzb3VyY2VJbmZvLmRhdGE7CisgICAgICAgIGdzdF9idWZm
ZXJfbWFwKG5ld0J1ZmZlciwgJmRlc3RpbmF0aW9uSW5mbywgR1NUX01BUF9XUklURSk7CisgICAg
ICAgIGd1aW50OCogZGVzdGluYXRpb24gPSAoZ3VpbnQ4KikgZGVzdGluYXRpb25JbmZvLmRhdGE7
CisKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBoZWlnaHQ7IHgrKykgeworICAgICAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCB3aWR0aDsgeSsrKSB7CisjaWYgR19CWVRFX09SREVSID09
IEdfTElUVExFX0VORElBTgorICAgICAgICAgICAgICAgIGFscGhhID0gc291cmNlWzNdOworICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gKHNvdXJjZVswXSAqIGFscGhhICsgMTI4KSAv
IDI1NTsKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblsxXSA9IChzb3VyY2VbMV0gKiBhbHBo
YSArIDEyOCkgLyAyNTU7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25bMl0gPSAoc291cmNl
WzJdICogYWxwaGEgKyAxMjgpIC8gMjU1OworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uWzNd
ID0gYWxwaGE7CisjZWxzZQorICAgICAgICAgICAgICAgIGFscGhhID0gc291cmNlWzBdOworICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgZGVz
dGluYXRpb25bMV0gPSAoc291cmNlWzFdICogYWxwaGEgKyAxMjgpIC8gMjU1OworICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uWzJdID0gKHNvdXJjZVsyXSAqIGFscGhhICsgMTI4KSAvIDI1NTsK
KyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblszXSA9IChzb3VyY2VbM10gKiBhbHBoYSArIDEy
OCkgLyAyNTU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAg
ICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCAmc291cmNlSW5mbyk7CisgICAgICAgIGdzdF9i
dWZmZXJfdW5tYXAobmV3QnVmZmVyLCAmZGVzdGluYXRpb25JbmZvKTsKKworICAgICAgICBnc3Rf
YnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIGJ1ZmZlciA9IHByaXYtPmJ1ZmZlciA9IG5l
d0J1ZmZlcjsKKyAgICB9CisKKworICAgIC8vIFRoaXMgc2hvdWxkIGxpa2VseSB1c2UgYSBsb3dl
ciBwcmlvcml0eSwgYnV0IGdsaWIgY3VycmVudGx5IHN0YXJ2ZXMKKyAgICAvLyBsb3dlciBwcmlv
cml0eSBzb3VyY2VzLgorICAgIC8vIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hv
d19idWcuY2dpP2lkPTYxMDgzMC4KKyAgICBwcml2LT50aW1lb3V0X2lkID0gZ190aW1lb3V0X2Fk
ZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF92aWRlb19zaW5rX3RpbWVvdXRfZnVuYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzdF9vYmplY3RfcmVmKHNpbmspLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5
KWdzdF9vYmplY3RfdW5yZWYpOworCisgICAgZ19jb25kX3dhaXQocHJpdi0+ZGF0YV9jb25kLCBw
cml2LT5idWZmZXJfbXV0ZXgpOworICAgIGdfbXV0ZXhfdW5sb2NrKHByaXYtPmJ1ZmZlcl9tdXRl
eCk7CisgICAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCitzdGF0aWMgdm9pZAord2Via2l0X3Zp
ZGVvX3NpbmtfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0VmlkZW9TaW5r
KiBzaW5rID0gV0VCS0lUX1ZJREVPX1NJTksob2JqZWN0KTsKKyAgICBXZWJLaXRWaWRlb1NpbmtQ
cml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKworICAgIGlmIChwcml2LT5kYXRhX2NvbmQpIHsK
KyNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwgMzEsIDApCisgICAgICAgIGdfY29uZF9jbGVhcihw
cml2LT5kYXRhX2NvbmQpOworICAgICAgICBXVEY6OmZhc3REZWxldGUocHJpdi0+ZGF0YV9jb25k
KTsKKyNlbHNlCisgICAgICAgIGdfY29uZF9mcmVlKHByaXYtPmRhdGFfY29uZCk7CisjZW5kaWYK
KyAgICAgICAgcHJpdi0+ZGF0YV9jb25kID0gMDsKKyAgICB9CisKKyAgICBpZiAocHJpdi0+YnVm
ZmVyX211dGV4KSB7CisjaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsIDMxLCAwKQorICAgICAgICBn
X211dGV4X2NsZWFyKHByaXYtPmJ1ZmZlcl9tdXRleCk7CisgICAgICAgIFdURjo6ZmFzdERlbGV0
ZShwcml2LT5idWZmZXJfbXV0ZXgpOworI2Vsc2UKKyAgICAgICAgZ19tdXRleF9mcmVlKHByaXYt
PmJ1ZmZlcl9tdXRleCk7CisjZW5kaWYKKyAgICAgICAgcHJpdi0+YnVmZmVyX211dGV4ID0gMDsK
KyAgICB9CisKKyAgICBHX09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVj
dCk7Cit9CisKK3N0YXRpYyB2b2lkCit1bmxvY2tfYnVmZmVyX211dGV4KFdlYktpdFZpZGVvU2lu
a1ByaXZhdGUqIHByaXYpCit7CisgICAgZ19tdXRleF9sb2NrKHByaXYtPmJ1ZmZlcl9tdXRleCk7
CisKKyAgICBpZiAocHJpdi0+YnVmZmVyKSB7CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYocHJp
di0+YnVmZmVyKTsKKyAgICAgICAgcHJpdi0+YnVmZmVyID0gMDsKKyAgICB9CisKKyAgICBwcml2
LT51bmxvY2tlZCA9IFRSVUU7CisKKyAgICBnX2NvbmRfc2lnbmFsKHByaXYtPmRhdGFfY29uZCk7
CisgICAgZ19tdXRleF91bmxvY2socHJpdi0+YnVmZmVyX211dGV4KTsKK30KKworc3RhdGljIGdi
b29sZWFuCit3ZWJraXRfdmlkZW9fc2lua191bmxvY2soR3N0QmFzZVNpbmsqIG9iamVjdCkKK3sK
KyAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfVklERU9fU0lOSyhvYmplY3QpOwor
CisgICAgdW5sb2NrX2J1ZmZlcl9tdXRleChzaW5rLT5wcml2KTsKKworICAgIHJldHVybiBHU1Rf
Q0FMTF9QQVJFTlRfV0lUSF9ERUZBVUxUKEdTVF9CQVNFX1NJTktfQ0xBU1MsIHVubG9jaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0KSwgVFJVRSk7Cit9
CisKK3N0YXRpYyBnYm9vbGVhbgord2Via2l0X3ZpZGVvX3NpbmtfdW5sb2NrX3N0b3AoR3N0QmFz
ZVNpbmsqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfVklE
RU9fU0lOSyhvYmplY3QpOworICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYgPSBzaW5r
LT5wcml2OworCisgICAgZ19tdXRleF9sb2NrKHByaXYtPmJ1ZmZlcl9tdXRleCk7CisgICAgcHJp
di0+dW5sb2NrZWQgPSBGQUxTRTsKKyAgICBnX211dGV4X3VubG9jayhwcml2LT5idWZmZXJfbXV0
ZXgpOworCisgICAgcmV0dXJuIEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQoR1NUX0JBU0Vf
U0lOS19DTEFTUywgdW5sb2NrX3N0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG9iamVjdCksIFRSVUUpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3dlYmtpdF92
aWRlb19zaW5rX3N0b3AoR3N0QmFzZVNpbmsqIGJhc2Vfc2luaykKK3sKKyAgICBXZWJLaXRWaWRl
b1NpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX1ZJREVPX1NJTksoYmFzZV9zaW5rKS0+cHJpdjsK
KworICAgIHVubG9ja19idWZmZXJfbXV0ZXgocHJpdik7CisgICAgcmV0dXJuIFRSVUU7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbgord2Via2l0X3ZpZGVvX3Npbmtfc3RhcnQoR3N0QmFzZVNpbmsqIGJh
c2Vfc2luaykKK3sKKyAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX1ZJ
REVPX1NJTksoYmFzZV9zaW5rKS0+cHJpdjsKKworICAgIGdfbXV0ZXhfbG9jayhwcml2LT5idWZm
ZXJfbXV0ZXgpOworICAgIHByaXYtPnVubG9ja2VkID0gRkFMU0U7CisgICAgZ19tdXRleF91bmxv
Y2socHJpdi0+YnVmZmVyX211dGV4KTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdi
b29sZWFuCit3ZWJraXRfdmlkZW9fc2lua19wcm9wb3NlX2FsbG9jYXRpb24oR3N0QmFzZVNpbmsq
IGJhc2Vfc2luaywgR3N0UXVlcnkqIHF1ZXJ5KQoreworICAgIFdlYktpdFZpZGVvU2luayogc2lu
ayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2Vfc2luayk7CisgICAgR3N0Q2FwcyogY2FwczsKKyAg
ICBnYm9vbGVhbiBuZWVkX3Bvb2w7CisKKyAgICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbihx
dWVyeSwgJmNhcHMsICZuZWVkX3Bvb2wpOworCisgICAgaWYgKCFjYXBzKQorICAgICAgICByZXR1
cm4gRkFMU0U7CisKKyAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fwcygmc2luay0+cHJp
di0+aW5mbywgY2FwcykpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIEdzdEJ1ZmZlclBv
b2wqIHBvb2w7CisgICAgZ3VpbnQgc2l6ZSwgbWluLCBtYXgsIHByZWZpeCwgYWxpZ25tZW50Owor
CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2FsbG9jYXRpb25fcGFyYW1zKHF1ZXJ5LCAmc2l6ZSwgJm1p
biwgJm1heCwgJnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmFsaWdubWVudCwgJnBvb2wpOworCisgICAgaWYgKHBvb2wpIHsKKyAgICAgICAgR3N0U3RydWN0
dXJlKiBjb25maWc7CisKKyAgICAgICAgY29uZmlnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25m
aWcocG9vbCk7CisgICAgICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfYWRkX29wdGlvbihjb25m
aWcsIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQSk7CisgICAgICAgIGdzdF9idWZm
ZXJfcG9vbF9zZXRfY29uZmlnKHBvb2wsIGNvbmZpZyk7CisgICAgfQorCisgICAgZ3N0X3F1ZXJ5
X3NldF9hbGxvY2F0aW9uX3BhcmFtcyhxdWVyeSwgc2l6ZSwgbWluLCBtYXgsIHByZWZpeCwgYWxp
Z25tZW50LCBwb29sKTsKKyAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fbWV0YShxdWVyeSwg
R1NUX1ZJREVPX01FVEFfQVBJKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQK
K21hcnNoYWxfVk9JRF9fTUlOSU9CSkVDVChHQ2xvc3VyZSAqIGNsb3N1cmUsIEdWYWx1ZSAqIHJl
dHVybl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBuX3BhcmFtX3ZhbHVl
cywgY29uc3QgR1ZhbHVlICogcGFyYW1fdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGdwb2ludGVyIGludm9jYXRpb25faGludCwgZ3BvaW50ZXIgbWFyc2hhbF9kYXRhKQoreworICAg
IHR5cGVkZWYgdm9pZCAoKm1hcnNoYWxmdW5jX1ZPSURfX01JTklPQkpFQ1QpIChncG9pbnRlciBv
YmosIGdwb2ludGVyIGFyZzEsIGdwb2ludGVyIGRhdGEyKTsKKyAgICBtYXJzaGFsZnVuY19WT0lE
X19NSU5JT0JKRUNUIGNhbGxiYWNrOworICAgIEdDQ2xvc3VyZSogY2MgPSAoR0NDbG9zdXJlICop
IGNsb3N1cmU7CisgICAgZ3BvaW50ZXIgZGF0YTEsIGRhdGEyOworCisgICAgZ19yZXR1cm5faWZf
ZmFpbChuX3BhcmFtX3ZhbHVlcyA9PSAyKTsKKworICAgIGlmIChHX0NDTE9TVVJFX1NXQVBfREFU
QShjbG9zdXJlKSkgeworICAgICAgICBkYXRhMSA9IGNsb3N1cmUtPmRhdGE7CisgICAgICAgIGRh
dGEyID0gZ192YWx1ZV9wZWVrX3BvaW50ZXIocGFyYW1fdmFsdWVzICsgMCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZGF0YTEgPSBnX3ZhbHVlX3BlZWtfcG9pbnRlcihwYXJhbV92YWx1ZXMgKyAw
KTsKKyAgICAgICAgZGF0YTIgPSBjbG9zdXJlLT5kYXRhOworICAgIH0KKyAgICBjYWxsYmFjayA9
IChtYXJzaGFsZnVuY19WT0lEX19NSU5JT0JKRUNUKSAobWFyc2hhbF9kYXRhID8gbWFyc2hhbF9k
YXRhIDogY2MtPmNhbGxiYWNrKTsKKworICAgIGNhbGxiYWNrKGRhdGExLCBnX3ZhbHVlX2dldF9i
b3hlZChwYXJhbV92YWx1ZXMgKyAxKSwgZGF0YTIpOworfQorCitzdGF0aWMgdm9pZAord2Via2l0
X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCit7Cisg
ICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwor
ICAgIEdzdEJhc2VTaW5rQ2xhc3MqIGdzdGJhc2Vfc2lua19jbGFzcyA9IEdTVF9CQVNFX1NJTktf
Q0xBU1Moa2xhc3MpOworICAgIEdzdEVsZW1lbnRDbGFzcyogZWxlbWVudF9jbGFzcyA9IEdTVF9F
TEVNRU5UX0NMQVNTKGtsYXNzKTsKKworICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVt
cGxhdGUoZWxlbWVudF9jbGFzcywgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzaW5rdGVt
cGxhdGUpKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWxlbWVudF9jbGFz
cywKKyAgICAgICAgICAgICJXZWJLaXQgdmlkZW8gc2luayIsCisgICAgICAgICAgICAiU2luay9W
aWRlbyIsICJTZW5kcyB2aWRlbyBkYXRhIGZyb20gYSBHU3RyZWFtZXIgcGlwZWxpbmUgdG8gYSBD
YWlybyBzdXJmYWNlIiwKKyAgICAgICAgICAgICJBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPiIp
OworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0Vmlk
ZW9TaW5rUHJpdmF0ZSkpOworCisgICAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdF92
aWRlb19zaW5rX2Rpc3Bvc2U7CisKKyAgICBnc3RiYXNlX3NpbmtfY2xhc3MtPnVubG9jayA9IHdl
YmtpdF92aWRlb19zaW5rX3VubG9jazsKKyAgICBnc3RiYXNlX3NpbmtfY2xhc3MtPnVubG9ja19z
dG9wID0gd2Via2l0X3ZpZGVvX3NpbmtfdW5sb2NrX3N0b3A7CisgICAgZ3N0YmFzZV9zaW5rX2Ns
YXNzLT5yZW5kZXIgPSB3ZWJraXRfdmlkZW9fc2lua19yZW5kZXI7CisgICAgZ3N0YmFzZV9zaW5r
X2NsYXNzLT5wcmVyb2xsID0gd2Via2l0X3ZpZGVvX3NpbmtfcmVuZGVyOworICAgIGdzdGJhc2Vf
c2lua19jbGFzcy0+c3RvcCA9IHdlYmtpdF92aWRlb19zaW5rX3N0b3A7CisgICAgZ3N0YmFzZV9z
aW5rX2NsYXNzLT5zdGFydCA9IHdlYmtpdF92aWRlb19zaW5rX3N0YXJ0OworICAgIGdzdGJhc2Vf
c2lua19jbGFzcy0+cHJvcG9zZV9hbGxvY2F0aW9uID0gd2Via2l0X3ZpZGVvX3NpbmtfcHJvcG9z
ZV9hbGxvY2F0aW9uOworCisgICAgd2Via2l0X3ZpZGVvX3Npbmtfc2lnbmFsc1tSRVBBSU5UX1JF
UVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoInJlcGFpbnQtcmVxdWVzdGVkIiwKKyAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdf
U0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIG1hcnNoYWxfVk9JRF9fTUlO
SU9CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLCBHU1RfVFlQRV9CVUZGRVIpOwor
fQorCisvKioKKyAqIHdlYmtpdF92aWRlb19zaW5rX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3
IEdTdHJlYW1lciB2aWRlbyBzaW5rLgorICoKKyAqIFJldHVybiB2YWx1ZTogYSAjR3N0RWxlbWVu
dCBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgdmlkZW8gc2luaworICovCitHc3RFbGVtZW50KiB3ZWJr
aXRfdmlkZW9fc2lua19uZXcoKQoreworICAgIHJldHVybiBHU1RfRUxFTUVOVChnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfVklERU9fU0lOSywgMCkpOworfQorCisjZW5kaWYgLy8gR1NUX0FQSV9W
RVJTSU9OXzEKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBmZDVlOTc3Li5iYzE2YTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTgsNiArMTgsNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmgiCisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgpAQCAtMzEsOSArMzIsOSBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPGdz
dC9hcHAvZ3N0YXBwc3JjLmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5z
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMTA5LDE5ICsxMTAsMjEgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3
ZWJraXRfd2ViX3NyY19kZWJ1Zyk7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNVcmlIYW5kbGVy
SW5pdChncG9pbnRlciBnSWZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdwb2ludGVyIGlmYWNlRGF0YSk7CiAKLXN0YXRpYyB2b2lkIHdlYktpdFdlYlNy
Y0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7Ci1zdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQ
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpOwotc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKTsKLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRXZWJTcmNDaGFu
Z2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsK
LXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNRdWVyeShHc3RQYWQqIHBhZCwgR3N0UXVlcnkq
IHF1ZXJ5KTsKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0ZpbmFsaXplKEdPYmplY3QqKTsKK3N0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY1NldFByb3BlcnR5KEdPYmplY3QqLCBndWludCwgY29uc3Qg
R1ZhbHVlKiwgR1BhcmFtU3BlYyopOworc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVy
dHkoR09iamVjdCosIGd1aW50LCBHVmFsdWUqLCBHUGFyYW1TcGVjKik7CitzdGF0aWMgR3N0U3Rh
dGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViU3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCosIEdzdFN0
YXRlQ2hhbmdlKTsKKworc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5V2l0aFBhcmVu
dChHc3RQYWQqLCBHc3RPYmplY3QqLCBHc3RRdWVyeSopOworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQorc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdFBhZCosIEdzdFF1ZXJ5
Kik7CisjZW5kaWYKIAotc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGFDYihHc3RBcHBT
cmMqIGFwcHNyYywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2VyRGF0YSk7Ci1zdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiBhcHBzcmMsIGdwb2ludGVyIHVz
ZXJEYXRhKTsKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZWVrRGF0YUNiKEdzdEFwcFNy
YyogYXBwc3JjLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlckRhdGEpOworc3RhdGljIHZv
aWQgd2ViS2l0V2ViU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCwgZ3BvaW50ZXIpOwor
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YUNiKEdzdEFwcFNyYyosIGdwb2ludGVy
KTsKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZWVrRGF0YUNiKEdzdEFwcFNyYyosIGd1
aW50NjQsIGdwb2ludGVyKTsKIAotc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RvcChXZWJLaXRX
ZWJTcmMqIHNyYywgYm9vbCBzZWVraW5nKTsKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNT
ZXRVcmkoR3N0VVJJSGFuZGxlciosIGNvbnN0IGdjaGFyKik7Ci1zdGF0aWMgY29uc3QgZ2NoYXIq
IHdlYktpdFdlYlNyY0dldFVyaShHc3RVUklIYW5kbGVyKik7CitzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNTdG9wKFdlYktpdFdlYlNyYyosIGJvb2wpOwogCiBzdGF0aWMgR3N0QXBwU3JjQ2FsbGJh
Y2tzIGFwcHNyY0NhbGxiYWNrcyA9IHsKICAgICB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiLApAQCAt
MTQ4LDcgKzE1MSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdl
YktpdFdlYlNyY0NsYXNzKiBrbGFzcykKIAogICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRf
dGVtcGxhdGUoZWtsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOworI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCisgICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhKGVrbGFzcywK
KyNlbHNlCiAgICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X2RldGFpbHNfc2ltcGxlKGVrbGFzcywK
KyNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIq
KSAiV2ViS2l0IFdlYiBzb3VyY2UgZWxlbWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChnY2hhciopICJTb3VyY2UiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiSGFuZGxlcyBIVFRQL0hUVFBTIHVyaXMiLApA
QCAtMjM1LDcgKzI0MiwxMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYktp
dFdlYlNyYyogc3JjKQogICAgIHByaXYtPnNyY3BhZCA9IGdzdF9naG9zdF9wYWRfbmV3X2Zyb21f
dGVtcGxhdGUoInNyYyIsIHRhcmdldFBhZC5nZXQoKSwgcGFkVGVtcGxhdGUuZ2V0KCkpOwogCiAg
ICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChHU1RfRUxFTUVOVChzcmMpLCBwcml2LT5zcmNwYWQpOwor
CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHU1RfT0JKRUNUX0ZMQUdfU0VUKHByaXYt
PnNyY3BhZCwgR1NUX1BBRF9GTEFHX05FRURfUEFSRU5UKTsKKyAgICBnc3RfcGFkX3NldF9xdWVy
eV9mdW5jdGlvbihwcml2LT5zcmNwYWQsIHdlYktpdFdlYlNyY1F1ZXJ5V2l0aFBhcmVudCk7Cisj
ZWxzZQogICAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uKHByaXYtPnNyY3BhZCwgd2ViS2l0
V2ViU3JjUXVlcnkpOworI2VuZGlmCiAKICAgICBnc3RfYXBwX3NyY19zZXRfY2FsbGJhY2tzKHBy
aXYtPmFwcHNyYywgJmFwcHNyY0NhbGxiYWNrcywgc3JjLCAwKTsKICAgICBnc3RfYXBwX3NyY19z
ZXRfZW1pdF9zaWduYWxzKHByaXYtPmFwcHNyYywgRkFMU0UpOwpAQCAtMjg2LDcgKzI5OSwxMSBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKgogICAgICAgICBwcml2LT5pcmFkaW9Nb2RlID0gZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9M
T0NBVElPTjoKLSAgICAgICAgd2ViS2l0V2ViU3JjU2V0VXJpKHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
VVJJSGFuZGxlcio+KHNyYyksIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOworI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCisgICAgICAgIGdzdF91cmlfaGFuZGxlcl9zZXRfdXJpKHJlaW50ZXJw
cmV0X2Nhc3Q8R3N0VVJJSGFuZGxlcio+KHNyYyksIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSks
IDApOworI2Vsc2UKKyAgICAgICAgZ3N0X3VyaV9oYW5kbGVyX3NldF91cmkocmVpbnRlcnByZXRf
Y2FzdDxHc3RVUklIYW5kbGVyKj4oc3JjKSwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Cisj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CkBAIC0zMTYsNyAr
MzMzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUKICAgICAgICAgZ192YWx1ZV9zZXRfc3Ry
aW5nKHZhbHVlLCBwcml2LT5pcmFkaW9UaXRsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9MT0NBVElPTjoKLSAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJLaXRX
ZWJTcmNHZXRVcmkocmVpbnRlcnByZXRfY2FzdDxHc3RVUklIYW5kbGVyKj4oc3JjKSkpOworICAg
ICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPnVyaSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BJRCwgcHNwZWMpOwpAQCAtNDgxLDQ0ICs0OTgsMTA0IEBAIHN0YXRpYyBH
c3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBl
bGVtZW50LCBHc3RTdGF0CiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGdib29sZWFuIHdl
YktpdFdlYlNyY1F1ZXJ5KEdzdFBhZCogcGFkLCBHc3RRdWVyeSogcXVlcnkpCitzdGF0aWMgZ2Jv
b2xlYW4gd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KEdzdFBhZCogcGFkLCBHc3RPYmplY3Qq
IHBhcmVudCwgR3N0UXVlcnkqIHF1ZXJ5KQogewotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gc3Jj
ID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBhZCkpOwotICAgIFdlYktp
dFdlYlNyYyogd2Via2l0U3JjID0gV0VCS0lUX1dFQl9TUkMoc3JjLmdldCgpKTsKKyAgICBXZWJL
aXRXZWJTcmMqIHdlYmtpdFNyYyA9IFdFQktJVF9XRUJfU1JDKEdTVF9FTEVNRU5UKHBhcmVudCkp
OwogICAgIGdib29sZWFuIHJlc3VsdCA9IEZBTFNFOwogCiAgICAgc3dpdGNoIChHU1RfUVVFUllf
VFlQRShxdWVyeSkpIHsKICAgICBjYXNlIEdTVF9RVUVSWV9EVVJBVElPTjoKLSAgICB7Ci0gICAg
ICAgIEdzdEZvcm1hdCBmb3JtYXQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIEdzdEZvcm1hdCBm
b3JtYXQ7CiAKLSAgICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2R1cmF0aW9uKHF1ZXJ5LCAmZm9ybWF0
LCBOVUxMKTsKKyAgICAgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9kdXJhdGlvbihxdWVyeSwgJmZv
cm1hdCwgTlVMTCk7CiAKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCh3ZWJraXRTcmMsICJkdXJh
dGlvbiBxdWVyeSBpbiBmb3JtYXQgJXMiLCBnc3RfZm9ybWF0X2dldF9uYW1lKGZvcm1hdCkpOwot
ICAgICAgICBpZiAoKGZvcm1hdCA9PSBHU1RfRk9STUFUX0JZVEVTKSAmJiAod2Via2l0U3JjLT5w
cml2LT5zaXplID4gMCkpIHsKLSAgICAgICAgICAgIGdzdF9xdWVyeV9zZXRfZHVyYXRpb24ocXVl
cnksIGZvcm1hdCwgd2Via2l0U3JjLT5wcml2LT5zaXplKTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IFRSVUU7CisgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHdlYmtpdFNyYywgImR1cmF0aW9u
IHF1ZXJ5IGluIGZvcm1hdCAlcyIsIGdzdF9mb3JtYXRfZ2V0X25hbWUoZm9ybWF0KSk7CisgICAg
ICAgICAgICBpZiAoKGZvcm1hdCA9PSBHU1RfRk9STUFUX0JZVEVTKSAmJiAod2Via2l0U3JjLT5w
cml2LT5zaXplID4gMCkpIHsKKyAgICAgICAgICAgICAgICBnc3RfcXVlcnlfc2V0X2R1cmF0aW9u
KHF1ZXJ5LCBmb3JtYXQsIHdlYmtpdFNyYy0+cHJpdi0+c2l6ZSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIEdTVF9RVUVSWV9VUkk6Ci0gICAg
ewotICAgICAgICBnc3RfcXVlcnlfc2V0X3VyaShxdWVyeSwgd2Via2l0U3JjLT5wcml2LT51cmkp
OwotICAgICAgICByZXN1bHQgPSBUUlVFOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgICAg
IHsKKyAgICAgICAgICAgIGdzdF9xdWVyeV9zZXRfdXJpKHF1ZXJ5LCB3ZWJraXRTcmMtPnByaXYt
PnVyaSk7CisgICAgICAgICAgICByZXN1bHQgPSBUUlVFOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9CisgICAgICAgIHsK
KyAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFkPiB0YXJnZXQgPSBhZG9wdEdSZWYoZ3N0X2dob3N0
X3BhZF9nZXRfdGFyZ2V0KEdTVF9HSE9TVF9QQURfQ0FTVChwYWQpKSk7CiAKLSAgICBpZiAoIXJl
c3VsdCkKLSAgICAgICAgcmVzdWx0ID0gZ3N0X3BhZF9xdWVyeV9kZWZhdWx0KHBhZCwgcXVlcnkp
OworICAgICAgICAgICAgLy8gRm9yd2FyZCB0aGUgcXVlcnkgdG8gdGhlIHByb3h5IHRhcmdldCBw
YWQuCisgICAgICAgICAgICBpZiAodGFyZ2V0KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdz
dF9wYWRfcXVlcnkodGFyZ2V0LmdldCgpLCBxdWVyeSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZm5kZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNRdWVyeShHc3RQYWQqIHBh
ZCwgR3N0UXVlcnkqIHF1ZXJ5KQoreworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gc3JjID0gYWRv
cHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBhZCkpOworICAgIHJldHVybiB3ZWJL
aXRXZWJTcmNRdWVyeVdpdGhQYXJlbnQocGFkLCBHU1RfT0JKRUNUKHNyYy5nZXQoKSksIHF1ZXJ5
KTsKK30KKyNlbmRpZgorCiAvLyB1cmkgaGFuZGxlciBpbnRlcmZhY2UKIAorI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCitzdGF0aWMgR3N0VVJJVHlwZSB3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKEdU
eXBlKQoreworICAgIHJldHVybiBHU1RfVVJJX1NSQzsKK30KKworY29uc3QgZ2NoYXIgKiBjb25z
dCAqIHdlYktpdFdlYlNyY0dldFByb3RvY29scyhHVHlwZSkKK3sKKyAgICBzdGF0aWMgZ2NoYXIq
IHByb3RvY29sc1tdID0geyhnY2hhciopICJodHRwIiwgKGdjaGFyKikgImh0dHBzIiwgMCB9Owor
CisgICAgcmV0dXJuIHByb3RvY29sczsKK30KKworc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNH
ZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9
IFdFQktJVF9XRUJfU1JDKGhhbmRsZXIpOworICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYg
PSBzcmMtPnByaXY7CisKKyAgICByZXR1cm4gZ19zdHJkdXAocHJpdi0+dXJpKTsKK30KKworc3Rh
dGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBj
b25zdCBnY2hhciogdXJpLCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNy
YyA9IFdFQktJVF9XRUJfU1JDKGhhbmRsZXIpOworICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHBy
aXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAoR1NUX1NUQVRFKHNyYykgPj0gR1NUX1NUQVRFX1BB
VVNFRCkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIlVSSSBjYW4gb25seSBiZSBz
ZXQgaW4gc3RhdGVzIDwgUEFVU0VEIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisK
KyAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBwcml2LT51cmkgPSAwOworCisgICAgaWYgKCF1
cmkpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgS1VSTCB1cmwoS1VSTCgpLCB1cmkpOwor
CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkg
eworICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR1NUX1VSSV9FUlJPUiwgR1NUX1VSSV9FUlJP
Ul9CQURfVVJJLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7CisgICAgICAgIHJldHVybiBGQUxT
RTsKKyAgICB9CisKKyAgICBwcml2LT51cmkgPSBnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKKyNlbHNlCiBzdGF0aWMgR3N0VVJJVHlw
ZSB3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKHZvaWQpCiB7CiAgICAgcmV0dXJuIEdTVF9VUklfU1JD
OwpAQCAtNTY1LDYgKzY0Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZXRVcmko
R3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSkKICAgICBwcml2LT51cmkg
PSBnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIFRSVUU7
CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3Bv
aW50ZXIgZ0lmYWNlLCBncG9pbnRlciBpZmFjZURhdGEpCiB7CkBAIC03MTMsNyArNzkxLDEzIEBA
IHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlCiAgICAgICAgIGxlbmd0aCArPSBwcml2LT5yZXF1ZXN0
ZWRPZmZzZXQ7CiAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywgbGVu
Z3RoKTsKICAgICAgICAgaWYgKCFwcml2LT5oYXZlQXBwU3JjMjcpIHsKKyNpZmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQorICAgICAgICAgICAgR3N0U2VnbWVudCogc2VnbWVudCA9ICZHU1RfQkFTRV9T
UkMocHJpdi0+YXBwc3JjKS0+c2VnbWVudDsKKyAgICAgICAgICAgIHNlZ21lbnQtPmR1cmF0aW9u
ID0gbGVuZ3RoOworICAgICAgICAgICAgc2VnbWVudC0+Zm9ybWF0ID0gR1NUX0ZPUk1BVF9CWVRF
UzsKKyNlbHNlCiAgICAgICAgICAgICBnc3Rfc2VnbWVudF9zZXRfZHVyYXRpb24oJkdTVF9CQVNF
X1NSQyhwcml2LT5hcHBzcmMpLT5zZWdtZW50LCBHU1RfRk9STUFUX0JZVEVTLCBsZW5ndGgpOwor
I2VuZGlmCiAgICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlQo
cHJpdi0+YXBwc3JjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3Rf
bWVzc2FnZV9uZXdfZHVyYXRpb24oR1NUX09CSkVDVChwcml2LT5hcHBzcmMpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1Rf
Rk9STUFUX0JZVEVTLCBsZW5ndGgpKTsKQEAgLTczNiw3ICs4MjAsMTEgQEAgdm9pZCBTdHJlYW1p
bmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UKICAgICAgICAgfQogICAgIH0KIAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
CisgICAgR3N0VGFnTGlzdCogdGFncyA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkoKTsKKyNlbHNl
CiAgICAgR3N0VGFnTGlzdCogdGFncyA9IGdzdF90YWdfbGlzdF9uZXcoKTsKKyNlbmRpZgogICAg
IHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktbmFtZSIpOwogICAgIGlmICgh
dmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9OYW1lKTsKQEAg
LTc2OSw3ICs4NTcsMTEgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UKICAgICBpZiAoZ3N0X3Rh
Z19saXN0X2lzX2VtcHR5KHRhZ3MpKQogICAgICAgICBnc3RfdGFnX2xpc3RfZnJlZSh0YWdzKTsK
ICAgICBlbHNlCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgZ3N0X3BhZF9wdXNo
X2V2ZW50KEdTVF9QQURfQ0FTVChtX3NyYy0+cHJpdi0+c3JjcGFkKSwgZ3N0X2V2ZW50X25ld190
YWcodGFncykpOworI2Vsc2UKICAgICAgICAgZ3N0X2VsZW1lbnRfZm91bmRfdGFnc19mb3JfcGFk
KEdTVF9FTEVNRU5UKG1fc3JjKSwgbV9zcmMtPnByaXYtPnNyY3BhZCwgdGFncyk7CisjZW5kaWYK
IH0KIAogdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKQEAgLTc4NSwxMyArODc3LDIxIEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpCiAKICAg
ICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOwog
CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAw
LCBkYXRhLCBsZW5ndGgpOworI2Vsc2UKICAgICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZl
ciksIGRhdGEsIGxlbmd0aCk7CisjZW5kaWYKICAgICBHU1RfQlVGRkVSX09GRlNFVChidWZmZXIp
ID0gcHJpdi0+b2Zmc2V0OwogICAgIHByaXYtPm9mZnNldCArPSBsZW5ndGg7CiAgICAgR1NUX0JV
RkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CiAKICAgICBHc3RGbG93UmV0
dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywgYnVmZmVyKTsK
KyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYg
cmV0ICE9IEdTVF9GTE9XX0VPUykKKyNlbHNlCiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSyAm
JiByZXQgIT0gR1NUX0ZMT1dfVU5FWFBFQ1RFRCkKKyNlbmRpZgogICAgICAgICBHU1RfRUxFTUVO
VF9FUlJPUihtX3NyYywgQ09SRSwgRkFJTEVELCAoMCksICgwKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCBkNDQ5NDY0Li43NTE4ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMDEtMjUgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHU3RyZWFtZXJdIDAuMTEgc3VwcG9ydCBmb3IgTWVkaWEgZWxlbWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDA1CisKKyAg
ICAgICAgRGlzYWJsZSB0aGUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciBpZiB3ZSBidWlsZCBh
Z2FpbnN0CisgICAgICAgIEdTdHJlYW1lciAwLjExLiBUaGlzIGNvZGUgZGVwZW5kcyBvbiBHU3Ry
ZWFtZXJHV29ybGQgd2hpY2ggd2Fzbid0CisgICAgICAgIHBvcnRlZCB0byAwLjExIGJlY2F1c2Ug
aXQgd2lsbCBzb29uIGJlIHJlbW92ZWQgYW55d2F5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKHdlYlZpZXdFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAod2ViVmlld0V4aXRGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaDoKKyAgICAgICAg
KF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6CisKIDIwMTItMDEtMjMgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJlZmFjdG9yIEdUSydz
IGFjY2Vzc2liaWxpdGl0eSBjb2RlIHRvIGJlIG1vcmUgbW9kdWxhcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcAppbmRleCAzMzAwZmUxLi5kMTRkYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcApAQCAtMTksNyArMTksNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBF
TkFCTEUoVklERU8pCisjaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKIAogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5oCmluZGV4IDNmYjhiMTYuLmNiYzVjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcl9oCiAjZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAogCi0jaWYgRU5BQkxF
KFZJREVPKQorI2lmIEVOQUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEp
CiAKICNpbmNsdWRlICJHUmVmUHRyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYWE0MzJjNS4u
ODI0MDgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApA
QCAtNDg4Nyw3ICs0ODg3LDcgQEAgdm9pZCB3ZWJWaWV3RW50ZXJGdWxsc2NyZWVuKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUpCiAgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6dmlkZW9UYWcpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoVklERU8p
CisjaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKICAgICBI
VE1MTWVkaWFFbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVt
ZW50Kj4obm9kZSk7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwogCkBAIC00OTAzLDcgKzQ5MDMsNyBAQCB2b2lkIHdlYlZpZXdFbnRlckZ1bGxzY3JlZW4o
V2ViS2l0V2ViVmlldyogd2ViVmlldywgTm9kZSogbm9kZSkKIAogdm9pZCB3ZWJWaWV3RXhpdEZ1
bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSNpZiBFTkFCTEUoVklERU8pCisj
aWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKICAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAgICAgaWYgKHByaXYtPmZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCiAgICAgICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCmluZGV4IDhkMmI3YjAuLjJmOGVhZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCkBAIC03OCw3
ICs3OCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogCiAgICAgZ2Jvb2xlYW4g
ZGlzcG9zaW5nOwogCi0jaWYgRU5BQkxFKFZJREVPKQorI2lmIEVOQUJMRShWSURFTykgJiYgIWRl
ZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCiAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciog
ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9jb25maWd1
cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggYjAyNTZmMy4uNzBlNDY1NyAxMDA2NDQKLS0tIGEv
Y29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjY5LDYgKzI2OSwzOSBAQCBpZiB0
ZXN0ICIkd2l0aF9oaWxkb24iID0gInllcyI7IHRoZW4KICAgICBBQ19TVUJTVChbSElMRE9OX0xJ
QlNdKQogZmkKIAorIyBkZXRlcm1pbmUgdGhlIChvcHRpb25hbCkgR1N0cmVhbWVyIHZlcnNpb24g
dG8gdXNlCitBQ19NU0dfQ0hFQ0tJTkcoW3RoZSBHU3RyZWFtZXIgdmVyc2lvbiB0byB1c2VdKQor
QUNfQVJHX1dJVEgoW2dzdHJlYW1lcl0sCisgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRo
LWdzdHJlYW1lcj0wLjEwfDAuMTFdLCBbdGhlIEdTdHJlYW1lciB2ZXJzaW9uIHRvIHVzZSAoZGVm
YXVsdDogMC4xMCldKV0sCisgICAgICAgIFtjYXNlICIkd2l0aF9nc3RyZWFtZXIiIGluCisgICAg
ICAgIDAuMTB8MC4xMSkgOzsKKyAgICAgICAgKikgQUNfTVNHX0VSUk9SKFtpbnZhbGlkIEdTdHJl
YW1lciB2ZXJzaW9uIHNwZWNpZmllZF0pIDs7CisgICAgICAgIGVzYWNdLAorICAgICAgICBbd2l0
aF9nc3RyZWFtZXI9MC4xMF0pCitBQ19NU0dfUkVTVUxUKFskd2l0aF9nc3RyZWFtZXJdKQorCitH
U1RSRUFNRVJfMF8xMF9SRVFVSVJFRF9WRVJTSU9OPTAuMTAKK0dTVFJFQU1FUl8wXzEwX1BMVUdJ
TlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OPTAuMTAuMzAKK0dTVFJFQU1FUl8wXzExX1JFUVVJUkVE
X1ZFUlNJT049MC4xMQorR1NUUkVBTUVSXzBfMTFfUExVR0lOU19CQVNFX1JFUVVJUkVEX1ZFUlNJ
T049MC4xMS4wLjIKKworY2FzZSAiJHdpdGhfZ3N0cmVhbWVyIiBpbgorICAgICAwLjEwKSBHU1RS
RUFNRVJfUkVRVUlSRURfVkVSU0lPTj1HU1RSRUFNRVJfMF8xMF9SRVFVSVJFRF9WRVJTSU9OCisg
ICAgICAgICAgR1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OPUdTVFJFQU1F
Ul8wXzEwX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgR1NUX0FQSV9W
RVJTSU9OPTAuMTAKKyAgICAgICAgICA7OworICAgICAwLjExKSBHU1RSRUFNRVJfUkVRVUlSRURf
VkVSU0lPTj1HU1RSRUFNRVJfMF8xMV9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgR1NUUkVB
TUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OPUdTVFJFQU1FUl8wXzExX1BMVUdJTlNf
QkFTRV9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgR1NUX0FQSV9WRVJTSU9OPTAuMTEKKyAg
ICAgICAgICA7OworZXNhYworCitBQ19TVUJTVChbR1NUX0FQSV9WRVJTSU9OXSkKK2lmIHRlc3Qg
IiRHU1RfQVBJX1ZFUlNJT04iID0gIjAuMTEiOyB0aGVuCitBQ19ERUZJTkUoW0dTVF9VU0VfVU5T
VEFCTEVfQVBJXSwgWzFdLCBbVXNpbmcgdW5zdGFibGUgR1N0cmVhbWVyIEFQSV0pCitBQ19ERUZJ
TkUoW0dTVF9BUElfVkVSU0lPTl8xXSxbMV0sIFtVc2luZyBHU3RyZWFtZXIgMC4xMV0pCitmaQor
CiAjIG1pbmltdW0gYmFzZSBkZXBlbmRlbmNpZXMKIExJQlNPVVBfUkVRVUlSRURfVkVSU0lPTj0y
LjM3LjIuMQogQ0FJUk9fUkVRVUlSRURfVkVSU0lPTj0xLjEwCkBAIC0yODIsOCArMzE1LDYgQEAg
UEFOR09fUkVRVUlSRURfVkVSU0lPTj0xLjEyCiAjIG9wdGlvbmFsIG1vZHVsZXMKIExJQlhTTFRf
UkVRVUlSRURfVkVSU0lPTj0xLjEuNwogU1FMSVRFX1JFUVVJUkVEX1ZFUlNJT049My4wCi1HU1RS
RUFNRVJfUkVRVUlSRURfVkVSU0lPTj0wLjEwCi1HU1RSRUFNRVJfUExVR0lOU19CQVNFX1JFUVVJ
UkVEX1ZFUlNJT049MC4xMC4zMAogRU5DSEFOVF9SRVFVSVJFRF9WRVJTSU9OPTAuMjIKIExJQkZG
VFdfUkVRVUlSRURfVkVSU0lPTj0zLjIuMgogQ0xVVFRFUl9SRVFVSVJFRF9WRVJTSU9OPTEuOC4y
CkBAIC0xMDI0LDE0ICsxMDU1LDE0IEBAIGZpCiAjIGNoZWNrIGlmIGdzdHJlYW1lciBpcyBhdmFp
bGFibGUKIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93
ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKFtHU1RSRUFNRVJd
LAotICAgICAgICAgICAgICAgICAgICAgW2dzdHJlYW1lci0wLjEwID49ICRHU1RSRUFNRVJfUkVR
VUlSRURfVkVSU0lPTgotICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0wLjEwCi0g
ICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXVkaW8tMC4xMAotICAgICAgICAgICAgICAg
ICAgICAgZ3N0cmVhbWVyLWJhc2UtMC4xMAotICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVy
LWludGVyZmFjZXMtMC4xMAotICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMt
MC4xMAotICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBsdWdpbnMtYmFzZS0wLjEwID49
ICRHU1RSRUFNRVJfUExVR0lOU19CQVNFX1JFUVVJUkVEX1ZFUlNJT04KLSAgICAgICAgICAgICAg
ICAgICAgIGdzdHJlYW1lci12aWRlby0wLjEwXSwKKyAgICAgICAgICAgICAgICAgICAgIFtnc3Ry
ZWFtZXItJEdTVF9BUElfVkVSU0lPTiA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KKyAg
ICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hcHAtJEdTVF9BUElfVkVSU0lPTgorICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWF1ZGlvLSRHU1RfQVBJX1ZFUlNJT04KKyAgICAgICAg
ICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLSRHU1RfQVBJX1ZFUlNJT04KKyAgICAgICAgICAg
ICAgICAgICAgIGdzdHJlYW1lci1pbnRlcmZhY2VzLSRHU1RfQVBJX1ZFUlNJT04KKyAgICAgICAg
ICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLSRHU1RfQVBJX1ZFUlNJT04KKyAgICAgICAg
ICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtJEdTVF9BUElfVkVSU0lPTiA+PSAk
R1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgICAgICAg
ICAgICBnc3RyZWFtZXItdmlkZW8tJEdTVF9BUElfVkVSU0lPTl0sCiAgICAgICAgICAgICAgICAg
ICAgICBbaGF2ZV9nc3RyZWFtZXI9eWVzXSkKIAogICAgQUNfU1VCU1QoW0dTVFJFQU1FUl9DRkxB
R1NdKQpAQCAtMTMxNyw2ICsxMzQ4LDcgQEAgR1RLKyBjb25maWd1cmF0aW9uOgogIEdUSysgdmVy
c2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhf
Z3RrCiAgR0RLIHRhcmdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkd2l0aF90YXJnZXQKICBIaWxkb24gVUkgZXh0ZW5zaW9ucyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2hpbGRvbgorIEdTdHJlYW1lciB2ZXJzaW9u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfZ3N0cmVhbWVy
CiAgSW50cm9zcGVjdGlvbiBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAkZW5hYmxlX2ludHJvc3BlY3Rpb24KICBHZW5lcmF0ZSBkb2N1bWVudGF0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ3RrX2RvYwogIgotLSAKMS43
LjguMw==
</data>

          </attachment>
      

    </bug>

</bugzilla>