<?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>164837</bug_id>
          
          <creation_ts>2016-11-16 15:12:50 -0800</creation_ts>
          <short_desc>[MediaStream][Mac] Use AVCapturePreview interfaces for camera/microphone rendering</short_desc>
          <delta_ts>2016-11-17 10:43: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>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252045</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-11-16 15:12:50 -0800</bug_when>
    <thetext>Use AVCaptureAudioPreview and AVCaptureVideoPreviewLayer for previewing audio and video when possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252048</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-16 15:16:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/29297727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252067</commentid>
    <comment_count>2</comment_count>
      <attachid>294988</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-11-16 15:39:36 -0800</bug_when>
    <thetext>Created attachment 294988
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252080</commentid>
    <comment_count>3</comment_count>
      <attachid>294991</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-11-16 16:02:23 -0800</bug_when>
    <thetext>Created attachment 294991
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252091</commentid>
    <comment_count>4</comment_count>
      <attachid>294995</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-11-16 16:20:41 -0800</bug_when>
    <thetext>Created attachment 294995
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252312</commentid>
    <comment_count>5</comment_count>
      <attachid>294995</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-11-17 09:36:33 -0800</bug_when>
    <thetext>Comment on attachment 294995
Updated patch.

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

r=me with minor nit.

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:185
&gt; +RealtimeMediaSourcePreview* MediaStreamTrackPrivate::preview()
&gt; +{
&gt; +    if (m_preview)
&gt; +        return m_preview.get();
&gt; +
&gt; +    m_preview = m_source-&gt;preview();
&gt; +    return m_preview.get();
&gt; +}
&gt; +

Is there any reason to cache the value of m_source-&gt;preview() at this level? m_source can never change, but it may want to swap out the preview layer (in some future patch), and caching this here would make that harder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252319</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-11-17 10:17:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 294995 [details]
&gt; Updated patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=294995&amp;action=review
&gt; 
&gt; r=me with minor nit.
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:185
&gt; &gt; +RealtimeMediaSourcePreview* MediaStreamTrackPrivate::preview()
&gt; &gt; +{
&gt; &gt; +    if (m_preview)
&gt; &gt; +        return m_preview.get();
&gt; &gt; +
&gt; &gt; +    m_preview = m_source-&gt;preview();
&gt; &gt; +    return m_preview.get();
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; Is there any reason to cache the value of m_source-&gt;preview() at this level?
&gt; m_source can never change, but it may want to swap out the preview layer (in
&gt; some future patch), and caching this here would make that harder.

I will commit this patch as-is, but we can talk about changing this in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252332</commentid>
    <comment_count>7</comment_count>
      <attachid>294995</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-17 10:43:47 -0800</bug_when>
    <thetext>Comment on attachment 294995
Updated patch.

Clearing flags on attachment: 294995

Committed r208851: &lt;http://trac.webkit.org/changeset/208851&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252333</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-17 10:43:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294988</attachid>
            <date>2016-11-16 15:39:36 -0800</date>
            <delta_ts>2016-11-16 16:02:23 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>preview_layer_patch_3.txt</filename>
            <type>text/plain</type>
            <size>49582</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBAQAorMjAxNi0xMS0xNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
W01hY10gVXNlIEFWQ2FwdHVyZVByZXZpZXcgb2JqZWN0IGZvciBjYW1lcmEvbWljcm9waG9uZSBy
ZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDgzNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyOTc3Mjc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVh
bCBjYXB0dXJlIGRldmljZXMgY2FuIG5vdCBiZSB1c2VkIGluIGxheW91dCB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAg
ICAgIERyaXZlLWJ5IGZpeDogY2xlYXIgbV9zZXR0aW5nTWVkaWFTdHJlYW1TcmNPYmplY3Qgd2hl
biB0aGUgbWVkaWEgcGxheWVyIGlzIGRlc3Ryb3llZCB1bmxlc3MKKyAgICAgICAgdGhhdCBoYXBw
ZW5zIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZyB2aWRlby5zcmNPYmplY3QuCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFNyY09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjbGVhck1lZGlhUGxheWVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVhbHRpbWUgbWVkaWEgc291cmNlIHRoYXQg
dmVuZCBhIHByZXZpZXcgaW50ZXJmYWNlLCB3aGlsZSBrZWVwaW5nIHN1cHBvcnQKKyAgICAgICAg
Zm9yIHRob3NlIHRoYXQgZG8gbm90IChlLmcuIHRoZSBtb2NrIGNhcHR1cmUgZGV2aWNlcykuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjppc0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
cXVldWVWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVWaWRlb1NhbXBsZUJ1ZmZlckZyb21UcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVuc3VyZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnRE
aXNwbGF5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmludGVybmFsU2V0Vm9sdW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJh
Y2tzKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnBsYXRmb3JtTGF5
ZXIpOiBEZWxldGVkLCBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKworICAgICAgICBFbmFibGUvZGlzYWJsZSB0aGUg
cHJldmlldyB3aGVuIGF2YWlsYWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6ZW5kVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6OnByZXZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpwcmV2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6
OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
cGxhdGZvcm1MYXllcik6IERlbGV0ZWQuCisKKyAgICAgICAgRGVmaW5lIGEgcmVhbHRpbWUgbWVk
aWEgc291cmNlIHByZXZpZXcgaW50ZXJmYWNlLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc6On5SZWFsdGltZU1lZGlhU291cmNlUHJldmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmlldzo6aW52YWxp
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmlldzo6Y3Jl
YXRlV2Vha1B0cik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmll
dzo6UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcpOgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
cHJldmlldyBpbnRlcmZhY2UuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQXVkaW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJj
ZVByZXZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU291cmNlUHJldmll
dzo6QVZBdWRpb1NvdXJjZVByZXZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJj
ZVByZXZpZXc6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVBy
ZXZpZXc6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnBh
dXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRWb2x1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnVwZGF0ZVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjcmVhdGVXZWFrUHRyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpwcmV2aWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpyZW1vdmVQcmV2aWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3OjpBVk1lZGlhU291cmNlUHJldmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhU291cmNlUHJldmlldzo6fkFWTWVkaWFTb3Vy
Y2VQcmV2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpBVlZpZGVv
U291cmNlUHJldmlldyk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6cGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6cGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QVZWaWRlb1NvdXJjZVByZXZpZXc6OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6c2V0RW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2h1dGRvd25DYXB0dXJlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpwbGF0Zm9ybUxheWVyKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjOjpwbGF0Zm9ybUxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZy
YW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBw
bHlTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5l
cmF0ZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRl
UGxhdGZvcm1MYXllcik6IERlbGV0ZWQuCisKIDIwMTYtMTEtMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgc2xvdGNoYW5nZSBldmVudCBzaG91bGQgYnViYmxl
IGFuZCBkaXNwYXRjaGVkIG9uY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzA1LDYgKzMwNSw3IEBACiAJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICov
OyB9OwogCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICov
OyB9OwogCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwN0Qx
NTAzQjFEREI2OTY1MDA4Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDE1MDNBMUREQjY2
ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3RDYzNzQxMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsgfTsKIAkJMDdENkE0
RUYxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEVEMUJFQ0YyRDIw
MDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgKi87IH07CkBAIC03MjU0LDYg
KzcyNTUsNyBAQAogCQkwN0M4QUQxMTFEMDczRDYzMDA4N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlN
RVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFW
Rm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QzhBRDEyMUQwNzNENjMwMDg3QzVDRSAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWRm91bmRhdGlvbk1JTUVUeXBlQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDRTc3RDQxNjcxMkE2QTAwQzU1
QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwN0QxNTAzQTFEREI2Njg4MDA4Rjc1OTggLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZVByZXZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
bHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNGMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2QTRFRDFCRUNGMkQyMDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUwODgsNiArMTUwOTAsNyBAQAogCQkwNzIyMUI5MjE3Q0Yw
QUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTA3RDE1MDNBMUREQjY2ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1l
ZGlhU291cmNlUHJldmlldy5oICovLAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBt
YWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaCAqLywKIAkJCQkwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZS5oICovLApAQCAtMjgxMjAsNiArMjgxMjMsNyBAQAogCQkJCTE0MTFEQ0IxMTY0QzM5
QTgwMEQ0OUJDMSAvKiBXaWR0aENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBF
QTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
NUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwN0QxNTAzQjFEREI2OTY1MDA4Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5k
b3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U5OUFGNTMwQjEzODQ2NDY4RkIwMUE1
IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFF
MUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA1MCw4ICsxMDUwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0U3JjT2JqZWN0KFNjcmkKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0ODk2CiAKICAgICBtX21lZGlhU3RyZWFtU3JjT2JqZWN0ID0gbWVk
aWFTdHJlYW07Ci0gICAgaWYgKG1lZGlhU3RyZWFtKQorICAgIGlmIChtZWRpYVN0cmVhbSkgewor
ICAgICAgICBtX3NldHRpbmdNZWRpYVN0cmVhbVNyY09iamVjdCA9IHRydWU7CiAgICAgICAgIHNl
dFNyYyhET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChjb250ZXh0LCAqbWVkaWFTdHJlYW0pKTsKKyAg
ICAgICAgbV9zZXR0aW5nTWVkaWFTdHJlYW1TcmNPYmplY3QgPSBmYWxzZTsKKyAgICB9CiB9CiAj
ZW5kaWYKIApAQCAtNDk4Myw2ICs0OTg2LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcigKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhUGxheWVyKCVwKSAtIGZsYWdzID0gJXMiLCB0aGlzLCBhY3Rpb25OYW1lKGZsYWdzKS51
dGY4KCkuZGF0YSgpKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKCFtX3Nl
dHRpbmdNZWRpYVN0cmVhbVNyY09iamVjdCkKKyAgICAgICAgbV9tZWRpYVN0cmVhbVNyY09iamVj
dCA9IG51bGxwdHI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgZGV0
YWNoTWVkaWFTb3VyY2UoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIzLDYgKzEwMjMsNyBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+
IG1fbWVkaWFTdHJlYW1TcmNPYmplY3Q7CisgICAgYm9vbCBtX3NldHRpbmdNZWRpYVN0cmVhbVNy
Y09iamVjdCB7IGZhbHNlIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAkocmV2aXNpb24gMjA4NzMw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4NiwxMSArMTg2LDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBib29sIGhhdmVWaWRlb0xh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgbV92aWRl
b1ByZXZpZXdQbGF5ZXI7IH0KKwogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIg
fTsKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9t
ZWRpYVN0cmVhbVByaXZhdGU7CisKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXc+IG1fdmlkZW9QcmV2aWV3UGxheWVyOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4gbV92aWRlb1RyYWNrOworCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyPiBtX3N5bmNocm9u
aXplcjsKKyNlbmRpZgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwog
ICAgIGRvdWJsZSBtX3BhdXNlZFRpbWUgeyAwIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPENsb2Nr
PiBtX2Nsb2NrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjA4
NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw5ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogCi0jaW1wb3J0ICJBVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAi
QVZGb3VuZGF0aW9uU1BJLmgiCi0jaW1wb3J0ICJBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIgogI2lt
cG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgogI2ltcG9ydCAiQ2xvY2suaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNjYsNyArNjQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDog
bV9wbGF5ZXIocGxheWVyKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgICwgbV9z
eW5jaHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXpl
ckluc3RhbmNlKCkgaW5pdF0pKQogICAgICwgbV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgLCBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6
OmNyZWF0ZSgpKQpAQCAtMTAzLDcgKzEwMCwxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjppc0F2YWlsYWJsZSgpCiB7Ci0gICAgcmV0dXJuIEFWRm91bmRhdGlvbkxpYnJhcnkoKSAm
JiBpc0NvcmVNZWRpYUZyYW1ld29ya0F2YWlsYWJsZSgpICYmIGdldEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyQ2xhc3MoKSAmJiBnZXRBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplckNs
YXNzKCk7CisgICAgaWYgKCFBVkZvdW5kYXRpb25MaWJyYXJ5KCkgfHwgIWlzQ29yZU1lZGlhRnJh
bWV3b3JrQXZhaWxhYmxlKCkgfHwgIWdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3Mo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICgh
Z2V0QVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJDbGFzcygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKQpAQCAtMTQ3LDExICsxNTIs
MTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlQnVm
ZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgQVNTRVJUKFttX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pOworICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikgeworICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAgICAgICAgICAgIG1fc2FtcGxlUXVl
dWUuYXBwZW5kKHNhbXBsZSk7CisgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJl
YWR5Rm9yTWVkaWFEYXRhKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07Ci0gICAgbV9pc0ZyYW1lRGlz
cGxheWVkID0gdHJ1ZTsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVl
dWVTYW1wbGVCdWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVm
ZmVyXTsKKyAgICB9CiAKKyAgICBtX2lzRnJhbWVEaXNwbGF5ZWQgPSB0cnVlOwogICAgIGlmICgh
bV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lKSB7CiAgICAgICAgIG1faGFzRXZlckVucXVldWVk
VmlkZW9GcmFtZSA9IHRydWU7CiAgICAgICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFp
bGFibGUoKTsKQEAgLTE2NCwxMiArMTc1LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iagogICAgIGlmICgmdHJhY2sgIT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFj
dGl2ZVZpZGVvVHJhY2soKSB8fCAhc2hvdWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlz
UmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3NhbXBsZVF1ZXVlLmFwcGVuZChz
YW1wbGUpOwotICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRh
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBlbnF1ZXVlVmlkZW9TYW1wbGVCdWZm
ZXIoc2FtcGxlKTsKIH0KIApAQCAtMTkyLDM2ICsxOTcsNTUgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogewotICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcikKKyAgICBpZiAoaGF2ZVZpZGVvTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworCisgICAgQ0FMYXllciAqdmlk
ZW9MYXllciA9IG5pbDsKKyAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVv
VHJhY2soKSkgeworICAgICAgICBtX3ZpZGVvUHJldmlld1BsYXllciA9IG1fbWVkaWFTdHJlYW1Q
cml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPnByZXZpZXcoKTsKKyAgICAgICAgaWYgKG1fdmlk
ZW9QcmV2aWV3UGxheWVyKQorICAgICAgICAgICAgdmlkZW9MYXllciA9IG1fdmlkZW9QcmV2aWV3
UGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgfQorCisgICAgaWYgKCF2aWRlb0xheWVyKSB7
CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICB2aWRlb0xh
eWVyID0gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7CiAjaWZuZGVmIE5ERUJVRwot
ICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CisgICAg
ICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CiAjZW5k
aWYKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3Ig
PSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJs
YWNrKTsKIAotICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5nZXQoKV07CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBtX3N5bmNocm9u
aXplciA9IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICAgICAgW21fc3luY2hyb25pemVyIGFkZFJlbmRlcmVyOm1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRpZgorICAgIH0KIAogICAgIHJlbmRl
cmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIHNuYXBwZWRJ
bnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNp
emUoKSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIo
dmlkZW9MYXllciwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVy
Q29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKCkKIHsKLSAgICBpZiAoIW1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlmICghaGF2ZVZpZGVvTGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9w
UmVxdWVzdGluZ01lZGlhRGF0YV07Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZs
dXNoXTsKLSAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBDTVRpbWViYXNlR2V0VGltZShbbV9zeW5j
aHJvbml6ZXIgdGltZWJhc2VdKTsKLSAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVyZXI6
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkgYXRUaW1lOmN1cnJlbnRUaW1lIHdpdGhD
b21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpewotICAgICAgICAvLyBOby1vcC4KLSAgICB9XTsKLSAg
ICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IG51bGxwdHI7CisKKyAgICBtX3ZpZGVvUHJl
dmlld1BsYXllciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIpIHsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5n
TWVkaWFEYXRhXTsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIENNVGltZSBjdXJyZW50VGltZSA9IENNVGltZWJh
c2VHZXRUaW1lKFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pOworICAgICAgICBbbV9zeW5jaHJv
bml6ZXIgcmVtb3ZlUmVuZGVyZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkgYXRU
aW1lOmN1cnJlbnRUaW1lIHdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpIHsKKyAgICAgICAg
ICAgIC8vIE5vLW9wLgorICAgICAgICB9XTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgPSBudWxscHRyOworI2VuZGlmCisgICAgfQogCiAgICAgcmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKTsKICAgICAKQEAgLTI4MiwxOSArMzA2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmoKIAogUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIHx8IG1fZGlzcGxheU1vZGUgPT0gTm9uZSkKKyAgICBpZiAo
IWhhdmVWaWRlb0xheWVyKCkgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKQogICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlk
ZW9JbmxpbmVMYXllcigpOwogI2Vsc2UKKyAgICBpZiAobV92aWRlb1ByZXZpZXdQbGF5ZXIpCisg
ICAgICAgIHJldHVybiBtX3ZpZGVvUHJldmlld1BsYXllci0+cGxhdGZvcm1MYXllcigpOworCiAg
ICAgcmV0dXJuIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpOwogI2VuZGlmCiB9CiAK
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1vZGUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1vZGUoKSBjb25z
dAogewotICAgIGlmIChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1l
dGFEYXRhQXZhaWxhYmxlKCkgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlm
IChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgIWhhdmVWaWRlb0xheWVyKCkpCiAgICAgICAgIHJldHVybiBOb25lOwogCiAgICAg
aWYgKG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCkgJiYgIW1fbWVkaWFT
dHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPmVuYWJsZWQoKSkKQEAgLTM0NCw3ICsz
NzEsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiAgICAg
bV9jbG9jay0+c3RhcnQoKTsKICAgICBtX3BsYXlpbmcgPSB0cnVlOwotICAgIFttX3N5bmNocm9u
aXplciBzZXRSYXRlOjFdOworCisgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQorICAgICAg
ICBtX3ZpZGVvUHJldmlld1BsYXllci0+cGxheSgpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBl
bHNlCisgICAgICAgIFttX3N5bmNocm9uaXplciBzZXRSYXRlOjFdOworI2VuZGlmCisKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmICghdHJhY2stPmVuYWJsZWQoKSB8fCAhdHJhY2stPnN0cmVhbVRyYWNrKCktPnByZXZp
ZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFj
aygpLT5wcmV2aWV3KCktPnBsYXkoKTsKKyAgICB9CisKICAgICBtX2hhdmVFdmVyUGxheWVkID0g
dHJ1ZTsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICB1cGRhdGVE
aXNwbGF5TW9kZSgpOwpAQCAtMzYxLDcgKzQwMiwyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICBtX3BhdXNlZFRpbWUgPSBtX2Nsb2NrLT5jdXJyZW50
VGltZSgpOwogICAgIG1fcGxheWluZyA9IGZhbHNlOwotICAgIFttX3N5bmNocm9uaXplciBzZXRS
YXRlOjBdOworCisgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQorICAgICAgICBtX3ZpZGVv
UHJldmlld1BsYXllci0+cGF1c2UoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgZWxzZQorICAg
ICAgICBbbV9zeW5jaHJvbml6ZXIgc2V0UmF0ZTowXTsKKyNlbmRpZgorCisgICAgZm9yIChjb25z
dCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
IXRyYWNrLT5lbmFibGVkKCkgfHwgIXRyYWNrLT5zdHJlYW1UcmFjaygpLT5wcmV2aWV3KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS0+cHJl
dmlldygpLT5wYXVzZSgpOworICAgIH0KKwogICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAg
dXBkYXRlUGF1c2VkSW1hZ2UoKTsKIH0KQEAgLTM3OSw3ICs0MzQsMTIgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFNldCB2b2x1bWUgb25jZSB3ZSBh
Y3R1YWxseSBwbGF5IGF1ZGlvLgorICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlv
VHJhY2tNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpIHx8ICF0
cmFjay0+c3RyZWFtVHJhY2soKS0+cHJldmlldygpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCktPnByZXZpZXcoKS0+c2V0Vm9sdW1lKHZvbHVt
ZSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKQEAgLTYyNyw5ICs2ODcsMTAgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChS
ZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4sIGludCk+IGVuYWJsZVZpZGVvVHJh
Y2sgPSBbdGhpc10oYXV0byB0cmFjaywgaW50IGluZGV4KQogICAgIHsKICAgICAgICAgdHJhY2st
PnNldFRyYWNrSW5kZXgoaW5kZXgpOwotICAgICAgICB0cmFjay0+c2V0U2VsZWN0ZWQodHJhY2st
PnN0cmVhbVRyYWNrKCkgPT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2so
KSk7CisgICAgICAgIGJvb2wgc2VsZWN0ZWQgPSB0cmFjay0+c3RyZWFtVHJhY2soKSA9PSBtX21l
ZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOworICAgICAgICB0cmFjay0+c2V0
U2VsZWN0ZWQoc2VsZWN0ZWQpOwogCi0gICAgICAgIGlmICh0cmFjay0+c2VsZWN0ZWQoKSkKKyAg
ICAgICAgaWYgKHNlbGVjdGVkKQogICAgICAgICAgICAgZW5zdXJlTGF5ZXIoKTsKICAgICB9Owog
ICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX3ZpZGVvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCBjdXJyZW50VHJhY2tzLCAmVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
Y3JlYXRlLCBtX3BsYXllciwgJk1lZGlhUGxheWVyOjpyZW1vdmVWaWRlb1RyYWNrLCAmTWVkaWFQ
bGF5ZXI6OmFkZFZpZGVvVHJhY2ssIGVuYWJsZVZpZGVvVHJhY2ssIChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIqKSB0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkocmV2
aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDE0ICsyMjEsNiBAQCBG
bG9hdFNpemUgTWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTCiAgICAgcmV0dXJuIHNpemU7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIG1fYWN0aXZlVmlkZW9UcmFjay0+c291cmNlKCkucGxhdGZv
cm1MYXllcigpOwotfQotCiB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7CiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmgJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5
Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCk7CiAgICAgYm9vbCBp
c1Byb2R1Y2luZ0RhdGEoKSBjb25zdDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKICAgICBSZWZQdHI8SW1hZ2U+IGN1cnJlbnRGcmFtZUltYWdlKCk7CiAgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkocmV2aXNp
b24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDkgQEAg
dm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZAogICAgIC8vIEFsd2F5cyB1
cGRhdGUgdGhlIGVuYWJsZWQgc3RhdGUgcmVnYXJkbGVzcyBvZiB0aGUgdHJhY2sgYmVpbmcgZW5k
ZWQuCiAgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOwogCisgICAgaWYgKG1fcHJldmlldykKKyAg
ICAgICAgbV9wcmV2aWV3LT5zZXRFbmFibGVkKGVuYWJsZWQpOworCiAgICAgZm9yIChhdXRvJiBv
YnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+dHJhY2tFbmFibGVkQ2hh
bmdlZCgqdGhpcyk7CiB9CkBAIC0xMjQsNiArMTI3LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6ZW5kVHJhY2soKQogICAgIC8vIHRyYWNrRW5kZWQgbWV0aG9kIG9uY2UuCiAgICAg
bV9pc0VuZGVkID0gdHJ1ZTsKIAorICAgIG1fcHJldmlldyA9IG51bGxwdHI7CiAgICAgbV9zb3Vy
Y2UtPnJlcXVlc3RTdG9wKHRoaXMpOwogCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2Jz
ZXJ2ZXJzKQpAQCAtMTcwLDYgKzE3NCwxNSBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpwYWludEN1cnJlCiAgICAgfQogfQogCitSZWFsdGltZU1lZGlhU291cmNlUHJldmlldyogTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnByZXZpZXcoKQoreworICAgIGlmIChtX3ByZXZpZXcpCisg
ICAgICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7CisKKyAgICBtX3ByZXZpZXcgPSBtX3NvdXJj
ZS0+cHJldmlldygpOworICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7Cit9CisKIHZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVyIHN1
Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxlciBmYWlsdXJl
SGFuZGxlcikKIHsKICAgICBtX3NvdXJjZS0+YXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cywg
c3VjY2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NiArOTYsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQ
cm92aWRlcigpOwogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlUHJl
dmlldyogcHJldmlldygpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CkBAIC0xMTEsNiArMTEy
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBS
ZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IG1fY29uc3RyYWludHM7CisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2
aWV3PiBtX3ByZXZpZXc7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBib29sIG1faXNFbmFibGVk
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTEyNiw5ICsxMjcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGN1cnJl
bnRGcmFtZUltYWdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSB7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4gcHJl
dmlldygpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgc2V0V2lkdGgoaW50KTsKICAg
ICB2b2lkIHNldEhlaWdodChpbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlUHJldmll
dy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJp
Y3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0
aW1lTWVkaWFTb3VyY2VQcmV2aWV3IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNv
dXJjZVByZXZpZXc+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNl
UHJldmlldygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHBsYXkoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBhdXNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpID0gMDsKKworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IG1fd2Vha1B0ckZhY3Rvcnku
cmV2b2tlQWxsKCk7IH0KKworICAgIFdlYWtQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+
IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcoKQorICAg
ICAgICA6IG1fd2Vha1B0ckZhY3RvcnkodGhpcykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFdlYWtQdHJGYWN0b3J5PFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBtX3dlYWtQdHJG
YWN0b3J5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgJKHJldmlz
aW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlk
ZTsKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVQcmV2aWV3KCkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvbj4gbV9hdWRpb0Nvbm5lY3Rp
b247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1
ZGlvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwODcz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiB0eXBlZGVm
IEFWQ2FwdHVyZUF1ZGlvQ2hhbm5lbCBBVkNhcHR1cmVBdWRpb0NoYW5uZWxUeXBlOwogdHlwZWRl
ZiBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0VHlwZTsK
K3R5cGVkZWYgQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0IEFWQ2FwdHVyZUF1ZGlvUHJldmll
d091dHB1dFR5cGU7CiB0eXBlZGVmIEFWQ2FwdHVyZUNvbm5lY3Rpb24gQVZDYXB0dXJlQ29ubmVj
dGlvblR5cGU7CiB0eXBlZGVmIEFWQ2FwdHVyZURldmljZSBBVkNhcHR1cmVEZXZpY2VUeXBlZGVm
OwogdHlwZWRlZiBBVkNhcHR1cmVEZXZpY2VJbnB1dCBBVkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU7
CkBAIC01MSwxNyArNTIsMTAwIEBAIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3Vu
ZGF0aW8KIAogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9DaGFu
bmVsKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9EYXRhT3V0
cHV0KQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9QcmV2aWV3
T3V0cHV0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQ29ubmVjdGlv
bikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZSkKIFNPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZUlucHV0KQogU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlT3V0cHV0KQogCisjZGVmaW5lIEFWQ2FwdHVy
ZUF1ZGlvUHJldmlld091dHB1dCBnZXRBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXRDbGFzcygp
CisKKyNkZWZpbmUgQVZDYXB0dXJlQXVkaW9DaGFubmVsIGdldEFWQ2FwdHVyZUF1ZGlvQ2hhbm5l
bENsYXNzKCkKKyNkZWZpbmUgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0IGdldEFWQ2FwdHVyZUF1
ZGlvRGF0YU91dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZDYXB0dXJlQ29ubmVjdGlvbiBnZXRBVkNh
cHR1cmVDb25uZWN0aW9uQ2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2UgZ2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VGb3JtYXQgZ2V0QVZDYXB0
dXJlRGV2aWNlRm9ybWF0Q2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VJbnB1dCBnZXRB
VkNhcHR1cmVEZXZpY2VJbnB1dENsYXNzKCkKKyNkZWZpbmUgQVZDYXB0dXJlT3V0cHV0IGdldEFW
Q2FwdHVyZU91dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZGcmFtZVJhdGVSYW5nZSBnZXRBVkZyYW1l
UmF0ZVJhbmdlQ2xhc3MoKQorCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVk
aWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRB
Vk1lZGlhVHlwZUF1ZGlvKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBVkF1ZGlv
U291cmNlUHJldmlldzogcHVibGljIEFWTWVkaWFTb3VyY2VQcmV2aWV3IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGUoQVZDYXB0dXJlU2Vz
c2lvbiAqLCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZSopOworCitwcml2YXRlOgorICAgIEFWQXVkaW9T
b3VyY2VQcmV2aWV3KEFWQ2FwdHVyZVNlc3Npb24gKiwgQVZBdWRpb0NhcHR1cmVTb3VyY2UqKTsK
KworICAgIHZvaWQgaW52YWxpZGF0ZSgpIGZpbmFsOworCisgICAgdm9pZCBwbGF5KCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBwYXVzZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0Vm9sdW1l
KGRvdWJsZSkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwor
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CisKKyAgICB2b2lkIHVwZGF0ZVN0YXRlKCkgY29uc3Q7CisKKyAgICBSZXRhaW5Q
dHI8QVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0VHlwZT4gbV9hdWRpb1ByZXZpZXdPdXRwdXQ7
CisgICAgbXV0YWJsZSBkb3VibGUgbV92b2x1bWUgeyAxIH07CisgICAgbXV0YWJsZSBib29sIG1f
cGF1c2VkIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9Owor
fTsKKworUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBBVkF1ZGlvU291cmNlUHJldmlldzo6
Y3JlYXRlKEFWQ2FwdHVyZVNlc3Npb24gKnNlc3Npb24sIEFWQXVkaW9DYXB0dXJlU291cmNlKiBw
YXJlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBVkF1ZGlvU291cmNlUHJldmlldyhz
ZXNzaW9uLCBwYXJlbnQpKTsKK30KKworQVZBdWRpb1NvdXJjZVByZXZpZXc6OkFWQXVkaW9Tb3Vy
Y2VQcmV2aWV3KEFWQ2FwdHVyZVNlc3Npb24gKnNlc3Npb24sIEFWQXVkaW9DYXB0dXJlU291cmNl
KiBwYXJlbnQpCisgICAgOiBBVk1lZGlhU291cmNlUHJldmlldyhwYXJlbnQpCit7CisgICAgbV9h
dWRpb1ByZXZpZXdPdXRwdXQgPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZUF1ZGlvUHJldmlld091
dHB1dEluc3RhbmNlKCkgaW5pdF0pOworICAgIHNldFZvbHVtZSgxKTsKKyAgICBbc2Vzc2lvbiBh
ZGRPdXRwdXQ6bV9hdWRpb1ByZXZpZXdPdXRwdXQuZ2V0KCldOworfQorCit2b2lkIEFWQXVkaW9T
b3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2F1ZGlvUHJldmlld091dHB1dCA9
IG51bGxwdHI7CisgICAgQVZNZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKTsKK30KKwor
dm9pZCBBVkF1ZGlvU291cmNlUHJldmlldzo6cGxheSgpIGNvbnN0Cit7CisgICAgbV9wYXVzZWQg
PSBmYWxzZTsKKyAgICB1cGRhdGVTdGF0ZSgpOworfQorCit2b2lkIEFWQXVkaW9Tb3VyY2VQcmV2
aWV3OjpwYXVzZSgpIGNvbnN0Cit7CisgICAgbV9wYXVzZWQgPSB0cnVlOworICAgIHVwZGF0ZVN0
YXRlKCk7Cit9CisKK3ZvaWQgQVZBdWRpb1NvdXJjZVByZXZpZXc6OnNldEVuYWJsZWQoYm9vbCBl
bmFibGVkKQoreworICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgdXBkYXRlU3RhdGUoKTsK
K30KKwordm9pZCBBVkF1ZGlvU291cmNlUHJldmlldzo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUp
IGNvbnN0Cit7CisgICAgbV92b2x1bWUgPSB2b2x1bWU7CisgICAgbV9hdWRpb1ByZXZpZXdPdXRw
dXQuZ2V0KCkudm9sdW1lID0gdm9sdW1lOworfQorCit2b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3
Ojp1cGRhdGVTdGF0ZSgpIGNvbnN0Cit7CisgICAgbV9hdWRpb1ByZXZpZXdPdXRwdXQuZ2V0KCku
dm9sdW1lID0gKCFtX2VuYWJsZWQgfHwgbV9wYXVzZWQpID8gMCA6IG1fdm9sdW1lOworfQorCiBS
ZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IEFWQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGUo
QVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBj
b25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgU3RyaW5nJiBpbnZhbGlkQ29uc3Ry
YWludCkKIHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBBVkF1ZGlvQ2FwdHVyZVNv
dXJjZShkZXZpY2UsIGlkKSk7CkBAIC0yMTMsNiArMjk3LDExIEBAIEF1ZGlvU291cmNlUHJvdmlk
ZXIqIEFWQXVkaW9DYXB0dXJlU291cmMKICAgICByZXR1cm4gbV9hdWRpb1NvdXJjZVByb3ZpZGVy
LmdldCgpOwogfQogCitSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWQXVkaW9DYXB0dXJl
U291cmNlOjpjcmVhdGVQcmV2aWV3KCkKK3sKKyAgICByZXR1cm4gQVZBdWRpb1NvdXJjZVByZXZp
ZXc6OmNyZWF0ZShzZXNzaW9uKCksIHRoaXMpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlh
Q2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMDg3MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQ7CiBP
QkpDX0NMQVNTIEFWQ2FwdHVyZUNvbm5lY3Rpb247CkBAIC00Niw2ICs0NSwyMSBAQCB0eXBlZGVm
IHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQVZNZWRpYUNhcHR1cmVTb3VyY2U7CisKK2NsYXNzIEFWTWVkaWFTb3VyY2VQcmV2
aWV3OiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcgeworcHVibGljOgorICAgIHZp
cnR1YWwgfkFWTWVkaWFTb3VyY2VQcmV2aWV3KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKSBv
dmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIEFWTWVkaWFTb3VyY2VQcmV2aWV3KEFWTWVkaWFD
YXB0dXJlU291cmNlKik7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxBVk1lZGlhQ2FwdHVyZVNv
dXJjZT4gbV9wYXJlbnQ7Cit9OworCiBjbGFzcyBBVk1lZGlhQ2FwdHVyZVNvdXJjZSA6IHB1Ymxp
YyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BVk1lZGlhQ2Fw
dHVyZVNvdXJjZSgpOwpAQCAtNjIsNiArNzYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcFBy
b2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNSdW5uaW5nOyB9CiAKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZVByZXZpZXc+IHByZXZpZXcoKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVByZXZpZXcoQVZN
ZWRpYVNvdXJjZVByZXZpZXcqKTsKKyAgICBXZWFrUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBj
cmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7
IH0KKwogcHJvdGVjdGVkOgogICAgIEFWTWVkaWFDYXB0dXJlU291cmNlKEFWQ2FwdHVyZURldmlj
ZSosIGNvbnN0IEF0b21pY1N0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpOwogCkBA
IC04MSw2ICs5OSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldFZpZGVvU2FtcGxlQnVmZmVy
RGVsZWdhdGUoQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0Kik7CiAgICAgdm9pZCBzZXRBdWRpb1Nh
bXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCopOwogCisgICAgdmly
dHVhbCBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZVByZXZpZXcoKSA9IDA7CisK
IHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cFNlc3Npb24oKTsKICAgICB2b2lkIHJlc2V0KCkgZmlu
YWw7CkBAIC05Nyw2ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKICAgICBSZXRhaW5QdHI8QVZDYXB0
dXJlU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2U+IG1f
ZGV2aWNlOworICAgIFZlY3RvcjxXZWFrUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3Pj4g
bV9wcmV2aWV3czsKKyAgICBXZWFrUHRyRmFjdG9yeTxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gbV93
ZWFrUHRyRmFjdG9yeTsKICAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2V9OwogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJl
U291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMjA4NzMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgQVZNZWRpYUNhcHR1cmVTb3Vy
Y2U6OkFWTWVkaWFDYXB0dXJlU291cgogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShpZCwgdHlw
ZSwgZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3Jl
QVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlz
XSkpCiAgICAgLCBtX2RldmljZShkZXZpY2UpCisgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMp
CiB7CiAgICAgc2V0TmFtZShkZXZpY2UubG9jYWxpemVkTmFtZSk7CiAgICAgc2V0UGVyc2lzdGVu
dElEKGRldmljZS51bmlxdWVJRCk7CkBAIC0yMzUsNiArMjM2LDEzIEBAIHZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OnJlc2V0KCkKICAgICBtX2lzUnVubmluZyA9IGZhbHNlOwogICAgIGZvciAo
TlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKICAgICAgICAgW21f
c2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtl
eU5hbWVdOworCisgICAgZm9yIChjb25zdCBhdXRvJiBwcmV2aWV3IDogbV9wcmV2aWV3cykgewor
ICAgICAgICBpZiAocHJldmlldykKKyAgICAgICAgICAgIHByZXZpZXctPmludmFsaWRhdGUoKTsK
KyAgICB9CisgICAgbV9wcmV2aWV3cy5jbGVhcigpOworCiAgICAgc2h1dGRvd25DYXB0dXJlU2Vz
c2lvbigpOwogICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiB9CkBAIC0yNjYsNiArMjc0LDQzIEBA
IEF1ZGlvU291cmNlUHJvdmlkZXIqIEFWTWVkaWFDYXB0dXJlU291cmMKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAorUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6cHJldmlldygpCit7CisgICAgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3
PiBwcmV2aWV3ID0gY3JlYXRlUHJldmlldygpOworICAgIG1fcHJldmlld3MuYXBwZW5kKHByZXZp
ZXctPmNyZWF0ZVdlYWtQdHIoKSk7CisKKyAgICByZXR1cm4gcHJldmlldy5sZWFrUmVmKCk7Cit9
CisKK3ZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlbW92ZVByZXZpZXcoQVZNZWRpYVNvdXJj
ZVByZXZpZXcqIHByZXZpZXcpCit7CisgICAgc2l6ZV90IGluZGV4OworICAgIGZvciAoaW5kZXgg
PSAwOyBpbmRleCA8IG1fcHJldmlld3Muc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICht
X3ByZXZpZXdzW2luZGV4XS5nZXQoKSA9PSBwcmV2aWV3KQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgaWYgKGluZGV4IDwgbV9wcmV2aWV3cy5zaXplKCkpCisgICAgICAgIG1fcHJl
dmlld3MucmVtb3ZlKGluZGV4KTsKK30KKworQVZNZWRpYVNvdXJjZVByZXZpZXc6OkFWTWVkaWFT
b3VyY2VQcmV2aWV3KEFWTWVkaWFDYXB0dXJlU291cmNlKiBwYXJlbnQpCisgICAgOiBtX3BhcmVu
dChwYXJlbnQtPmNyZWF0ZVdlYWtQdHIoKSkKK3sKK30KKworQVZNZWRpYVNvdXJjZVByZXZpZXc6
On5BVk1lZGlhU291cmNlUHJldmlldygpCit7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBt
X3BhcmVudC0+cmVtb3ZlUHJldmlldyh0aGlzKTsKK30KKwordm9pZCBBVk1lZGlhU291cmNlUHJl
dmlldzo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9wYXJlbnQgPSBudWxscHRyOworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKCk7Cit9CisKIE5TQXJyYXkqIHNlc3Np
b25LVk9Qcm9wZXJ0aWVzKCkKIHsKICAgICBzdGF0aWMgTlNBcnJheSoga2V5cyA9IFtAW0AicnVu
bmluZyJdIHJldGFpbl07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNp
b24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CitjbGFzcyBBVlZpZGVvU291cmNlUHJldmlldzsKIAogY2xhc3MgQVZWaWRlb0NhcHR1cmVT
b3VyY2UgOiBwdWJsaWMgQVZNZWRpYUNhcHR1cmVTb3VyY2UgewogcHVibGljOgpAQCAtNzcsMTYg
Kzc4LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTmV3RnJhbWUoUmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPik7CiAKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKIAorICAgIFJlZlB0cjxBVk1lZGlh
U291cmNlUHJldmlldz4gY3JlYXRlUHJldmlldygpIGZpbmFsOwogICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjdXJyZW50RnJhbWVDR0ltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBjdXJyZW50
RnJhbWVJbWFnZSgpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3BlbmRpbmdQ
cmVzZXQ7CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7CisKICAgICBWZWN0b3I8RmxvYXQ2ND4g
bV92aWRlb0ZyYW1lVGltZVN0YW1wczsKLSAgICBtdXRhYmxlIFJldGFpblB0cjxQbGF0Zm9ybUxh
eWVyPiBtX3ZpZGVvUHJldmlld0xheWVyOwogICAgIEZsb2F0NjQgbV9mcmFtZVJhdGUgeyAwIH07
CiAgICAgaW50MzJfdCBtX3dpZHRoIHsgMCB9OwogICAgIGludDMyX3QgbV9oZWlnaHQgeyAwIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMDg3MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUxheWVyLmgiCiAjaW1wb3J0ICJSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlUHJldmll
dy5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAg
LTkwLDYgKzkxLDg4IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0dXIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBVlZpZGVvU291cmNlUHJldmlldzogcHVi
bGljIEFWTWVkaWFTb3VyY2VQcmV2aWV3IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEFW
TWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGUoQVZDYXB0dXJlU2Vzc2lvbiAqLCBBVkNhcHR1cmVE
ZXZpY2VUeXBlZGVmICosIEFWVmlkZW9DYXB0dXJlU291cmNlKik7CisKK3ByaXZhdGU6CisgICAg
QVZWaWRlb1NvdXJjZVByZXZpZXcoQVZDYXB0dXJlU2Vzc2lvbiAqLCBBVkNhcHR1cmVEZXZpY2VU
eXBlZGVmICosIEFWVmlkZW9DYXB0dXJlU291cmNlKik7CisKKyAgICB2b2lkIGludmFsaWRhdGUo
KSBmaW5hbDsKKworICAgIHZvaWQgcGxheSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGF1c2Uo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFZvbHVtZShkb3VibGUpIGNvbnN0IGZpbmFsIHsg
fTsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJldmlld0JhY2tncm91bmRM
YXllci5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wpIGNvbnN0OworCisg
ICAgUmV0YWluUHRyPEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyVHlwZT4gbV9wcmV2aWV3TGF5
ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcHJldmlld0JhY2tncm91bmRMYXll
cjsKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlVHlwZWRlZj4gbV9kZXZpY2U7Cit9Owor
CitSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpjcmVh
dGUoQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2
aWNlLCBBVlZpZGVvQ2FwdHVyZVNvdXJjZSogcGFyZW50KQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQVZWaWRlb1NvdXJjZVByZXZpZXcoc2Vzc2lvbiwgZGV2aWNlLCBwYXJlbnQpKTsKK30K
KworQVZWaWRlb1NvdXJjZVByZXZpZXc6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3KEFWQ2FwdHVyZVNl
c3Npb24gKnNlc3Npb24sIEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgQVZWaWRlb0Nh
cHR1cmVTb3VyY2UqIHBhcmVudCkKKyAgICA6IEFWTWVkaWFTb3VyY2VQcmV2aWV3KHBhcmVudCkK
K3sKKyAgICBtX2RldmljZSA9IGRldmljZTsKKyAgICBtX3ByZXZpZXdMYXllciA9IGFkb3B0TlMo
W2FsbG9jQVZDYXB0dXJlVmlkZW9QcmV2aWV3TGF5ZXJJbnN0YW5jZSgpIGluaXRXaXRoU2Vzc2lv
bjpzZXNzaW9uXSk7CisjaWZuZGVmIE5ERUJVRworICAgIG1fcHJldmlld0xheWVyLmdldCgpLm5h
bWUgPSBAIkFWVmlkZW9DYXB0dXJlU291cmNlIHByZXZpZXcgbGF5ZXIiOworI2VuZGlmCisKKyAg
ICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb250ZW50c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXpl
OworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmFuY2hvclBvaW50ID0gQ0dQb2ludFplcm87Cisg
ICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhT
aXphYmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlOworCisgICAgbV9wcmV2aWV3QmFja2dyb3Vu
ZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBtX3ByZXZpZXdC
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCkubmFtZSA9IEAiQVZWaWRlb1NvdXJjZVByZXZpZXcgcGFyZW50
IGxheWVyIjsKKyAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuY29udGVudHNHcmF2
aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5
ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsKKyAgICBtX3ByZXZpZXdCYWNrZ3Jv
dW5kTGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7CisjaWYgIVBM
QVRGT1JNKElPUykKKyAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6
aW5nTWFzayA9IGtDQUxheWVyV2lkdGhTaXphYmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlOwor
I2VuZGlmCisKKyAgICBbbV9wcmV2aWV3QmFja2dyb3VuZExheWVyIGFkZFN1YmxheWVyOm1fcHJl
dmlld0xheWVyLmdldCgpXTsKK30KKwordm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6aW52YWxp
ZGF0ZSgpCit7CisgICAgbV9wcmV2aWV3TGF5ZXIgPSBudWxscHRyOworICAgIG1fcHJldmlld0Jh
Y2tncm91bmRMYXllciA9IG51bGxwdHI7CisgICAgbV9kZXZpY2UgPSBudWxscHRyOworICAgIEFW
TWVkaWFTb3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQgQVZWaWRlb1NvdXJj
ZVByZXZpZXc6OnBsYXkoKSBjb25zdAoreworICAgIHNldFBhdXNlZChmYWxzZSk7Cit9CisKK3Zv
aWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OnBhdXNlKCkgY29uc3QKK3sKKyAgICBzZXRQYXVzZWQo
dHJ1ZSk7Cit9CisKK3ZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OnNldFBhdXNlZChib29sIHBh
dXNlZCkgY29uc3QKK3sKKyAgICBbbV9kZXZpY2UgbG9ja0ZvckNvbmZpZ3VyYXRpb246bmlsXTsK
KyAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb25uZWN0aW9uLmVuYWJsZWQgPSAhcGF1c2VkOwor
ICAgIFttX2RldmljZSB1bmxvY2tGb3JDb25maWd1cmF0aW9uXTsKK30KKwordm9pZCBBVlZpZGVv
U291cmNlUHJldmlldzo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9wcmV2aWV3
TGF5ZXIuZ2V0KCkuaGlkZGVuID0gIWVuYWJsZWQ7Cit9CisKIGNvbnN0IE9TVHlwZSB2aWRlb0Nh
cHR1cmVGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBOwogCiBSZWZQdHI8QVZNZWRp
YUNhcHR1cmVTb3VyY2U+IEFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGUoQVZDYXB0dXJlRGV2
aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBNZWRpYUNv
bnN0cmFpbnRzKiBjb25zdHJhaW50cywgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKQEAgLTMx
OCw3ICs0MDEsNiBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTCiAK
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNodXRkb3duQ2FwdHVyZVNlc3Npb24oKQogewot
ICAgIG1fdmlkZW9QcmV2aWV3TGF5ZXIgPSBudWxscHRyOwogICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKICAgICBtX2xhc3RJbWFnZSA9IG51bGxwdHI7CiAgICAgbV92aWRlb0ZyYW1lVGltZVN0YW1w
cy5jbGVhcigpOwpAQCAtMzY1LDEyICs0NDcsMTQgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6cHJvY2Vzc05ld0ZyYQogICAgIEFTU0VSVChuZXdTYW1wbGVCdWZmZXIpOwogCiAgICAgQ0ZB
cnJheVJlZiBhdHRhY2htZW50c0FycmF5ID0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2ht
ZW50c0FycmF5KG5ld1NhbXBsZUJ1ZmZlciwgdHJ1ZSk7Ci0gICAgZm9yIChDRkluZGV4IGkgPSAw
OyBpIDwgQ0ZBcnJheUdldENvdW50KGF0dGFjaG1lbnRzQXJyYXkpOyArK2kpIHsKLSAgICAgICAg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRhY2htZW50cyA9IChDRk11dGFibGVEaWN0aW9uYXJ5
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwgaSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGF0dGFjaG1lbnRzLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5
X0Rpc3BsYXlJbW1lZGlhdGVseSwga0NGQm9vbGVhblRydWUpOworICAgIGlmIChhdHRhY2htZW50
c0FycmF5KSB7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3Vu
dChhdHRhY2htZW50c0FycmF5KTsgKytpKSB7CisgICAgICAgICAgICBDRk11dGFibGVEaWN0aW9u
YXJ5UmVmIGF0dGFjaG1lbnRzID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChhdHRhY2htZW50c0FycmF5LCBpKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGF0dGFjaG1lbnRzLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rpc3BsYXlJbW1l
ZGlhdGVseSwga0NGQm9vbGVhblRydWUpOworICAgICAgICB9CiAgICAgfQogCi0gICAgbV9idWZm
ZXIgPSBuZXdTYW1wbGVCdWZmZXI7CisgICAgbV9idWZmZXIgPSBhZG9wdENGKG5ld1NhbXBsZUJ1
ZmZlcik7CiAgICAgbV9sYXN0SW1hZ2UgPSBudWxscHRyOwogCiAgICAgYm9vbCBzZXR0aW5nc0No
YW5nZWQgPSBmYWxzZTsKQEAgLTQ1MCwxNyArNTM0LDkgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6cGFpbnRDdXJyZW50RgogICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJl
Y3QuaGVpZ2h0KCkpLCBtX2xhc3RJbWFnZS5nZXQoKSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxBVk1lZGlh
U291cmNlUHJldmlldz4gQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVByZXZpZXcoKQogewot
ICAgIGlmIChtX3ZpZGVvUHJldmlld0xheWVyKQotICAgICAgICByZXR1cm4gbV92aWRlb1ByZXZp
ZXdMYXllci5nZXQoKTsKLQotICAgIG1fdmlkZW9QcmV2aWV3TGF5ZXIgPSBhZG9wdE5TKFthbGxv
Y0FWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVySW5zdGFuY2UoKSBpbml0V2l0aFNlc3Npb246c2Vz
c2lvbigpXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIG1fdmlkZW9QcmV2aWV3TGF5ZXIuZ2V0KCku
bmFtZSA9IEAiQVZWaWRlb0NhcHR1cmVTb3VyY2UgcHJldmlldyBsYXllciI7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBtX3ZpZGVvUHJldmlld0xheWVyLmdldCgpOworICAgIHJldHVybiBBVlZpZGVv
U291cmNlUHJldmlldzo6Y3JlYXRlKHNlc3Npb24oKSwgZGV2aWNlKCksIHRoaXMpOwogfQogCiBO
U1N0cmluZyAqQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9E
aW1lbnNpb25zKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0KSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgJKHJldmlzaW9u
IDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw3IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBDTVNhbXBsZUJ1ZmZl
ckZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXJGcm9tQ0dJbWFnZShDR0ltYWdlUmVmKSBjb25zdDsKIAot
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
b2lkIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTYW1wbGVCdWZmZXIo
KSBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fcHJldmll
d0ltYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQko
cmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAs
NDkgKzEyMCw2IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNb2NrUmVhbHRpbWUKICAg
ICByZXR1cm4gYWRvcHRDRihwaXhlbEJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9wcmV2aWV3TGF5ZXIpCi0gICAgICAgIHJldHVybiBtX3ByZXZpZXdMYXllci5nZXQoKTsKLQot
ICAgIG1fcHJldmlld0xheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAg
ICBtX3ByZXZpZXdMYXllci5nZXQoKS5uYW1lID0gQCJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
YyBwcmV2aWV3IGxheWVyIjsKLSAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb250ZW50c0dyYXZp
dHkgPSBrQ0FHcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIG1fcHJldmlld0xheWVyLmdldCgpLmFu
Y2hvclBvaW50ID0gQ0dQb2ludFplcm87Ci0gICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkubmVlZHNE
aXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBtX3By
ZXZpZXdMYXllci5nZXQoKS5hdXRvcmVzaXppbmdNYXNrID0ga0NBTGF5ZXJXaWR0aFNpemFibGUg
fCBrQ0FMYXllckhlaWdodFNpemFibGU7Ci0jZW5kaWYKLQotICAgIHVwZGF0ZVBsYXRmb3JtTGF5
ZXIoKTsKLQotICAgIHJldHVybiBtX3ByZXZpZXdMYXllci5nZXQoKTsKLX0KLQotdm9pZCBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX3ByZXZpZXdMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW0NBVHJhbnNh
Y3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9uOjBd
OwotICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107Ci0KLSAgICBkbyB7
Ci0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2Uo
KTsKLSAgICAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIG1f
cHJldmlld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgICAgIGlmICghbV9wcmV2
aWV3SW1hZ2UpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBtX3ByZXZpZXdMYXllci5n
ZXQoKS5jb250ZW50cyA9IChOU09iamVjdCopKG1fcHJldmlld0ltYWdlLmdldCgpKTsKLSAgICB9
IHdoaWxlICgwKTsKLQotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KIHZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiB7CiAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbUNHSW1hZ2UoaW1hZ2VCdWZmZXIoKS0+Y29w
eUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHJl
dmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDYgQEAgYm9v
bCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlGcmFtZQogICAgIGlmIChtX3RpbWVyLmlz
QWN0aXZlKCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyhscm91bmQoMTAwMCAvIHJhdGUpKSk7CiAKLSAgICB1cGRhdGVQbGF0Zm9ybUxh
eWVyKCk7CiAgICAgdXBkYXRlU2FtcGxlQnVmZmVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0xNjgsNyArMTY3LDYgQEAgYm9vbCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlTaXpl
KAogICAgIG1fc3RhdHNGb250LnVwZGF0ZShudWxscHRyKTsKIAogICAgIG1faW1hZ2VCdWZmZXIg
PSBudWxscHRyOwotICAgIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMzM5LDcgKzMzNyw2IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Omdl
bmVyYXRlRnIKICAgICBkcmF3QW5pbWF0aW9uKGNvbnRleHQpOwogICAgIGRyYXdCb3hlcyhjb250
ZXh0KTsKIAotICAgIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKTsKICAgICB1cGRhdGVTYW1wbGVCdWZm
ZXIoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVQbGF0Zm9ybUxheWVyKCkgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNhbXBs
ZUJ1ZmZlcigpIHsgfQogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCkgY29uc3Q7CkBA
IC03Nyw3ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhcHBseUZhY2luZ01vZGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpIG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICBib29sIGFwcGx5QXNwZWN0UmF0aW8oZG91YmxlKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIFJlZlB0cjxJbWFnZT4gY3VycmVudEZy
YW1lSW1hZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294991</attachid>
            <date>2016-11-16 16:02:23 -0800</date>
            <delta_ts>2016-11-16 16:20:41 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>preview_layer_patch_4.txt</filename>
            <type>text/plain</type>
            <size>49587</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBAQAorMjAxNi0xMS0xNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
W01hY10gVXNlIEFWQ2FwdHVyZVByZXZpZXcgb2JqZWN0IGZvciBjYW1lcmEvbWljcm9waG9uZSBy
ZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDgzNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyOTc3Mjc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVh
bCBjYXB0dXJlIGRldmljZXMgY2FuIG5vdCBiZSB1c2VkIGluIGxheW91dCB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAg
ICAgIERyaXZlLWJ5IGZpeDogY2xlYXIgbV9zZXR0aW5nTWVkaWFTdHJlYW1TcmNPYmplY3Qgd2hl
biB0aGUgbWVkaWEgcGxheWVyIGlzIGRlc3Ryb3llZCB1bmxlc3MKKyAgICAgICAgdGhhdCBoYXBw
ZW5zIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZyB2aWRlby5zcmNPYmplY3QuCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFNyY09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjbGVhck1lZGlhUGxheWVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVhbHRpbWUgbWVkaWEgc291cmNlIHRoYXQg
dmVuZCBhIHByZXZpZXcgaW50ZXJmYWNlLCB3aGlsZSBrZWVwaW5nIHN1cHBvcnQKKyAgICAgICAg
Zm9yIHRob3NlIHRoYXQgZG8gbm90IChlLmcuIHRoZSBtb2NrIGNhcHR1cmUgZGV2aWNlcykuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjppc0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
cXVldWVWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVWaWRlb1NhbXBsZUJ1ZmZlckZyb21UcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVuc3VyZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnRE
aXNwbGF5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmludGVybmFsU2V0Vm9sdW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJh
Y2tzKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnBsYXRmb3JtTGF5
ZXIpOiBEZWxldGVkLCBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKworICAgICAgICBFbmFibGUvZGlzYWJsZSB0aGUg
cHJldmlldyB3aGVuIGF2YWlsYWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6ZW5kVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6OnByZXZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpwcmV2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6
OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
cGxhdGZvcm1MYXllcik6IERlbGV0ZWQuCisKKyAgICAgICAgRGVmaW5lIGEgcmVhbHRpbWUgbWVk
aWEgc291cmNlIHByZXZpZXcgaW50ZXJmYWNlLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc6On5SZWFsdGltZU1lZGlhU291cmNlUHJldmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmlldzo6aW52YWxp
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmlldzo6Y3Jl
YXRlV2Vha1B0cik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmll
dzo6UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcpOgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
cHJldmlldyBpbnRlcmZhY2UuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQXVkaW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJj
ZVByZXZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU291cmNlUHJldmll
dzo6QVZBdWRpb1NvdXJjZVByZXZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJj
ZVByZXZpZXc6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVBy
ZXZpZXc6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnBh
dXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRWb2x1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnVwZGF0ZVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjcmVhdGVXZWFrUHRyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpwcmV2aWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpyZW1vdmVQcmV2aWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3OjpBVk1lZGlhU291cmNlUHJldmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhU291cmNlUHJldmlldzo6fkFWTWVkaWFTb3Vy
Y2VQcmV2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpBVlZpZGVv
U291cmNlUHJldmlldyk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6cGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6cGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QVZWaWRlb1NvdXJjZVByZXZpZXc6OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6c2V0RW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2h1dGRvd25DYXB0dXJlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpwbGF0Zm9ybUxheWVyKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjOjpwbGF0Zm9ybUxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZy
YW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBw
bHlTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5l
cmF0ZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRl
UGxhdGZvcm1MYXllcik6IERlbGV0ZWQuCisKIDIwMTYtMTEtMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgc2xvdGNoYW5nZSBldmVudCBzaG91bGQgYnViYmxl
IGFuZCBkaXNwYXRjaGVkIG9uY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzA1LDYgKzMwNSw3IEBACiAJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICov
OyB9OwogCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICov
OyB9OwogCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwN0Qx
NTAzQjFEREI2OTY1MDA4Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDE1MDNBMUREQjY2
ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3RDYzNzQxMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsgfTsKIAkJMDdENkE0
RUYxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEVEMUJFQ0YyRDIw
MDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgKi87IH07CkBAIC03MjU0LDYg
KzcyNTUsNyBAQAogCQkwN0M4QUQxMTFEMDczRDYzMDA4N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlN
RVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFW
Rm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QzhBRDEyMUQwNzNENjMwMDg3QzVDRSAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWRm91bmRhdGlvbk1JTUVUeXBlQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDRTc3RDQxNjcxMkE2QTAwQzU1
QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwN0QxNTAzQTFEREI2Njg4MDA4Rjc1OTggLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZVByZXZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
bHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNGMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2QTRFRDFCRUNGMkQyMDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUwODgsNiArMTUwOTAsNyBAQAogCQkwNzIyMUI5MjE3Q0Yw
QUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTA3RDE1MDNBMUREQjY2ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1l
ZGlhU291cmNlUHJldmlldy5oICovLAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBt
YWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaCAqLywKIAkJCQkwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZS5oICovLApAQCAtMjgxMjAsNiArMjgxMjMsNyBAQAogCQkJCTE0MTFEQ0IxMTY0QzM5
QTgwMEQ0OUJDMSAvKiBXaWR0aENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBF
QTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
NUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwN0QxNTAzQjFEREI2OTY1MDA4Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5k
b3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U5OUFGNTMwQjEzODQ2NDY4RkIwMUE1
IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFF
MUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA1MCw4ICsxMDUwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0U3JjT2JqZWN0KFNjcmkKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0ODk2CiAKICAgICBtX21lZGlhU3RyZWFtU3JjT2JqZWN0ID0gbWVk
aWFTdHJlYW07Ci0gICAgaWYgKG1lZGlhU3RyZWFtKQorICAgIGlmIChtZWRpYVN0cmVhbSkgewor
ICAgICAgICBtX3NldHRpbmdNZWRpYVN0cmVhbVNyY09iamVjdCA9IHRydWU7CiAgICAgICAgIHNl
dFNyYyhET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChjb250ZXh0LCAqbWVkaWFTdHJlYW0pKTsKKyAg
ICAgICAgbV9zZXR0aW5nTWVkaWFTdHJlYW1TcmNPYmplY3QgPSBmYWxzZTsKKyAgICB9CiB9CiAj
ZW5kaWYKIApAQCAtNDk4Myw2ICs0OTg2LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcigKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhUGxheWVyKCVwKSAtIGZsYWdzID0gJXMiLCB0aGlzLCBhY3Rpb25OYW1lKGZsYWdzKS51
dGY4KCkuZGF0YSgpKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKCFtX3Nl
dHRpbmdNZWRpYVN0cmVhbVNyY09iamVjdCkKKyAgICAgICAgbV9tZWRpYVN0cmVhbVNyY09iamVj
dCA9IG51bGxwdHI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgZGV0
YWNoTWVkaWFTb3VyY2UoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIzLDYgKzEwMjMsNyBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+
IG1fbWVkaWFTdHJlYW1TcmNPYmplY3Q7CisgICAgYm9vbCBtX3NldHRpbmdNZWRpYVN0cmVhbVNy
Y09iamVjdCB7IGZhbHNlIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAkocmV2aXNpb24gMjA4NzMw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4NiwxMSArMTg2LDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBib29sIGhhdmVWaWRlb0xh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgbV92aWRl
b1ByZXZpZXdQbGF5ZXI7IH0KKwogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIg
fTsKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9t
ZWRpYVN0cmVhbVByaXZhdGU7CisKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXc+IG1fdmlkZW9QcmV2aWV3UGxheWVyOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4gbV92aWRlb1RyYWNrOworCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyPiBtX3N5bmNocm9u
aXplcjsKKyNlbmRpZgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwog
ICAgIGRvdWJsZSBtX3BhdXNlZFRpbWUgeyAwIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPENsb2Nr
PiBtX2Nsb2NrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjA4
NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw5ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogCi0jaW1wb3J0ICJBVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAi
QVZGb3VuZGF0aW9uU1BJLmgiCi0jaW1wb3J0ICJBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIgogI2lt
cG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgogI2ltcG9ydCAiQ2xvY2suaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNjYsNyArNjQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDog
bV9wbGF5ZXIocGxheWVyKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgICwgbV9z
eW5jaHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXpl
ckluc3RhbmNlKCkgaW5pdF0pKQogICAgICwgbV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgLCBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6
OmNyZWF0ZSgpKQpAQCAtMTAzLDcgKzEwMCwxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjppc0F2YWlsYWJsZSgpCiB7Ci0gICAgcmV0dXJuIEFWRm91bmRhdGlvbkxpYnJhcnkoKSAm
JiBpc0NvcmVNZWRpYUZyYW1ld29ya0F2YWlsYWJsZSgpICYmIGdldEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyQ2xhc3MoKSAmJiBnZXRBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplckNs
YXNzKCk7CisgICAgaWYgKCFBVkZvdW5kYXRpb25MaWJyYXJ5KCkgfHwgIWlzQ29yZU1lZGlhRnJh
bWV3b3JrQXZhaWxhYmxlKCkgfHwgIWdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3Mo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICgh
Z2V0QVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJDbGFzcygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKQpAQCAtMTQ3LDExICsxNTIs
MTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlQnVm
ZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgQVNTRVJUKFttX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pOworICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikgeworICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAgICAgICAgICAgIG1fc2FtcGxlUXVl
dWUuYXBwZW5kKHNhbXBsZSk7CisgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJl
YWR5Rm9yTWVkaWFEYXRhKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07Ci0gICAgbV9pc0ZyYW1lRGlz
cGxheWVkID0gdHJ1ZTsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVl
dWVTYW1wbGVCdWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVm
ZmVyXTsKKyAgICB9CiAKKyAgICBtX2lzRnJhbWVEaXNwbGF5ZWQgPSB0cnVlOwogICAgIGlmICgh
bV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lKSB7CiAgICAgICAgIG1faGFzRXZlckVucXVldWVk
VmlkZW9GcmFtZSA9IHRydWU7CiAgICAgICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFp
bGFibGUoKTsKQEAgLTE2NCwxMiArMTc1LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iagogICAgIGlmICgmdHJhY2sgIT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFj
dGl2ZVZpZGVvVHJhY2soKSB8fCAhc2hvdWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlz
UmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3NhbXBsZVF1ZXVlLmFwcGVuZChz
YW1wbGUpOwotICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRh
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBlbnF1ZXVlVmlkZW9TYW1wbGVCdWZm
ZXIoc2FtcGxlKTsKIH0KIApAQCAtMTkyLDM2ICsxOTcsNTUgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogewotICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcikKKyAgICBpZiAoaGF2ZVZpZGVvTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworCisgICAgQ0FMYXllciAqdmlk
ZW9MYXllciA9IG5pbDsKKyAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVv
VHJhY2soKSkgeworICAgICAgICBtX3ZpZGVvUHJldmlld1BsYXllciA9IG1fbWVkaWFTdHJlYW1Q
cml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPnByZXZpZXcoKTsKKyAgICAgICAgaWYgKG1fdmlk
ZW9QcmV2aWV3UGxheWVyKQorICAgICAgICAgICAgdmlkZW9MYXllciA9IG1fdmlkZW9QcmV2aWV3
UGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgfQorCisgICAgaWYgKCF2aWRlb0xheWVyKSB7
CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICB2aWRlb0xh
eWVyID0gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7CiAjaWZuZGVmIE5ERUJVRwot
ICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CisgICAg
ICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CiAjZW5k
aWYKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3Ig
PSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJs
YWNrKTsKIAotICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5nZXQoKV07CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBtX3N5bmNocm9u
aXplciA9IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICAgICAgW21fc3luY2hyb25pemVyIGFkZFJlbmRlcmVyOm1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRpZgorICAgIH0KIAogICAgIHJlbmRl
cmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIHNuYXBwZWRJ
bnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNp
emUoKSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIo
dmlkZW9MYXllciwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVy
Q29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKCkKIHsKLSAgICBpZiAoIW1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlmICghaGF2ZVZpZGVvTGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9w
UmVxdWVzdGluZ01lZGlhRGF0YV07Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZs
dXNoXTsKLSAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBDTVRpbWViYXNlR2V0VGltZShbbV9zeW5j
aHJvbml6ZXIgdGltZWJhc2VdKTsKLSAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVyZXI6
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkgYXRUaW1lOmN1cnJlbnRUaW1lIHdpdGhD
b21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpewotICAgICAgICAvLyBOby1vcC4KLSAgICB9XTsKLSAg
ICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IG51bGxwdHI7CisKKyAgICBtX3ZpZGVvUHJl
dmlld1BsYXllciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIpIHsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5n
TWVkaWFEYXRhXTsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIENNVGltZSBjdXJyZW50VGltZSA9IENNVGltZWJh
c2VHZXRUaW1lKFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pOworICAgICAgICBbbV9zeW5jaHJv
bml6ZXIgcmVtb3ZlUmVuZGVyZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkgYXRU
aW1lOmN1cnJlbnRUaW1lIHdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpIHsKKyAgICAgICAg
ICAgIC8vIE5vLW9wLgorICAgICAgICB9XTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgPSBudWxscHRyOworI2VuZGlmCisgICAgfQogCiAgICAgcmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKTsKICAgICAKQEAgLTI4MiwxOSArMzA2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmoKIAogUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIHx8IG1fZGlzcGxheU1vZGUgPT0gTm9uZSkKKyAgICBpZiAo
IWhhdmVWaWRlb0xheWVyKCkgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKQogICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlk
ZW9JbmxpbmVMYXllcigpOwogI2Vsc2UKKyAgICBpZiAobV92aWRlb1ByZXZpZXdQbGF5ZXIpCisg
ICAgICAgIHJldHVybiBtX3ZpZGVvUHJldmlld1BsYXllci0+cGxhdGZvcm1MYXllcigpOworCiAg
ICAgcmV0dXJuIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpOwogI2VuZGlmCiB9CiAK
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1vZGUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1vZGUoKSBjb25z
dAogewotICAgIGlmIChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1l
dGFEYXRhQXZhaWxhYmxlKCkgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlm
IChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgIWhhdmVWaWRlb0xheWVyKCkpCiAgICAgICAgIHJldHVybiBOb25lOwogCiAgICAg
aWYgKG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCkgJiYgIW1fbWVkaWFT
dHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPmVuYWJsZWQoKSkKQEAgLTM0NCw3ICsz
NzEsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiAgICAg
bV9jbG9jay0+c3RhcnQoKTsKICAgICBtX3BsYXlpbmcgPSB0cnVlOwotICAgIFttX3N5bmNocm9u
aXplciBzZXRSYXRlOjFdOworCisgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQorICAgICAg
ICBtX3ZpZGVvUHJldmlld1BsYXllci0+cGxheSgpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBl
bHNlCisgICAgICAgIFttX3N5bmNocm9uaXplciBzZXRSYXRlOjFdOworI2VuZGlmCisKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmICghdHJhY2stPmVuYWJsZWQoKSB8fCAhdHJhY2stPnN0cmVhbVRyYWNrKCktPnByZXZp
ZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFj
aygpLT5wcmV2aWV3KCktPnBsYXkoKTsKKyAgICB9CisKICAgICBtX2hhdmVFdmVyUGxheWVkID0g
dHJ1ZTsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICB1cGRhdGVE
aXNwbGF5TW9kZSgpOwpAQCAtMzYxLDcgKzQwMiwyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICBtX3BhdXNlZFRpbWUgPSBtX2Nsb2NrLT5jdXJyZW50
VGltZSgpOwogICAgIG1fcGxheWluZyA9IGZhbHNlOwotICAgIFttX3N5bmNocm9uaXplciBzZXRS
YXRlOjBdOworCisgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQorICAgICAgICBtX3ZpZGVv
UHJldmlld1BsYXllci0+cGF1c2UoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgZWxzZQorICAg
ICAgICBbbV9zeW5jaHJvbml6ZXIgc2V0UmF0ZTowXTsKKyNlbmRpZgorCisgICAgZm9yIChjb25z
dCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
IXRyYWNrLT5lbmFibGVkKCkgfHwgIXRyYWNrLT5zdHJlYW1UcmFjaygpLT5wcmV2aWV3KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS0+cHJl
dmlldygpLT5wYXVzZSgpOworICAgIH0KKwogICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAg
dXBkYXRlUGF1c2VkSW1hZ2UoKTsKIH0KQEAgLTM3OSw3ICs0MzQsMTIgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFNldCB2b2x1bWUgb25jZSB3ZSBh
Y3R1YWxseSBwbGF5IGF1ZGlvLgorICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlv
VHJhY2tNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpIHx8ICF0
cmFjay0+c3RyZWFtVHJhY2soKS0+cHJldmlldygpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCktPnByZXZpZXcoKS0+c2V0Vm9sdW1lKHZvbHVt
ZSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKQEAgLTYyNyw5ICs2ODcsMTAgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChS
ZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4sIGludCk+IGVuYWJsZVZpZGVvVHJh
Y2sgPSBbdGhpc10oYXV0byB0cmFjaywgaW50IGluZGV4KQogICAgIHsKICAgICAgICAgdHJhY2st
PnNldFRyYWNrSW5kZXgoaW5kZXgpOwotICAgICAgICB0cmFjay0+c2V0U2VsZWN0ZWQodHJhY2st
PnN0cmVhbVRyYWNrKCkgPT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2so
KSk7CisgICAgICAgIGJvb2wgc2VsZWN0ZWQgPSB0cmFjay0+c3RyZWFtVHJhY2soKSA9PSBtX21l
ZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOworICAgICAgICB0cmFjay0+c2V0
U2VsZWN0ZWQoc2VsZWN0ZWQpOwogCi0gICAgICAgIGlmICh0cmFjay0+c2VsZWN0ZWQoKSkKKyAg
ICAgICAgaWYgKHNlbGVjdGVkKQogICAgICAgICAgICAgZW5zdXJlTGF5ZXIoKTsKICAgICB9Owog
ICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX3ZpZGVvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCBjdXJyZW50VHJhY2tzLCAmVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
Y3JlYXRlLCBtX3BsYXllciwgJk1lZGlhUGxheWVyOjpyZW1vdmVWaWRlb1RyYWNrLCAmTWVkaWFQ
bGF5ZXI6OmFkZFZpZGVvVHJhY2ssIGVuYWJsZVZpZGVvVHJhY2ssIChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIqKSB0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkocmV2
aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDE0ICsyMjEsNiBAQCBG
bG9hdFNpemUgTWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTCiAgICAgcmV0dXJuIHNpemU7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIG1fYWN0aXZlVmlkZW9UcmFjay0+c291cmNlKCkucGxhdGZv
cm1MYXllcigpOwotfQotCiB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7CiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmgJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5
Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCk7CiAgICAgYm9vbCBp
c1Byb2R1Y2luZ0RhdGEoKSBjb25zdDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKICAgICBSZWZQdHI8SW1hZ2U+IGN1cnJlbnRGcmFtZUltYWdlKCk7CiAgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkocmV2aXNp
b24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDkgQEAg
dm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZAogICAgIC8vIEFsd2F5cyB1
cGRhdGUgdGhlIGVuYWJsZWQgc3RhdGUgcmVnYXJkbGVzcyBvZiB0aGUgdHJhY2sgYmVpbmcgZW5k
ZWQuCiAgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOwogCisgICAgaWYgKG1fcHJldmlldykKKyAg
ICAgICAgbV9wcmV2aWV3LT5zZXRFbmFibGVkKGVuYWJsZWQpOworCiAgICAgZm9yIChhdXRvJiBv
YnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+dHJhY2tFbmFibGVkQ2hh
bmdlZCgqdGhpcyk7CiB9CkBAIC0xMjQsNiArMTI3LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6ZW5kVHJhY2soKQogICAgIC8vIHRyYWNrRW5kZWQgbWV0aG9kIG9uY2UuCiAgICAg
bV9pc0VuZGVkID0gdHJ1ZTsKIAorICAgIG1fcHJldmlldyA9IG51bGxwdHI7CiAgICAgbV9zb3Vy
Y2UtPnJlcXVlc3RTdG9wKHRoaXMpOwogCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2Jz
ZXJ2ZXJzKQpAQCAtMTcwLDYgKzE3NCwxNSBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpwYWludEN1cnJlCiAgICAgfQogfQogCitSZWFsdGltZU1lZGlhU291cmNlUHJldmlldyogTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnByZXZpZXcoKQoreworICAgIGlmIChtX3ByZXZpZXcpCisg
ICAgICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7CisKKyAgICBtX3ByZXZpZXcgPSBtX3NvdXJj
ZS0+cHJldmlldygpOworICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7Cit9CisKIHZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVyIHN1
Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxlciBmYWlsdXJl
SGFuZGxlcikKIHsKICAgICBtX3NvdXJjZS0+YXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cywg
c3VjY2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NiArOTYsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQ
cm92aWRlcigpOwogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlUHJl
dmlldyogcHJldmlldygpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CkBAIC0xMTEsNiArMTEy
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBS
ZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IG1fY29uc3RyYWludHM7CisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2
aWV3PiBtX3ByZXZpZXc7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBib29sIG1faXNFbmFibGVk
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTEyNiw5ICsxMjcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGN1cnJl
bnRGcmFtZUltYWdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSB7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4gcHJl
dmlldygpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgc2V0V2lkdGgoaW50KTsKICAg
ICB2b2lkIHNldEhlaWdodChpbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlUHJldmll
dy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJp
Y3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0
aW1lTWVkaWFTb3VyY2VQcmV2aWV3IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNv
dXJjZVByZXZpZXc+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNl
UHJldmlldygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHBsYXkoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBhdXNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpID0gMDsKKworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IG1fd2Vha1B0ckZhY3Rvcnku
cmV2b2tlQWxsKCk7IH0KKworICAgIFdlYWtQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+
IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcoKQorICAg
ICAgICA6IG1fd2Vha1B0ckZhY3RvcnkodGhpcykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFdlYWtQdHJGYWN0b3J5PFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBtX3dlYWtQdHJG
YWN0b3J5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgJKHJldmlz
aW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlk
ZTsKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVQcmV2aWV3KCkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvbj4gbV9hdWRpb0Nvbm5lY3Rp
b247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1
ZGlvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwODcz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsMjEgKzQ3LDExMCBAQCB0eXBlZGVm
IEFWQ2FwdHVyZURldmljZSBBVkNhcHR1cmVEZXZpY2VUCiB0eXBlZGVmIEFWQ2FwdHVyZURldmlj
ZUlucHV0IEFWQ2FwdHVyZURldmljZUlucHV0VHlwZTsKIHR5cGVkZWYgQVZDYXB0dXJlT3V0cHV0
IEFWQ2FwdHVyZU91dHB1dFR5cGU7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQordHlwZWRlZiBBVkNh
cHR1cmVBdWRpb1ByZXZpZXdPdXRwdXQgQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0VHlwZTsK
KyNlbmRpZgorCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKIAog
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9DaGFubmVsKQogU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0KQorU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0KQog
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQ29ubmVjdGlvbikKIFNPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZSkKIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZUlucHV0KQogU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlT3V0cHV0KQogCisjZGVmaW5lIEFWQ2FwdHVyZUF1ZGlvUHJl
dmlld091dHB1dCBnZXRBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXRDbGFzcygpCisKKyNkZWZp
bmUgQVZDYXB0dXJlQXVkaW9DaGFubmVsIGdldEFWQ2FwdHVyZUF1ZGlvQ2hhbm5lbENsYXNzKCkK
KyNkZWZpbmUgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0IGdldEFWQ2FwdHVyZUF1ZGlvRGF0YU91
dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZDYXB0dXJlQ29ubmVjdGlvbiBnZXRBVkNhcHR1cmVDb25u
ZWN0aW9uQ2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2UgZ2V0QVZDYXB0dXJlRGV2aWNl
Q2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VGb3JtYXQgZ2V0QVZDYXB0dXJlRGV2aWNl
Rm9ybWF0Q2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VJbnB1dCBnZXRBVkNhcHR1cmVE
ZXZpY2VJbnB1dENsYXNzKCkKKyNkZWZpbmUgQVZDYXB0dXJlT3V0cHV0IGdldEFWQ2FwdHVyZU91
dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZGcmFtZVJhdGVSYW5nZSBnZXRBVkZyYW1lUmF0ZVJhbmdl
Q2xhc3MoKQorCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQXVk
aW8sIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlhVHlw
ZUF1ZGlvKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgIVBMQVRGT1JNKElPUykKK2Ns
YXNzIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OiBwdWJsaWMgQVZNZWRpYVNvdXJjZVByZXZpZXcgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZShB
VkNhcHR1cmVTZXNzaW9uICosIEFWQXVkaW9DYXB0dXJlU291cmNlKik7CisKK3ByaXZhdGU6Cisg
ICAgQVZBdWRpb1NvdXJjZVByZXZpZXcoQVZDYXB0dXJlU2Vzc2lvbiAqLCBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZSopOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgZmluYWw7CisKKyAgICB2b2lkIHBs
YXkoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHBhdXNlKCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBzZXRWb2x1bWUoZG91YmxlKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCkgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHZvaWQgdXBkYXRlU3RhdGUoKSBjb25zdDsKKwor
ICAgIFJldGFpblB0cjxBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXRUeXBlPiBtX2F1ZGlvUHJl
dmlld091dHB1dDsKKyAgICBtdXRhYmxlIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKKyAgICBtdXRh
YmxlIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2VuYWJsZWQg
eyB0cnVlIH07Cit9OworCitSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWQXVkaW9Tb3Vy
Y2VQcmV2aWV3OjpjcmVhdGUoQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZBdWRpb0NhcHR1
cmVTb3VyY2UqIHBhcmVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFWQXVkaW9Tb3Vy
Y2VQcmV2aWV3KHNlc3Npb24sIHBhcmVudCkpOworfQorCitBVkF1ZGlvU291cmNlUHJldmlldzo6
QVZBdWRpb1NvdXJjZVByZXZpZXcoQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZBdWRpb0Nh
cHR1cmVTb3VyY2UqIHBhcmVudCkKKyAgICA6IEFWTWVkaWFTb3VyY2VQcmV2aWV3KHBhcmVudCkK
K3sKKyAgICBtX2F1ZGlvUHJldmlld091dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlQXVk
aW9QcmV2aWV3T3V0cHV0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgc2V0Vm9sdW1lKDEpOworICAg
IFtzZXNzaW9uIGFkZE91dHB1dDptX2F1ZGlvUHJldmlld091dHB1dC5nZXQoKV07Cit9CisKK3Zv
aWQgQVZBdWRpb1NvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKQoreworICAgIG1fYXVkaW9QcmV2
aWV3T3V0cHV0ID0gbnVsbHB0cjsKKyAgICBBVk1lZGlhU291cmNlUHJldmlldzo6aW52YWxpZGF0
ZSgpOworfQorCit2b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpwbGF5KCkgY29uc3QKK3sKKyAg
ICBtX3BhdXNlZCA9IGZhbHNlOworICAgIHVwZGF0ZVN0YXRlKCk7Cit9CisKK3ZvaWQgQVZBdWRp
b1NvdXJjZVByZXZpZXc6OnBhdXNlKCkgY29uc3QKK3sKKyAgICBtX3BhdXNlZCA9IHRydWU7Cisg
ICAgdXBkYXRlU3RhdGUoKTsKK30KKwordm9pZCBBVkF1ZGlvU291cmNlUHJldmlldzo6c2V0RW5h
YmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKyAgICB1cGRh
dGVTdGF0ZSgpOworfQorCit2b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRWb2x1bWUoZG91
YmxlIHZvbHVtZSkgY29uc3QKK3sKKyAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKKyAgICBtX2F1ZGlv
UHJldmlld091dHB1dC5nZXQoKS52b2x1bWUgPSB2b2x1bWU7Cit9CisKK3ZvaWQgQVZBdWRpb1Nv
dXJjZVByZXZpZXc6OnVwZGF0ZVN0YXRlKCkgY29uc3QKK3sKKyAgICBtX2F1ZGlvUHJldmlld091
dHB1dC5nZXQoKS52b2x1bWUgPSAoIW1fZW5hYmxlZCB8fCBtX3BhdXNlZCkgPyAwIDogbV92b2x1
bWU7Cit9CisjZW5kaWYKKwogUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y3JlYXRlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIFN0
cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihu
ZXcgQVZBdWRpb0NhcHR1cmVTb3VyY2UoZGV2aWNlLCBpZCkpOwpAQCAtMjEzLDYgKzMwMiwxNSBA
QCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBBVkF1ZGlvQ2FwdHVyZVNvdXJjCiAgICAgcmV0dXJuIG1f
YXVkaW9Tb3VyY2VQcm92aWRlci5nZXQoKTsKIH0KIAorUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2
aWV3PiBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUHJldmlldygpCit7CisjaWYgIVBMQVRG
T1JNKElPUykKKyAgICByZXR1cm4gQVZBdWRpb1NvdXJjZVByZXZpZXc6OmNyZWF0ZShzZXNzaW9u
KCksIHRoaXMpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMDg3MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXQ7CiBPQkpDX0NMQVNTIEFWQ2FwdHVyZUNvbm5lY3Rpb247CkBAIC00Niw2
ICs0NSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVZNZWRpYUNhcHR1cmVTb3VyY2U7CisKK2NsYXNz
IEFWTWVkaWFTb3VyY2VQcmV2aWV3OiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcg
eworcHVibGljOgorICAgIHZpcnR1YWwgfkFWTWVkaWFTb3VyY2VQcmV2aWV3KCk7CisKKyAgICB2
b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIEFWTWVkaWFTb3Vy
Y2VQcmV2aWV3KEFWTWVkaWFDYXB0dXJlU291cmNlKik7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0
cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gbV9wYXJlbnQ7Cit9OworCiBjbGFzcyBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BVk1lZGlhQ2FwdHVyZVNvdXJjZSgpOwpAQCAtNjIsNiArNzYsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICBib29sIGlzUHJvZHVj
aW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNSdW5uaW5nOyB9CiAKKyAgICBSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+IHByZXZpZXcoKSBmaW5hbDsKKyAgICB2b2lk
IHJlbW92ZVByZXZpZXcoQVZNZWRpYVNvdXJjZVByZXZpZXcqKTsKKyAgICBXZWFrUHRyPEFWTWVk
aWFDYXB0dXJlU291cmNlPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9y
eS5jcmVhdGVXZWFrUHRyKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEFWTWVkaWFDYXB0dXJlU291
cmNlKEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUpOwogCkBAIC04MSw2ICs5OSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNl
dFZpZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0Kik7CiAg
ICAgdm9pZCBzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZUF1ZGlvRGF0YU91
dHB1dCopOwogCisgICAgdmlydHVhbCBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0
ZVByZXZpZXcoKSA9IDA7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cFNlc3Npb24oKTsKICAg
ICB2b2lkIHJlc2V0KCkgZmluYWw7CkBAIC05Nyw2ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKICAg
ICBSZXRhaW5QdHI8QVZDYXB0dXJlU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxB
VkNhcHR1cmVEZXZpY2U+IG1fZGV2aWNlOworICAgIFZlY3RvcjxXZWFrUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2VQcmV2aWV3Pj4gbV9wcmV2aWV3czsKKyAgICBXZWFrUHRyRmFjdG9yeTxBVk1lZGlh
Q2FwdHVyZVNvdXJjZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBib29sIG1faXNSdW5uaW5nIHsg
ZmFsc2V9OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNp
b24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAg
QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cgogICAgIDogUmVhbHRpbWVN
ZWRpYVNvdXJjZShpZCwgdHlwZSwgZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fb2JqY09ic2VydmVy
KGFkb3B0TlMoW1tXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlciBhbGxvY10gaW5p
dFdpdGhDYWxsYmFjazp0aGlzXSkpCiAgICAgLCBtX2RldmljZShkZXZpY2UpCisgICAgLCBtX3dl
YWtQdHJGYWN0b3J5KHRoaXMpCiB7CiAgICAgc2V0TmFtZShkZXZpY2UubG9jYWxpemVkTmFtZSk7
CiAgICAgc2V0UGVyc2lzdGVudElEKGRldmljZS51bmlxdWVJRCk7CkBAIC0yMzUsNiArMjM2LDEz
IEBAIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlc2V0KCkKICAgICBtX2lzUnVubmluZyA9
IGZhbHNlOwogICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRp
ZXMoKSkKICAgICAgICAgW21fc2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOmtleU5hbWVdOworCisgICAgZm9yIChjb25zdCBhdXRvJiBwcmV2aWV3
IDogbV9wcmV2aWV3cykgeworICAgICAgICBpZiAocHJldmlldykKKyAgICAgICAgICAgIHByZXZp
ZXctPmludmFsaWRhdGUoKTsKKyAgICB9CisgICAgbV9wcmV2aWV3cy5jbGVhcigpOworCiAgICAg
c2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwogICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiB9CkBA
IC0yNjYsNiArMjc0LDQ1IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEFWTWVkaWFDYXB0dXJlU291
cmMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQ
cmV2aWV3PiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cHJldmlldygpCit7CisgICAgUmVmUHRyPEFW
TWVkaWFTb3VyY2VQcmV2aWV3PiBwcmV2aWV3ID0gY3JlYXRlUHJldmlldygpOworICAgIGlmICgh
cHJldmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX3ByZXZpZXdzLmFwcGVu
ZChwcmV2aWV3LT5jcmVhdGVXZWFrUHRyKCkpOworICAgIHJldHVybiBwcmV2aWV3LmxlYWtSZWYo
KTsKK30KKwordm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlUHJldmlldyhBVk1lZGlh
U291cmNlUHJldmlldyogcHJldmlldykKK3sKKyAgICBzaXplX3QgaW5kZXg7CisgICAgZm9yIChp
bmRleCA9IDA7IGluZGV4IDwgbV9wcmV2aWV3cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
aWYgKG1fcHJldmlld3NbaW5kZXhdLmdldCgpID09IHByZXZpZXcpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBpZiAoaW5kZXggPCBtX3ByZXZpZXdzLnNpemUoKSkKKyAgICAgICAg
bV9wcmV2aWV3cy5yZW1vdmUoaW5kZXgpOworfQorCitBVk1lZGlhU291cmNlUHJldmlldzo6QVZN
ZWRpYVNvdXJjZVByZXZpZXcoQVZNZWRpYUNhcHR1cmVTb3VyY2UqIHBhcmVudCkKKyAgICA6IG1f
cGFyZW50KHBhcmVudC0+Y3JlYXRlV2Vha1B0cigpKQoreworfQorCitBVk1lZGlhU291cmNlUHJl
dmlldzo6fkFWTWVkaWFTb3VyY2VQcmV2aWV3KCkKK3sKKyAgICBpZiAobV9wYXJlbnQpCisgICAg
ICAgIG1fcGFyZW50LT5yZW1vdmVQcmV2aWV3KHRoaXMpOworfQorCit2b2lkIEFWTWVkaWFTb3Vy
Y2VQcmV2aWV3OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3BhcmVudCA9IG51bGxwdHI7CisgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKTsKK30KKwogTlNBcnJheSog
c2Vzc2lvbktWT1Byb3BlcnRpZXMoKQogewogICAgIHN0YXRpYyBOU0FycmF5KiBrZXlzID0gW0Bb
QCJydW5uaW5nIl0gcmV0YWluXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShy
ZXZpc2lvbiAyMDg3MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIEFWVmlkZW9Tb3VyY2VQcmV2aWV3OwogCiBjbGFzcyBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZSA6IHB1YmxpYyBBVk1lZGlhQ2FwdHVyZVNvdXJjZSB7CiBwdWJsaWM6CkBAIC03
NywxNiArNzgsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NOZXdGcmFtZShSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+KTsKIAogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogCisgICAgUmVmUHRyPEFW
TWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVQcmV2aWV3KCkgZmluYWw7CiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGN1cnJlbnRGcmFtZUNHSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGN1
cnJlbnRGcmFtZUltYWdlKCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fcGVu
ZGluZ1ByZXNldDsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVmZmVyOwog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFnZTsKKwogICAgIFZlY3RvcjxGbG9h
dDY0PiBtX3ZpZGVvRnJhbWVUaW1lU3RhbXBzOwotICAgIG11dGFibGUgUmV0YWluUHRyPFBsYXRm
b3JtTGF5ZXI+IG1fdmlkZW9QcmV2aWV3TGF5ZXI7CiAgICAgRmxvYXQ2NCBtX2ZyYW1lUmF0ZSB7
IDAgfTsKICAgICBpbnQzMl90IG1fd2lkdGggeyAwIH07CiAgICAgaW50MzJfdCBtX2hlaWdodCB7
IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwODcz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbXBvcnQgIlJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VQ
cmV2aWV3LmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgpAQCAtOTAsNiArOTEsODggQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNh
cHR1cgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFWVmlkZW9Tb3VyY2VQcmV2aWV3
OiBwdWJsaWMgQVZNZWRpYVNvdXJjZVByZXZpZXcgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQ
dHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZShBVkNhcHR1cmVTZXNzaW9uICosIEFWQ2Fw
dHVyZURldmljZVR5cGVkZWYgKiwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqKTsKKworcHJpdmF0ZToK
KyAgICBBVlZpZGVvU291cmNlUHJldmlldyhBVkNhcHR1cmVTZXNzaW9uICosIEFWQ2FwdHVyZURl
dmljZVR5cGVkZWYgKiwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqKTsKKworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIGZpbmFsOworCisgICAgdm9pZCBwbGF5KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBw
YXVzZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSkgY29uc3QgZmlu
YWwgeyB9OworICAgIHZvaWQgc2V0RW5hYmxlZChib29sKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmV2aWV3QmFja2dy
b3VuZExheWVyLmdldCgpOyB9CisgICAgCisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCkgY29uc3Q7
CisKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9QcmV2aWV3TGF5ZXJUeXBlPiBtX3ByZXZp
ZXdMYXllcjsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wcmV2aWV3QmFja2dyb3Vu
ZExheWVyOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VUeXBlZGVmPiBtX2RldmljZTsK
K307CisKK1JlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gQVZWaWRlb1NvdXJjZVByZXZpZXc6
OmNyZWF0ZShBVkNhcHR1cmVTZXNzaW9uICpzZXNzaW9uLCBBVkNhcHR1cmVEZXZpY2VUeXBlZGVm
KiBkZXZpY2UsIEFWVmlkZW9DYXB0dXJlU291cmNlKiBwYXJlbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBVlZpZGVvU291cmNlUHJldmlldyhzZXNzaW9uLCBkZXZpY2UsIHBhcmVudCkp
OworfQorCitBVlZpZGVvU291cmNlUHJldmlldzo6QVZWaWRlb1NvdXJjZVByZXZpZXcoQVZDYXB0
dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZSogcGFyZW50KQorICAgIDogQVZNZWRpYVNvdXJjZVByZXZpZXcocGFy
ZW50KQoreworICAgIG1fZGV2aWNlID0gZGV2aWNlOworICAgIG1fcHJldmlld0xheWVyID0gYWRv
cHROUyhbYWxsb2NBVkNhcHR1cmVWaWRlb1ByZXZpZXdMYXllckluc3RhbmNlKCkgaW5pdFdpdGhT
ZXNzaW9uOnNlc3Npb25dKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0
KCkubmFtZSA9IEAiQVZWaWRlb0NhcHR1cmVTb3VyY2UgcHJldmlldyBsYXllciI7CisjZW5kaWYK
KworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmNvbnRlbnRzR3Jhdml0eSA9IGtDQUdyYXZpdHlS
ZXNpemU7CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVy
bzsKKyAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5hdXRvcmVzaXppbmdNYXNrID0ga0NBTGF5ZXJX
aWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFibGU7CisKKyAgICBtX3ByZXZpZXdCYWNr
Z3JvdW5kTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fcHJl
dmlld0JhY2tncm91bmRMYXllci5nZXQoKS5uYW1lID0gQCJBVlZpZGVvU291cmNlUHJldmlldyBw
YXJlbnQgbGF5ZXIiOworICAgIG1fcHJldmlld0JhY2tncm91bmRMYXllci5nZXQoKS5jb250ZW50
c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXplQXNwZWN0OworICAgIG1fcHJldmlld0JhY2tncm91
bmRMYXllci5nZXQoKS5hbmNob3JQb2ludCA9IENHUG9pbnRaZXJvOworICAgIG1fcHJldmlld0Jh
Y2tncm91bmRMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKKyNp
ZiAhUExBVEZPUk0oSU9TKQorICAgIG1fcHJldmlld0JhY2tncm91bmRMYXllci5nZXQoKS5hdXRv
cmVzaXppbmdNYXNrID0ga0NBTGF5ZXJXaWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFi
bGU7CisjZW5kaWYKKworICAgIFttX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIgYWRkU3VibGF5ZXI6
bV9wcmV2aWV3TGF5ZXIuZ2V0KCldOworfQorCit2b2lkIEFWVmlkZW9Tb3VyY2VQcmV2aWV3Ojpp
bnZhbGlkYXRlKCkKK3sKKyAgICBtX3ByZXZpZXdMYXllciA9IG51bGxwdHI7CisgICAgbV9wcmV2
aWV3QmFja2dyb3VuZExheWVyID0gbnVsbHB0cjsKKyAgICBtX2RldmljZSA9IG51bGxwdHI7Cisg
ICAgQVZNZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKTsKK30KKwordm9pZCBBVlZpZGVv
U291cmNlUHJldmlldzo6cGxheSgpIGNvbnN0Cit7CisgICAgc2V0UGF1c2VkKGZhbHNlKTsKK30K
Kwordm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6cGF1c2UoKSBjb25zdAoreworICAgIHNldFBh
dXNlZCh0cnVlKTsKK30KKwordm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6c2V0UGF1c2VkKGJv
b2wgcGF1c2VkKSBjb25zdAoreworICAgIFttX2RldmljZSBsb2NrRm9yQ29uZmlndXJhdGlvbjpu
aWxdOworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmNvbm5lY3Rpb24uZW5hYmxlZCA9ICFwYXVz
ZWQ7CisgICAgW21fZGV2aWNlIHVubG9ja0ZvckNvbmZpZ3VyYXRpb25dOworfQorCit2b2lkIEFW
VmlkZW9Tb3VyY2VQcmV2aWV3OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3By
ZXZpZXdMYXllci5nZXQoKS5oaWRkZW4gPSAhZW5hYmxlZDsKK30KKwogY29uc3QgT1NUeXBlIHZp
ZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkE7CiAKIFJlZlB0cjxB
Vk1lZGlhQ2FwdHVyZVNvdXJjZT4gQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShBVkNhcHR1
cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQpA
QCAtMzE4LDcgKzQwMSw2IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVy
ZVMKIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2h1dGRvd25DYXB0dXJlU2Vzc2lvbigp
CiB7Ci0gICAgbV92aWRlb1ByZXZpZXdMYXllciA9IG51bGxwdHI7CiAgICAgbV9idWZmZXIgPSBu
dWxscHRyOwogICAgIG1fbGFzdEltYWdlID0gbnVsbHB0cjsKICAgICBtX3ZpZGVvRnJhbWVUaW1l
U3RhbXBzLmNsZWFyKCk7CkBAIC0zNjUsMTIgKzQ0NywxNCBAQCB2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpwcm9jZXNzTmV3RnJhCiAgICAgQVNTRVJUKG5ld1NhbXBsZUJ1ZmZlcik7CiAKICAg
ICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0
dGFjaG1lbnRzQXJyYXkobmV3U2FtcGxlQnVmZmVyLCB0cnVlKTsKLSAgICBmb3IgKENGSW5kZXgg
aSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVudHNBcnJheSk7ICsraSkgewotICAg
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRzID0gKENGTXV0YWJsZURpY3Rp
b25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdHRhY2htZW50c0FycmF5LCBpKTsKLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0YWNobWVudHMsIGtDTVNhbXBsZUF0dGFjaG1l
bnRLZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgaWYgKGF0dGFj
aG1lbnRzQXJyYXkpIHsKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdl
dENvdW50KGF0dGFjaG1lbnRzQXJyYXkpOyArK2kpIHsKKyAgICAgICAgICAgIENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgYXR0YWNobWVudHMgPSAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzQXJyYXksIGkpOworICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoYXR0YWNobWVudHMsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRGlzcGxh
eUltbWVkaWF0ZWx5LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBt
X2J1ZmZlciA9IG5ld1NhbXBsZUJ1ZmZlcjsKKyAgICBtX2J1ZmZlciA9IGFkb3B0Q0YobmV3U2Ft
cGxlQnVmZmVyKTsKICAgICBtX2xhc3RJbWFnZSA9IG51bGxwdHI7CiAKICAgICBib29sIHNldHRp
bmdzQ2hhbmdlZCA9IGZhbHNlOwpAQCAtNDUwLDE3ICs1MzQsOSBAQCB2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpwYWludEN1cnJlbnRGCiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgcGFpbnRSZWN0LndpZHRoKCksIHBh
aW50UmVjdC5oZWlnaHQoKSksIG1fbGFzdEltYWdlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEFW
TWVkaWFTb3VyY2VQcmV2aWV3PiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUHJldmlldygp
CiB7Ci0gICAgaWYgKG1fdmlkZW9QcmV2aWV3TGF5ZXIpCi0gICAgICAgIHJldHVybiBtX3ZpZGVv
UHJldmlld0xheWVyLmdldCgpOwotCi0gICAgbV92aWRlb1ByZXZpZXdMYXllciA9IGFkb3B0TlMo
W2FsbG9jQVZDYXB0dXJlVmlkZW9QcmV2aWV3TGF5ZXJJbnN0YW5jZSgpIGluaXRXaXRoU2Vzc2lv
bjpzZXNzaW9uKCldKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV92aWRlb1ByZXZpZXdMYXllci5n
ZXQoKS5uYW1lID0gQCJBVlZpZGVvQ2FwdHVyZVNvdXJjZSBwcmV2aWV3IGxheWVyIjsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIG1fdmlkZW9QcmV2aWV3TGF5ZXIuZ2V0KCk7CisgICAgcmV0dXJuIEFW
VmlkZW9Tb3VyY2VQcmV2aWV3OjpjcmVhdGUoc2Vzc2lvbigpLCBkZXZpY2UoKSwgdGhpcyk7CiB9
CiAKIE5TU3RyaW5nICpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFNlc3Npb25QcmVzZXRGb3JW
aWRlb0RpbWVuc2lvbnMoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaAkocmV2
aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0
LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IENNU2FtcGxl
QnVmZmVyRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOwogICAgIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlckZyb21DR0ltYWdlKENHSW1hZ2VSZWYpIGNvbnN0
OwogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgdXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVNhbXBsZUJ1
ZmZlcigpIG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9w
cmV2aWV3SW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Lm1tCShyZXZpc2lvbiAyMDg3MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEyMCw0OSArMTIwLDYgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IE1vY2tSZWFsdGlt
ZQogICAgIHJldHVybiBhZG9wdENGKHBpeGVsQnVmZmVyKTsKIH0KIAotUGxhdGZvcm1MYXllciog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAg
IGlmIChtX3ByZXZpZXdMYXllcikKLSAgICAgICAgcmV0dXJuIG1fcHJldmlld0xheWVyLmdldCgp
OwotCi0gICAgbV9wcmV2aWV3TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwotICAgIG1fcHJldmlld0xheWVyLmdldCgpLm5hbWUgPSBAIk1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjIHByZXZpZXcgbGF5ZXIiOwotICAgIG1fcHJldmlld0xheWVyLmdldCgpLmNvbnRlbnRz
R3Jhdml0eSA9IGtDQUdyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgbV9wcmV2aWV3TGF5ZXIuZ2V0
KCkuYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsKLSAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5u
ZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAg
IG1fcHJldmlld0xheWVyLmdldCgpLmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6
YWJsZSB8IGtDQUxheWVySGVpZ2h0U2l6YWJsZTsKLSNlbmRpZgotCi0gICAgdXBkYXRlUGxhdGZv
cm1MYXllcigpOwotCi0gICAgcmV0dXJuIG1fcHJldmlld0xheWVyLmdldCgpOwotfQotCi12b2lk
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fcHJldmlld0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbQ0FU
cmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRp
b246MF07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLQotICAg
IGRvIHsKLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyKCktPmNvcHlJ
bWFnZSgpOwotICAgICAgICBpZiAoIWltYWdlKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICAgICAgaWYgKCFt
X3ByZXZpZXdJbWFnZSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIG1fcHJldmlld0xh
eWVyLmdldCgpLmNvbnRlbnRzID0gKE5TT2JqZWN0KikobV9wcmV2aWV3SW1hZ2UuZ2V0KCkpOwot
ICAgIH0gd2hpbGUgKDApOwotCi0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0KLQogdm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKIHsKICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tQ0dJbWFnZShpbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNiBA
QCBib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZyYW1lCiAgICAgaWYgKG1fdGlt
ZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhzdGQ6OmNocm9u
bzo6bWlsbGlzZWNvbmRzKGxyb3VuZCgxMDAwIC8gcmF0ZSkpKTsKIAotICAgIHVwZGF0ZVBsYXRm
b3JtTGF5ZXIoKTsKICAgICB1cGRhdGVTYW1wbGVCdWZmZXIoKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTE2OCw3ICsxNjcsNiBAQCBib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBs
eVNpemUoCiAgICAgbV9zdGF0c0ZvbnQudXBkYXRlKG51bGxwdHIpOwogCiAgICAgbV9pbWFnZUJ1
ZmZlciA9IG51bGxwdHI7Ci0gICAgdXBkYXRlUGxhdGZvcm1MYXllcigpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CkBAIC0zMzksNyArMzM3LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Z2VuZXJhdGVGcgogICAgIGRyYXdBbmltYXRpb24oY29udGV4dCk7CiAgICAgZHJhd0JveGVz
KGNvbnRleHQpOwogCi0gICAgdXBkYXRlUGxhdGZvcm1MYXllcigpOwogICAgIHVwZGF0ZVNhbXBs
ZUJ1ZmZlcigpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCShyZXZpc2lvbiAyMDg3MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U2FtcGxlQnVmZmVyKCkgeyB9CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKSBjb25z
dDsKQEAgLTc3LDcgKzc2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGFwcGx5RmFjaW5nTW9kZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSkgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgYXBwbHlBc3BlY3RSYXRpbyhkb3VibGUpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgUmVmUHRyPEltYWdlPiBjdXJy
ZW50RnJhbWVJbWFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294995</attachid>
            <date>2016-11-16 16:20:41 -0800</date>
            <delta_ts>2016-11-17 10:43:47 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>preview_layer_patch_5.txt</filename>
            <type>text/plain</type>
            <size>50159</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBAQAorMjAxNi0xMS0xNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
W01hY10gVXNlIEFWQ2FwdHVyZVByZXZpZXcgb2JqZWN0IGZvciBjYW1lcmEvbWljcm9waG9uZSBy
ZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDgzNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyOTc3Mjc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVh
bCBjYXB0dXJlIGRldmljZXMgY2FuIG5vdCBiZSB1c2VkIGluIGxheW91dCB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAg
ICAgIERyaXZlLWJ5IGZpeDogY2xlYXIgbV9zZXR0aW5nTWVkaWFTdHJlYW1TcmNPYmplY3Qgd2hl
biB0aGUgbWVkaWEgcGxheWVyIGlzIGRlc3Ryb3llZCB1bmxlc3MKKyAgICAgICAgdGhhdCBoYXBw
ZW5zIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZyB2aWRlby5zcmNPYmplY3QuCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFNyY09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjbGVhck1lZGlhUGxheWVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVhbHRpbWUgbWVkaWEgc291cmNlIHRoYXQg
dmVuZCBhIHByZXZpZXcgaW50ZXJmYWNlLCB3aGlsZSBrZWVwaW5nIHN1cHBvcnQKKyAgICAgICAg
Zm9yIHRob3NlIHRoYXQgZG8gbm90IChlLmcuIHRoZSBtb2NrIGNhcHR1cmUgZGV2aWNlcykuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjppc0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
cXVldWVWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVWaWRlb1NhbXBsZUJ1ZmZlckZyb21UcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVuc3VyZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnRE
aXNwbGF5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmludGVybmFsU2V0Vm9sdW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJh
Y2tzKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnBsYXRmb3JtTGF5
ZXIpOiBEZWxldGVkLCBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKworICAgICAgICBFbmFibGUvZGlzYWJsZSB0aGUg
cHJldmlldyB3aGVuIGF2YWlsYWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6ZW5kVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6OnByZXZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpwcmV2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6
OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
cGxhdGZvcm1MYXllcik6IERlbGV0ZWQuCisKKyAgICAgICAgRGVmaW5lIGEgcmVhbHRpbWUgbWVk
aWEgc291cmNlIHByZXZpZXcgaW50ZXJmYWNlLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc6On5SZWFsdGltZU1lZGlhU291cmNlUHJldmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmlldzo6aW52YWxp
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmlldzo6Y3Jl
YXRlV2Vha1B0cik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlUHJldmll
dzo6UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcpOgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
cHJldmlldyBpbnRlcmZhY2UuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQXVkaW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJj
ZVByZXZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU291cmNlUHJldmll
dzo6QVZBdWRpb1NvdXJjZVByZXZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJj
ZVByZXZpZXc6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVBy
ZXZpZXc6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnBh
dXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRWb2x1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnVwZGF0ZVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjcmVhdGVXZWFrUHRyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpwcmV2aWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpyZW1vdmVQcmV2aWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3OjpBVk1lZGlhU291cmNlUHJldmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhU291cmNlUHJldmlldzo6fkFWTWVkaWFTb3Vy
Y2VQcmV2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpBVlZpZGVv
U291cmNlUHJldmlldyk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6cGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6cGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QVZWaWRlb1NvdXJjZVByZXZpZXc6OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvU291cmNlUHJldmlldzo6c2V0RW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2h1dGRvd25DYXB0dXJlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpwbGF0Zm9ybUxheWVyKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjOjpwbGF0Zm9ybUxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZy
YW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBw
bHlTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5l
cmF0ZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRl
UGxhdGZvcm1MYXllcik6IERlbGV0ZWQuCisKIDIwMTYtMTEtMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgc2xvdGNoYW5nZSBldmVudCBzaG91bGQgYnViYmxl
IGFuZCBkaXNwYXRjaGVkIG9uY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzA1LDYgKzMwNSw3IEBACiAJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICov
OyB9OwogCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICov
OyB9OwogCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwN0Qx
NTAzQjFEREI2OTY1MDA4Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDE1MDNBMUREQjY2
ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3RDYzNzQxMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsgfTsKIAkJMDdENkE0
RUYxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEVEMUJFQ0YyRDIw
MDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgKi87IH07CkBAIC03MjU0LDYg
KzcyNTUsNyBAQAogCQkwN0M4QUQxMTFEMDczRDYzMDA4N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlN
RVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFW
Rm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QzhBRDEyMUQwNzNENjMwMDg3QzVDRSAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWRm91bmRhdGlvbk1JTUVUeXBlQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDRTc3RDQxNjcxMkE2QTAwQzU1
QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwN0QxNTAzQTFEREI2Njg4MDA4Rjc1OTggLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZVByZXZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
bHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNGMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2QTRFRDFCRUNGMkQyMDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUwODgsNiArMTUwOTAsNyBAQAogCQkwNzIyMUI5MjE3Q0Yw
QUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTA3RDE1MDNBMUREQjY2ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1l
ZGlhU291cmNlUHJldmlldy5oICovLAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBt
YWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaCAqLywKIAkJCQkwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZS5oICovLApAQCAtMjgxMjAsNiArMjgxMjMsNyBAQAogCQkJCTE0MTFEQ0IxMTY0QzM5
QTgwMEQ0OUJDMSAvKiBXaWR0aENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBF
QTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
NUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwN0QxNTAzQjFEREI2OTY1MDA4Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5k
b3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U5OUFGNTMwQjEzODQ2NDY4RkIwMUE1
IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFF
MUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA1MCw4ICsxMDUwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0U3JjT2JqZWN0KFNjcmkKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0ODk2CiAKICAgICBtX21lZGlhU3RyZWFtU3JjT2JqZWN0ID0gbWVk
aWFTdHJlYW07Ci0gICAgaWYgKG1lZGlhU3RyZWFtKQorICAgIGlmIChtZWRpYVN0cmVhbSkgewor
ICAgICAgICBtX3NldHRpbmdNZWRpYVN0cmVhbVNyY09iamVjdCA9IHRydWU7CiAgICAgICAgIHNl
dFNyYyhET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChjb250ZXh0LCAqbWVkaWFTdHJlYW0pKTsKKyAg
ICAgICAgbV9zZXR0aW5nTWVkaWFTdHJlYW1TcmNPYmplY3QgPSBmYWxzZTsKKyAgICB9CiB9CiAj
ZW5kaWYKIApAQCAtNDk4Myw2ICs0OTg2LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcigKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhUGxheWVyKCVwKSAtIGZsYWdzID0gJXMiLCB0aGlzLCBhY3Rpb25OYW1lKGZsYWdzKS51
dGY4KCkuZGF0YSgpKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKCFtX3Nl
dHRpbmdNZWRpYVN0cmVhbVNyY09iamVjdCkKKyAgICAgICAgbV9tZWRpYVN0cmVhbVNyY09iamVj
dCA9IG51bGxwdHI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgZGV0
YWNoTWVkaWFTb3VyY2UoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIzLDYgKzEwMjMsNyBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+
IG1fbWVkaWFTdHJlYW1TcmNPYmplY3Q7CisgICAgYm9vbCBtX3NldHRpbmdNZWRpYVN0cmVhbVNy
Y09iamVjdCB7IGZhbHNlIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAkocmV2aXNpb24gMjA4NzMw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4NiwxMSArMTg2LDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBib29sIGhhdmVWaWRlb0xh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgbV92aWRl
b1ByZXZpZXdQbGF5ZXI7IH0KKwogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIg
fTsKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9t
ZWRpYVN0cmVhbVByaXZhdGU7CisKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXc+IG1fdmlkZW9QcmV2aWV3UGxheWVyOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4gbV92aWRlb1RyYWNrOworCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyPiBtX3N5bmNocm9u
aXplcjsKKyNlbmRpZgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwog
ICAgIGRvdWJsZSBtX3BhdXNlZFRpbWUgeyAwIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPENsb2Nr
PiBtX2Nsb2NrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjA4
NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw5ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogCi0jaW1wb3J0ICJBVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAi
QVZGb3VuZGF0aW9uU1BJLmgiCi0jaW1wb3J0ICJBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIgogI2lt
cG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgogI2ltcG9ydCAiQ2xvY2suaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNjYsNyArNjQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDog
bV9wbGF5ZXIocGxheWVyKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgICwgbV9z
eW5jaHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXpl
ckluc3RhbmNlKCkgaW5pdF0pKQogICAgICwgbV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgLCBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6
OmNyZWF0ZSgpKQpAQCAtMTAzLDcgKzEwMCwxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjppc0F2YWlsYWJsZSgpCiB7Ci0gICAgcmV0dXJuIEFWRm91bmRhdGlvbkxpYnJhcnkoKSAm
JiBpc0NvcmVNZWRpYUZyYW1ld29ya0F2YWlsYWJsZSgpICYmIGdldEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyQ2xhc3MoKSAmJiBnZXRBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplckNs
YXNzKCk7CisgICAgaWYgKCFBVkZvdW5kYXRpb25MaWJyYXJ5KCkgfHwgIWlzQ29yZU1lZGlhRnJh
bWV3b3JrQXZhaWxhYmxlKCkgfHwgIWdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3Mo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICgh
Z2V0QVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJDbGFzcygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKQpAQCAtMTQ3LDExICsxNTIs
MTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlQnVm
ZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgQVNTRVJUKFttX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pOworICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikgeworICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAgICAgICAgICAgIG1fc2FtcGxlUXVl
dWUuYXBwZW5kKHNhbXBsZSk7CisgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJl
YWR5Rm9yTWVkaWFEYXRhKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07Ci0gICAgbV9pc0ZyYW1lRGlz
cGxheWVkID0gdHJ1ZTsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVl
dWVTYW1wbGVCdWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVm
ZmVyXTsKKyAgICB9CiAKKyAgICBtX2lzRnJhbWVEaXNwbGF5ZWQgPSB0cnVlOwogICAgIGlmICgh
bV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lKSB7CiAgICAgICAgIG1faGFzRXZlckVucXVldWVk
VmlkZW9GcmFtZSA9IHRydWU7CiAgICAgICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFp
bGFibGUoKTsKQEAgLTE2NCwxMiArMTc1LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iagogICAgIGlmICgmdHJhY2sgIT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFj
dGl2ZVZpZGVvVHJhY2soKSB8fCAhc2hvdWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlz
UmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3NhbXBsZVF1ZXVlLmFwcGVuZChz
YW1wbGUpOwotICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRh
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBlbnF1ZXVlVmlkZW9TYW1wbGVCdWZm
ZXIoc2FtcGxlKTsKIH0KIApAQCAtMTkyLDM2ICsxOTcsNTUgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogewotICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcikKKyAgICBpZiAoaGF2ZVZpZGVvTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworCisgICAgQ0FMYXllciAqdmlk
ZW9MYXllciA9IG5pbDsKKyAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVv
VHJhY2soKSkgeworICAgICAgICBtX3ZpZGVvUHJldmlld1BsYXllciA9IG1fbWVkaWFTdHJlYW1Q
cml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPnByZXZpZXcoKTsKKyAgICAgICAgaWYgKG1fdmlk
ZW9QcmV2aWV3UGxheWVyKQorICAgICAgICAgICAgdmlkZW9MYXllciA9IG1fdmlkZW9QcmV2aWV3
UGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgfQorCisgICAgaWYgKCF2aWRlb0xheWVyKSB7
CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICB2aWRlb0xh
eWVyID0gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7CiAjaWZuZGVmIE5ERUJVRwot
ICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CisgICAg
ICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CiAjZW5k
aWYKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3Ig
PSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJs
YWNrKTsKIAotICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5nZXQoKV07CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBtX3N5bmNocm9u
aXplciA9IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICAgICAgW21fc3luY2hyb25pemVyIGFkZFJlbmRlcmVyOm1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRpZgorICAgIH0KIAogICAgIHJlbmRl
cmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIHNuYXBwZWRJ
bnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNp
emUoKSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIo
dmlkZW9MYXllciwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVy
Q29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKCkKIHsKLSAgICBpZiAoIW1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlmICghaGF2ZVZpZGVvTGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9w
UmVxdWVzdGluZ01lZGlhRGF0YV07Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZs
dXNoXTsKLSAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBDTVRpbWViYXNlR2V0VGltZShbbV9zeW5j
aHJvbml6ZXIgdGltZWJhc2VdKTsKLSAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVyZXI6
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkgYXRUaW1lOmN1cnJlbnRUaW1lIHdpdGhD
b21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpewotICAgICAgICAvLyBOby1vcC4KLSAgICB9XTsKLSAg
ICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IG51bGxwdHI7CisKKyAgICBtX3ZpZGVvUHJl
dmlld1BsYXllciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIpIHsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5n
TWVkaWFEYXRhXTsKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIENNVGltZSBjdXJyZW50VGltZSA9IENNVGltZWJh
c2VHZXRUaW1lKFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pOworICAgICAgICBbbV9zeW5jaHJv
bml6ZXIgcmVtb3ZlUmVuZGVyZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkgYXRU
aW1lOmN1cnJlbnRUaW1lIHdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpIHsKKyAgICAgICAg
ICAgIC8vIE5vLW9wLgorICAgICAgICB9XTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgPSBudWxscHRyOworI2VuZGlmCisgICAgfQogCiAgICAgcmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKTsKICAgICAKQEAgLTI4MiwxOSArMzA2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmoKIAogUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIHx8IG1fZGlzcGxheU1vZGUgPT0gTm9uZSkKKyAgICBpZiAo
IWhhdmVWaWRlb0xheWVyKCkgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKQogICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlk
ZW9JbmxpbmVMYXllcigpOwogI2Vsc2UKKyAgICBpZiAobV92aWRlb1ByZXZpZXdQbGF5ZXIpCisg
ICAgICAgIHJldHVybiBtX3ZpZGVvUHJldmlld1BsYXllci0+cGxhdGZvcm1MYXllcigpOworCiAg
ICAgcmV0dXJuIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpOwogI2VuZGlmCiB9CiAK
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1vZGUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1vZGUoKSBjb25z
dAogewotICAgIGlmIChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1l
dGFEYXRhQXZhaWxhYmxlKCkgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlm
IChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgIWhhdmVWaWRlb0xheWVyKCkpCiAgICAgICAgIHJldHVybiBOb25lOwogCiAgICAg
aWYgKG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCkgJiYgIW1fbWVkaWFT
dHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPmVuYWJsZWQoKSkKQEAgLTM0NCw3ICsz
NzEsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiAgICAg
bV9jbG9jay0+c3RhcnQoKTsKICAgICBtX3BsYXlpbmcgPSB0cnVlOwotICAgIFttX3N5bmNocm9u
aXplciBzZXRSYXRlOjFdOworCisgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQorICAgICAg
ICBtX3ZpZGVvUHJldmlld1BsYXllci0+cGxheSgpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBl
bHNlCisgICAgICAgIFttX3N5bmNocm9uaXplciBzZXRSYXRlOjFdOworI2VuZGlmCisKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmICghdHJhY2stPmVuYWJsZWQoKSB8fCAhdHJhY2stPnN0cmVhbVRyYWNrKCktPnByZXZp
ZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFj
aygpLT5wcmV2aWV3KCktPnBsYXkoKTsKKyAgICB9CisKICAgICBtX2hhdmVFdmVyUGxheWVkID0g
dHJ1ZTsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICB1cGRhdGVE
aXNwbGF5TW9kZSgpOwpAQCAtMzYxLDcgKzQwMiwyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICBtX3BhdXNlZFRpbWUgPSBtX2Nsb2NrLT5jdXJyZW50
VGltZSgpOwogICAgIG1fcGxheWluZyA9IGZhbHNlOwotICAgIFttX3N5bmNocm9uaXplciBzZXRS
YXRlOjBdOworCisgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQorICAgICAgICBtX3ZpZGVv
UHJldmlld1BsYXllci0+cGF1c2UoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgZWxzZQorICAg
ICAgICBbbV9zeW5jaHJvbml6ZXIgc2V0UmF0ZTowXTsKKyNlbmRpZgorCisgICAgZm9yIChjb25z
dCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
IXRyYWNrLT5lbmFibGVkKCkgfHwgIXRyYWNrLT5zdHJlYW1UcmFjaygpLT5wcmV2aWV3KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS0+cHJl
dmlldygpLT5wYXVzZSgpOworICAgIH0KKwogICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAg
dXBkYXRlUGF1c2VkSW1hZ2UoKTsKIH0KQEAgLTM3OSw3ICs0MzQsMTIgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFNldCB2b2x1bWUgb25jZSB3ZSBh
Y3R1YWxseSBwbGF5IGF1ZGlvLgorICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlv
VHJhY2tNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpIHx8ICF0
cmFjay0+c3RyZWFtVHJhY2soKS0+cHJldmlldygpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCktPnByZXZpZXcoKS0+c2V0Vm9sdW1lKHZvbHVt
ZSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKQEAgLTYyNyw5ICs2ODcsMTAgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChS
ZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4sIGludCk+IGVuYWJsZVZpZGVvVHJh
Y2sgPSBbdGhpc10oYXV0byB0cmFjaywgaW50IGluZGV4KQogICAgIHsKICAgICAgICAgdHJhY2st
PnNldFRyYWNrSW5kZXgoaW5kZXgpOwotICAgICAgICB0cmFjay0+c2V0U2VsZWN0ZWQodHJhY2st
PnN0cmVhbVRyYWNrKCkgPT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2so
KSk7CisgICAgICAgIGJvb2wgc2VsZWN0ZWQgPSB0cmFjay0+c3RyZWFtVHJhY2soKSA9PSBtX21l
ZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOworICAgICAgICB0cmFjay0+c2V0
U2VsZWN0ZWQoc2VsZWN0ZWQpOwogCi0gICAgICAgIGlmICh0cmFjay0+c2VsZWN0ZWQoKSkKKyAg
ICAgICAgaWYgKHNlbGVjdGVkKQogICAgICAgICAgICAgZW5zdXJlTGF5ZXIoKTsKICAgICB9Owog
ICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX3ZpZGVvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCBjdXJyZW50VHJhY2tzLCAmVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
Y3JlYXRlLCBtX3BsYXllciwgJk1lZGlhUGxheWVyOjpyZW1vdmVWaWRlb1RyYWNrLCAmTWVkaWFQ
bGF5ZXI6OmFkZFZpZGVvVHJhY2ssIGVuYWJsZVZpZGVvVHJhY2ssIChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIqKSB0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkocmV2
aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDE0ICsyMjEsNiBAQCBG
bG9hdFNpemUgTWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTCiAgICAgcmV0dXJuIHNpemU7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIG1fYWN0aXZlVmlkZW9UcmFjay0+c291cmNlKCkucGxhdGZv
cm1MYXllcigpOwotfQotCiB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7CiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmgJKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5
Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCk7CiAgICAgYm9vbCBp
c1Byb2R1Y2luZ0RhdGEoKSBjb25zdDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKICAgICBSZWZQdHI8SW1hZ2U+IGN1cnJlbnRGcmFtZUltYWdlKCk7CiAgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkocmV2aXNp
b24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDkgQEAg
dm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZAogICAgIC8vIEFsd2F5cyB1
cGRhdGUgdGhlIGVuYWJsZWQgc3RhdGUgcmVnYXJkbGVzcyBvZiB0aGUgdHJhY2sgYmVpbmcgZW5k
ZWQuCiAgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOwogCisgICAgaWYgKG1fcHJldmlldykKKyAg
ICAgICAgbV9wcmV2aWV3LT5zZXRFbmFibGVkKGVuYWJsZWQpOworCiAgICAgZm9yIChhdXRvJiBv
YnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+dHJhY2tFbmFibGVkQ2hh
bmdlZCgqdGhpcyk7CiB9CkBAIC0xMjQsNiArMTI3LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6ZW5kVHJhY2soKQogICAgIC8vIHRyYWNrRW5kZWQgbWV0aG9kIG9uY2UuCiAgICAg
bV9pc0VuZGVkID0gdHJ1ZTsKIAorICAgIG1fcHJldmlldyA9IG51bGxwdHI7CiAgICAgbV9zb3Vy
Y2UtPnJlcXVlc3RTdG9wKHRoaXMpOwogCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2Jz
ZXJ2ZXJzKQpAQCAtMTcwLDYgKzE3NCwxNSBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpwYWludEN1cnJlCiAgICAgfQogfQogCitSZWFsdGltZU1lZGlhU291cmNlUHJldmlldyogTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnByZXZpZXcoKQoreworICAgIGlmIChtX3ByZXZpZXcpCisg
ICAgICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7CisKKyAgICBtX3ByZXZpZXcgPSBtX3NvdXJj
ZS0+cHJldmlldygpOworICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7Cit9CisKIHZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVyIHN1
Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxlciBmYWlsdXJl
SGFuZGxlcikKIHsKICAgICBtX3NvdXJjZS0+YXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cywg
c3VjY2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NiArOTYsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQ
cm92aWRlcigpOwogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlUHJl
dmlldyogcHJldmlldygpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CkBAIC0xMTEsNiArMTEy
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBS
ZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IG1fY29uc3RyYWludHM7CisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2
aWV3PiBtX3ByZXZpZXc7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBib29sIG1faXNFbmFibGVk
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkocmV2aXNpb24gMjA4NzMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTEyNiw5ICsxMjcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGN1cnJl
bnRGcmFtZUltYWdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSB7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4gcHJl
dmlldygpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgc2V0V2lkdGgoaW50KTsKICAg
ICB2b2lkIHNldEhlaWdodChpbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlUHJldmll
dy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJp
Y3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0
aW1lTWVkaWFTb3VyY2VQcmV2aWV3IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNv
dXJjZVByZXZpZXc+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNl
UHJldmlldygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHBsYXkoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBhdXNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpID0gMDsKKworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IG1fd2Vha1B0ckZhY3Rvcnku
cmV2b2tlQWxsKCk7IH0KKworICAgIFdlYWtQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+
IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcoKQorICAg
ICAgICA6IG1fd2Vha1B0ckZhY3RvcnkodGhpcykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFdlYWtQdHJGYWN0b3J5PFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBtX3dlYWtQdHJG
YWN0b3J5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgJKHJldmlz
aW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlk
ZTsKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVQcmV2aWV3KCkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvbj4gbV9hdWRpb0Nvbm5lY3Rp
b247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1
ZGlvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwODcz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsMjEgKzQ3LDExMCBAQCB0eXBlZGVm
IEFWQ2FwdHVyZURldmljZSBBVkNhcHR1cmVEZXZpY2VUCiB0eXBlZGVmIEFWQ2FwdHVyZURldmlj
ZUlucHV0IEFWQ2FwdHVyZURldmljZUlucHV0VHlwZTsKIHR5cGVkZWYgQVZDYXB0dXJlT3V0cHV0
IEFWQ2FwdHVyZU91dHB1dFR5cGU7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQordHlwZWRlZiBBVkNh
cHR1cmVBdWRpb1ByZXZpZXdPdXRwdXQgQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0VHlwZTsK
KyNlbmRpZgorCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKIAog
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9DaGFubmVsKQogU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0KQorU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0KQog
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlQ29ubmVjdGlvbikKIFNPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZSkKIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZUlucHV0KQogU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlT3V0cHV0KQogCisjZGVmaW5lIEFWQ2FwdHVyZUF1ZGlvUHJl
dmlld091dHB1dCBnZXRBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXRDbGFzcygpCisKKyNkZWZp
bmUgQVZDYXB0dXJlQXVkaW9DaGFubmVsIGdldEFWQ2FwdHVyZUF1ZGlvQ2hhbm5lbENsYXNzKCkK
KyNkZWZpbmUgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0IGdldEFWQ2FwdHVyZUF1ZGlvRGF0YU91
dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZDYXB0dXJlQ29ubmVjdGlvbiBnZXRBVkNhcHR1cmVDb25u
ZWN0aW9uQ2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2UgZ2V0QVZDYXB0dXJlRGV2aWNl
Q2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VGb3JtYXQgZ2V0QVZDYXB0dXJlRGV2aWNl
Rm9ybWF0Q2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VJbnB1dCBnZXRBVkNhcHR1cmVE
ZXZpY2VJbnB1dENsYXNzKCkKKyNkZWZpbmUgQVZDYXB0dXJlT3V0cHV0IGdldEFWQ2FwdHVyZU91
dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZGcmFtZVJhdGVSYW5nZSBnZXRBVkZyYW1lUmF0ZVJhbmdl
Q2xhc3MoKQorCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQXVk
aW8sIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlhVHlw
ZUF1ZGlvKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgIVBMQVRGT1JNKElPUykKK2Ns
YXNzIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OiBwdWJsaWMgQVZNZWRpYVNvdXJjZVByZXZpZXcgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZShB
VkNhcHR1cmVTZXNzaW9uICosIEFWQXVkaW9DYXB0dXJlU291cmNlKik7CisKK3ByaXZhdGU6Cisg
ICAgQVZBdWRpb1NvdXJjZVByZXZpZXcoQVZDYXB0dXJlU2Vzc2lvbiAqLCBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZSopOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgZmluYWw7CisKKyAgICB2b2lkIHBs
YXkoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHBhdXNlKCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBzZXRWb2x1bWUoZG91YmxlKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCkgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHZvaWQgdXBkYXRlU3RhdGUoKSBjb25zdDsKKwor
ICAgIFJldGFpblB0cjxBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXRUeXBlPiBtX2F1ZGlvUHJl
dmlld091dHB1dDsKKyAgICBtdXRhYmxlIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKKyAgICBtdXRh
YmxlIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2VuYWJsZWQg
eyB0cnVlIH07Cit9OworCitSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWQXVkaW9Tb3Vy
Y2VQcmV2aWV3OjpjcmVhdGUoQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZBdWRpb0NhcHR1
cmVTb3VyY2UqIHBhcmVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFWQXVkaW9Tb3Vy
Y2VQcmV2aWV3KHNlc3Npb24sIHBhcmVudCkpOworfQorCitBVkF1ZGlvU291cmNlUHJldmlldzo6
QVZBdWRpb1NvdXJjZVByZXZpZXcoQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZBdWRpb0Nh
cHR1cmVTb3VyY2UqIHBhcmVudCkKKyAgICA6IEFWTWVkaWFTb3VyY2VQcmV2aWV3KHBhcmVudCkK
K3sKKyAgICBtX2F1ZGlvUHJldmlld091dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlQXVk
aW9QcmV2aWV3T3V0cHV0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgc2V0Vm9sdW1lKDEpOworICAg
IFtzZXNzaW9uIGFkZE91dHB1dDptX2F1ZGlvUHJldmlld091dHB1dC5nZXQoKV07Cit9CisKK3Zv
aWQgQVZBdWRpb1NvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKQoreworICAgIG1fYXVkaW9QcmV2
aWV3T3V0cHV0ID0gbnVsbHB0cjsKKyAgICBBVk1lZGlhU291cmNlUHJldmlldzo6aW52YWxpZGF0
ZSgpOworfQorCit2b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpwbGF5KCkgY29uc3QKK3sKKyAg
ICBtX3BhdXNlZCA9IGZhbHNlOworICAgIHVwZGF0ZVN0YXRlKCk7Cit9CisKK3ZvaWQgQVZBdWRp
b1NvdXJjZVByZXZpZXc6OnBhdXNlKCkgY29uc3QKK3sKKyAgICBtX3BhdXNlZCA9IHRydWU7Cisg
ICAgdXBkYXRlU3RhdGUoKTsKK30KKwordm9pZCBBVkF1ZGlvU291cmNlUHJldmlldzo6c2V0RW5h
YmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKyAgICB1cGRh
dGVTdGF0ZSgpOworfQorCit2b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRWb2x1bWUoZG91
YmxlIHZvbHVtZSkgY29uc3QKK3sKKyAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKKyAgICBtX2F1ZGlv
UHJldmlld091dHB1dC5nZXQoKS52b2x1bWUgPSB2b2x1bWU7Cit9CisKK3ZvaWQgQVZBdWRpb1Nv
dXJjZVByZXZpZXc6OnVwZGF0ZVN0YXRlKCkgY29uc3QKK3sKKyAgICBtX2F1ZGlvUHJldmlld091
dHB1dC5nZXQoKS52b2x1bWUgPSAoIW1fZW5hYmxlZCB8fCBtX3BhdXNlZCkgPyAwIDogbV92b2x1
bWU7Cit9CisjZW5kaWYKKwogUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y3JlYXRlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIFN0
cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihu
ZXcgQVZBdWRpb0NhcHR1cmVTb3VyY2UoZGV2aWNlLCBpZCkpOwpAQCAtMjEzLDYgKzMwMiwxNSBA
QCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBBVkF1ZGlvQ2FwdHVyZVNvdXJjCiAgICAgcmV0dXJuIG1f
YXVkaW9Tb3VyY2VQcm92aWRlci5nZXQoKTsKIH0KIAorUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2
aWV3PiBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUHJldmlldygpCit7CisjaWYgIVBMQVRG
T1JNKElPUykKKyAgICByZXR1cm4gQVZBdWRpb1NvdXJjZVByZXZpZXc6OmNyZWF0ZShzZXNzaW9u
KCksIHRoaXMpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMDg3MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXQ7CiBPQkpDX0NMQVNTIEFWQ2FwdHVyZUNvbm5lY3Rpb247CkBAIC00Niw2
ICs0NSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVZNZWRpYUNhcHR1cmVTb3VyY2U7CisKK2NsYXNz
IEFWTWVkaWFTb3VyY2VQcmV2aWV3OiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcg
eworcHVibGljOgorICAgIHZpcnR1YWwgfkFWTWVkaWFTb3VyY2VQcmV2aWV3KCk7CisKKyAgICB2
b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIEFWTWVkaWFTb3Vy
Y2VQcmV2aWV3KEFWTWVkaWFDYXB0dXJlU291cmNlKik7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0
cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gbV9wYXJlbnQ7Cit9OworCiBjbGFzcyBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BVk1lZGlhQ2FwdHVyZVNvdXJjZSgpOwpAQCAtNjIsNiArNzYsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICBib29sIGlzUHJvZHVj
aW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNSdW5uaW5nOyB9CiAKKyAgICBSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+IHByZXZpZXcoKSBmaW5hbDsKKyAgICB2b2lk
IHJlbW92ZVByZXZpZXcoQVZNZWRpYVNvdXJjZVByZXZpZXcqKTsKKyAgICBXZWFrUHRyPEFWTWVk
aWFDYXB0dXJlU291cmNlPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9y
eS5jcmVhdGVXZWFrUHRyKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEFWTWVkaWFDYXB0dXJlU291
cmNlKEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUpOwogCkBAIC04MSw2ICs5OSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNl
dFZpZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0Kik7CiAg
ICAgdm9pZCBzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZUF1ZGlvRGF0YU91
dHB1dCopOwogCisgICAgdmlydHVhbCBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0
ZVByZXZpZXcoKSA9IDA7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cFNlc3Npb24oKTsKICAg
ICB2b2lkIHJlc2V0KCkgZmluYWw7CkBAIC05Nyw2ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKICAg
ICBSZXRhaW5QdHI8QVZDYXB0dXJlU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxB
VkNhcHR1cmVEZXZpY2U+IG1fZGV2aWNlOworICAgIFZlY3RvcjxXZWFrUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2VQcmV2aWV3Pj4gbV9wcmV2aWV3czsKKyAgICBXZWFrUHRyRmFjdG9yeTxBVk1lZGlh
Q2FwdHVyZVNvdXJjZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBib29sIG1faXNSdW5uaW5nIHsg
ZmFsc2V9OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNp
b24gMjA4NzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAg
QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cgogICAgIDogUmVhbHRpbWVN
ZWRpYVNvdXJjZShpZCwgdHlwZSwgZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fb2JqY09ic2VydmVy
KGFkb3B0TlMoW1tXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlciBhbGxvY10gaW5p
dFdpdGhDYWxsYmFjazp0aGlzXSkpCiAgICAgLCBtX2RldmljZShkZXZpY2UpCisgICAgLCBtX3dl
YWtQdHJGYWN0b3J5KHRoaXMpCiB7CiAgICAgc2V0TmFtZShkZXZpY2UubG9jYWxpemVkTmFtZSk7
CiAgICAgc2V0UGVyc2lzdGVudElEKGRldmljZS51bmlxdWVJRCk7CkBAIC0yMzUsNiArMjM2LDEz
IEBAIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlc2V0KCkKICAgICBtX2lzUnVubmluZyA9
IGZhbHNlOwogICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRp
ZXMoKSkKICAgICAgICAgW21fc2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOmtleU5hbWVdOworCisgICAgZm9yIChjb25zdCBhdXRvJiBwcmV2aWV3
IDogbV9wcmV2aWV3cykgeworICAgICAgICBpZiAocHJldmlldykKKyAgICAgICAgICAgIHByZXZp
ZXctPmludmFsaWRhdGUoKTsKKyAgICB9CisgICAgbV9wcmV2aWV3cy5jbGVhcigpOworCiAgICAg
c2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwogICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiB9CkBA
IC0yNjYsNiArMjc0LDQ1IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEFWTWVkaWFDYXB0dXJlU291
cmMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQ
cmV2aWV3PiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cHJldmlldygpCit7CisgICAgUmVmUHRyPEFW
TWVkaWFTb3VyY2VQcmV2aWV3PiBwcmV2aWV3ID0gY3JlYXRlUHJldmlldygpOworICAgIGlmICgh
cHJldmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX3ByZXZpZXdzLmFwcGVu
ZChwcmV2aWV3LT5jcmVhdGVXZWFrUHRyKCkpOworICAgIHJldHVybiBwcmV2aWV3LmxlYWtSZWYo
KTsKK30KKwordm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlUHJldmlldyhBVk1lZGlh
U291cmNlUHJldmlldyogcHJldmlldykKK3sKKyAgICBzaXplX3QgaW5kZXg7CisgICAgZm9yIChp
bmRleCA9IDA7IGluZGV4IDwgbV9wcmV2aWV3cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
aWYgKG1fcHJldmlld3NbaW5kZXhdLmdldCgpID09IHByZXZpZXcpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBpZiAoaW5kZXggPCBtX3ByZXZpZXdzLnNpemUoKSkKKyAgICAgICAg
bV9wcmV2aWV3cy5yZW1vdmUoaW5kZXgpOworfQorCitBVk1lZGlhU291cmNlUHJldmlldzo6QVZN
ZWRpYVNvdXJjZVByZXZpZXcoQVZNZWRpYUNhcHR1cmVTb3VyY2UqIHBhcmVudCkKKyAgICA6IG1f
cGFyZW50KHBhcmVudC0+Y3JlYXRlV2Vha1B0cigpKQoreworfQorCitBVk1lZGlhU291cmNlUHJl
dmlldzo6fkFWTWVkaWFTb3VyY2VQcmV2aWV3KCkKK3sKKyAgICBpZiAobV9wYXJlbnQpCisgICAg
ICAgIG1fcGFyZW50LT5yZW1vdmVQcmV2aWV3KHRoaXMpOworfQorCit2b2lkIEFWTWVkaWFTb3Vy
Y2VQcmV2aWV3OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3BhcmVudCA9IG51bGxwdHI7CisgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKTsKK30KKwogTlNBcnJheSog
c2Vzc2lvbktWT1Byb3BlcnRpZXMoKQogewogICAgIHN0YXRpYyBOU0FycmF5KiBrZXlzID0gW0Bb
QCJydW5uaW5nIl0gcmV0YWluXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShy
ZXZpc2lvbiAyMDg3MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIEFWVmlkZW9Tb3VyY2VQcmV2aWV3OwogCiBjbGFzcyBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZSA6IHB1YmxpYyBBVk1lZGlhQ2FwdHVyZVNvdXJjZSB7CiBwdWJsaWM6CkBAIC03
NywxNiArNzgsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NOZXdGcmFtZShSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+KTsKIAogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogCisgICAgUmVmUHRyPEFW
TWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVQcmV2aWV3KCkgZmluYWw7CiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGN1cnJlbnRGcmFtZUNHSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGN1
cnJlbnRGcmFtZUltYWdlKCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fcGVu
ZGluZ1ByZXNldDsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVmZmVyOwog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFnZTsKKwogICAgIFZlY3RvcjxGbG9h
dDY0PiBtX3ZpZGVvRnJhbWVUaW1lU3RhbXBzOwotICAgIG11dGFibGUgUmV0YWluUHRyPFBsYXRm
b3JtTGF5ZXI+IG1fdmlkZW9QcmV2aWV3TGF5ZXI7CiAgICAgRmxvYXQ2NCBtX2ZyYW1lUmF0ZSB7
IDAgfTsKICAgICBpbnQzMl90IG1fd2lkdGggeyAwIH07CiAgICAgaW50MzJfdCBtX2hlaWdodCB7
IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwODcz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbXBvcnQgIlJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VQ
cmV2aWV3LmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgpAQCAtOTAsNiArOTEsOTAgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNh
cHR1cgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFWVmlkZW9Tb3VyY2VQcmV2aWV3
OiBwdWJsaWMgQVZNZWRpYVNvdXJjZVByZXZpZXcgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQ
dHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZShBVkNhcHR1cmVTZXNzaW9uICosIEFWQ2Fw
dHVyZURldmljZVR5cGVkZWYgKiwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqKTsKKworcHJpdmF0ZToK
KyAgICBBVlZpZGVvU291cmNlUHJldmlldyhBVkNhcHR1cmVTZXNzaW9uICosIEFWQ2FwdHVyZURl
dmljZVR5cGVkZWYgKiwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqKTsKKworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIGZpbmFsOworCisgICAgdm9pZCBwbGF5KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBw
YXVzZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSkgY29uc3QgZmlu
YWwgeyB9OworICAgIHZvaWQgc2V0RW5hYmxlZChib29sKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmV2aWV3QmFja2dy
b3VuZExheWVyLmdldCgpOyB9CisgICAgCisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCkgY29uc3Q7
CisKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9QcmV2aWV3TGF5ZXJUeXBlPiBtX3ByZXZp
ZXdMYXllcjsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wcmV2aWV3QmFja2dyb3Vu
ZExheWVyOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VUeXBlZGVmPiBtX2RldmljZTsK
K307CisKK1JlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gQVZWaWRlb1NvdXJjZVByZXZpZXc6
OmNyZWF0ZShBVkNhcHR1cmVTZXNzaW9uICpzZXNzaW9uLCBBVkNhcHR1cmVEZXZpY2VUeXBlZGVm
KiBkZXZpY2UsIEFWVmlkZW9DYXB0dXJlU291cmNlKiBwYXJlbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBVlZpZGVvU291cmNlUHJldmlldyhzZXNzaW9uLCBkZXZpY2UsIHBhcmVudCkp
OworfQorCitBVlZpZGVvU291cmNlUHJldmlldzo6QVZWaWRlb1NvdXJjZVByZXZpZXcoQVZDYXB0
dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZSogcGFyZW50KQorICAgIDogQVZNZWRpYVNvdXJjZVByZXZpZXcocGFy
ZW50KQoreworICAgIG1fZGV2aWNlID0gZGV2aWNlOworICAgIG1fcHJldmlld0xheWVyID0gYWRv
cHROUyhbYWxsb2NBVkNhcHR1cmVWaWRlb1ByZXZpZXdMYXllckluc3RhbmNlKCkgaW5pdFdpdGhT
ZXNzaW9uOnNlc3Npb25dKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0
KCkubmFtZSA9IEAiQVZWaWRlb0NhcHR1cmVTb3VyY2UgcHJldmlldyBsYXllciI7CisjZW5kaWYK
KworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmNvbnRlbnRzR3Jhdml0eSA9IGtDQUdyYXZpdHlS
ZXNpemU7CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVy
bzsKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIG1fcHJldmlld0xheWVyLmdldCgpLmF1dG9yZXNp
emluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVySGVpZ2h0U2l6YWJsZTsK
KyNlbmRpZgorCisgICAgbV9wcmV2aWV3QmFja2dyb3VuZExheWVyID0gYWRvcHROUyhbW0NBTGF5
ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkubmFt
ZSA9IEAiQVZWaWRlb1NvdXJjZVByZXZpZXcgcGFyZW50IGxheWVyIjsKKyAgICBtX3ByZXZpZXdC
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuY29udGVudHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZUFz
cGVjdDsKKyAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSBD
R1BvaW50WmVybzsKKyAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkubmVlZHNEaXNw
bGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBtX3ByZXZp
ZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhT
aXphYmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlOworI2VuZGlmCisKKyAgICBbbV9wcmV2aWV3
QmFja2dyb3VuZExheWVyIGFkZFN1YmxheWVyOm1fcHJldmlld0xheWVyLmdldCgpXTsKK30KKwor
dm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9wcmV2aWV3
TGF5ZXIgPSBudWxscHRyOworICAgIG1fcHJldmlld0JhY2tncm91bmRMYXllciA9IG51bGxwdHI7
CisgICAgbV9kZXZpY2UgPSBudWxscHRyOworICAgIEFWTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZh
bGlkYXRlKCk7Cit9CisKK3ZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OnBsYXkoKSBjb25zdAor
eworICAgIHNldFBhdXNlZChmYWxzZSk7Cit9CisKK3ZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6
OnBhdXNlKCkgY29uc3QKK3sKKyAgICBzZXRQYXVzZWQodHJ1ZSk7Cit9CisKK3ZvaWQgQVZWaWRl
b1NvdXJjZVByZXZpZXc6OnNldFBhdXNlZChib29sIHBhdXNlZCkgY29uc3QKK3sKKyAgICBbbV9k
ZXZpY2UgbG9ja0ZvckNvbmZpZ3VyYXRpb246bmlsXTsKKyAgICBtX3ByZXZpZXdMYXllci5nZXQo
KS5jb25uZWN0aW9uLmVuYWJsZWQgPSAhcGF1c2VkOworICAgIFttX2RldmljZSB1bmxvY2tGb3JD
b25maWd1cmF0aW9uXTsKK30KKwordm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6c2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuaGlkZGVuID0gIWVu
YWJsZWQ7Cit9CisKIGNvbnN0IE9TVHlwZSB2aWRlb0NhcHR1cmVGb3JtYXQgPSBrQ1ZQaXhlbEZv
cm1hdFR5cGVfMzJCR1JBOwogCiBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IEFWVmlkZW9D
YXB0dXJlU291cmNlOjpjcmVhdGUoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywg
U3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKQEAgLTIxNSw3ICszMDAsNyBAQCBib29sIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoY29uCiB7CiAgICAgTlNTdHJpbmcgKnByZXNldCA9
IGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7CiAgICAgaWYgKCFwcmVzZXQgfHwgIVtzZXNzaW9uKCkgY2FuU2V0U2Vzc2lvblBy
ZXNldDpwcmVzZXRdKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNl
OjphcHBseVNpemUlcCksIHVuYWJsZSBmaW5kIG9yIHNldCBwcmVzZXQgZm9yIHdpZHRoOiAlaSwg
aGVpZ2h0OiAlaSIsIHRoaXMsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoJXApLCB1bmFibGUg
ZmluZCBvciBzZXQgcHJlc2V0IGZvciB3aWR0aDogJWksIGhlaWdodDogJWkiLCB0aGlzLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC0zMTgsNyArNDAzLDYgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0
dXJlUwogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzaHV0ZG93bkNhcHR1cmVTZXNzaW9u
KCkKIHsKLSAgICBtX3ZpZGVvUHJldmlld0xheWVyID0gbnVsbHB0cjsKICAgICBtX2J1ZmZlciA9
IG51bGxwdHI7CiAgICAgbV9sYXN0SW1hZ2UgPSBudWxscHRyOwogICAgIG1fdmlkZW9GcmFtZVRp
bWVTdGFtcHMuY2xlYXIoKTsKQEAgLTM2NSwxMiArNDQ5LDE0IEBAIHZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmEKICAgICBBU1NFUlQobmV3U2FtcGxlQnVmZmVyKTsKIAog
ICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxl
QXR0YWNobWVudHNBcnJheShuZXdTYW1wbGVCdWZmZXIsIHRydWUpOwotICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChhdHRhY2htZW50c0FycmF5KTsgKytpKSB7Ci0g
ICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0YWNobWVudHMgPSAoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzQXJyYXksIGkpOwot
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywga0NNU2FtcGxlQXR0YWNo
bWVudEtleV9EaXNwbGF5SW1tZWRpYXRlbHksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBpZiAoYXR0
YWNobWVudHNBcnJheSkgeworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5
R2V0Q291bnQoYXR0YWNobWVudHNBcnJheSk7ICsraSkgeworICAgICAgICAgICAgQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBhdHRhY2htZW50cyA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwgaSk7CisgICAgICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywga0NNU2FtcGxlQXR0YWNobWVudEtleV9EaXNw
bGF5SW1tZWRpYXRlbHksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICAgICAgfQogICAgIH0KIAotICAg
IG1fYnVmZmVyID0gbmV3U2FtcGxlQnVmZmVyOworICAgIG1fYnVmZmVyID0gYWRvcHRDRihuZXdT
YW1wbGVCdWZmZXIpOwogICAgIG1fbGFzdEltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgc2V0
dGluZ3NDaGFuZ2VkID0gZmFsc2U7CkBAIC00NTAsMTcgKzUzNiw5IEBAIHZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnBhaW50Q3VycmVudEYKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwg
cGFpbnRSZWN0LmhlaWdodCgpKSwgbV9sYXN0SW1hZ2UuZ2V0KCkpOwogfQogCi1QbGF0Zm9ybUxh
eWVyKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8
QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3
KCkKIHsKLSAgICBpZiAobV92aWRlb1ByZXZpZXdMYXllcikKLSAgICAgICAgcmV0dXJuIG1fdmlk
ZW9QcmV2aWV3TGF5ZXIuZ2V0KCk7Ci0KLSAgICBtX3ZpZGVvUHJldmlld0xheWVyID0gYWRvcHRO
UyhbYWxsb2NBVkNhcHR1cmVWaWRlb1ByZXZpZXdMYXllckluc3RhbmNlKCkgaW5pdFdpdGhTZXNz
aW9uOnNlc3Npb24oKV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBtX3ZpZGVvUHJldmlld0xheWVy
LmdldCgpLm5hbWUgPSBAIkFWVmlkZW9DYXB0dXJlU291cmNlIHByZXZpZXcgbGF5ZXIiOwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gbV92aWRlb1ByZXZpZXdMYXllci5nZXQoKTsKKyAgICByZXR1cm4g
QVZWaWRlb1NvdXJjZVByZXZpZXc6OmNyZWF0ZShzZXNzaW9uKCksIGRldmljZSgpLCB0aGlzKTsK
IH0KIAogTlNTdHJpbmcgKkFWVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNldEZv
clZpZGVvRGltZW5zaW9ucyhPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdo
dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCShy
ZXZpc2lvbiAyMDg3MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCAr
NTQsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQ01TYW1w
bGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAgICAgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZikgY29u
c3Q7CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVQbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2FtcGxl
QnVmZmVyKCkgb3ZlcnJpZGU7CiAKICAgICBtdXRhYmxlIFJldGFpblB0cjxDR0ltYWdlUmVmPiBt
X3ByZXZpZXdJbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMubW0JKHJldmlzaW9uIDIwODczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDQ5ICsxMjAsNiBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTW9ja1JlYWx0
aW1lCiAgICAgcmV0dXJuIGFkb3B0Q0YocGl4ZWxCdWZmZXIpOwogfQogCi1QbGF0Zm9ybUxheWVy
KiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fcHJldmlld0xheWVyKQotICAgICAgICByZXR1cm4gbV9wcmV2aWV3TGF5ZXIuZ2V0
KCk7Ci0KLSAgICBtX3ByZXZpZXdMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0
XSk7Ci0gICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkubmFtZSA9IEAiTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMgcHJldmlldyBsYXllciI7Ci0gICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVu
dHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBtX3ByZXZpZXdMYXllci5n
ZXQoKS5hbmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwotICAgIG1fcHJldmlld0xheWVyLmdldCgp
Lm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOwotI2lmICFQTEFURk9STShJT1MpCi0g
ICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhT
aXphYmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlOwotI2VuZGlmCi0KLSAgICB1cGRhdGVQbGF0
Zm9ybUxheWVyKCk7Ci0KLSAgICByZXR1cm4gbV9wcmV2aWV3TGF5ZXIuZ2V0KCk7Ci19Ci0KLXZv
aWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25z
dAotewotICAgIGlmICghbV9wcmV2aWV3TGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFtD
QVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJh
dGlvbjowXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotCi0g
ICAgZG8gewotICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXIoKS0+Y29w
eUltYWdlKCk7Ci0gICAgICAgIGlmICghaW1hZ2UpCi0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBtX3ByZXZpZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgICAgICBpZiAo
IW1fcHJldmlld0ltYWdlKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgbV9wcmV2aWV3
TGF5ZXIuZ2V0KCkuY29udGVudHMgPSAoTlNPYmplY3QqKShtX3ByZXZpZXdJbWFnZS5nZXQoKSk7
Ci0gICAgfSB3aGlsZSAoMCk7Ci0KLSAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwotfQotCiB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIoKQogewog
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21DR0ltYWdlKGltYWdlQnVmZmVy
KCktPmNvcHlJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCShyZXZpc2lvbiAyMDg3MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw2
IEBAIGJvb2wgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5RnJhbWUKICAgICBpZiAobV90
aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHMobHJvdW5kKDEwMDAgLyByYXRlKSkpOwogCi0gICAgdXBkYXRlUGxh
dGZvcm1MYXllcigpOwogICAgIHVwZGF0ZVNhbXBsZUJ1ZmZlcigpOwogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMTY4LDcgKzE2Nyw2IEBAIGJvb2wgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmFw
cGx5U2l6ZSgKICAgICBtX3N0YXRzRm9udC51cGRhdGUobnVsbHB0cik7CiAKICAgICBtX2ltYWdl
QnVmZmVyID0gbnVsbHB0cjsKLSAgICB1cGRhdGVQbGF0Zm9ybUxheWVyKCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTMzOSw3ICszMzcsNiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpnZW5lcmF0ZUZyCiAgICAgZHJhd0FuaW1hdGlvbihjb250ZXh0KTsKICAgICBkcmF3Qm94
ZXMoY29udGV4dCk7CiAKLSAgICB1cGRhdGVQbGF0Zm9ybUxheWVyKCk7CiAgICAgdXBkYXRlU2Ft
cGxlQnVmZmVyKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHJldmlzaW9uIDIwODczMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTYW1wbGVCdWZmZXIoKSB7IH0KIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpIGNv
bnN0OwpAQCAtNzcsNyArNzYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgYXBwbHlGYWNpbmdNb2Rl
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKSBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBhcHBseUFzcGVjdFJhdGlvKGRvdWJsZSkgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBSZWZQdHI8SW1hZ2U+IGN1
cnJlbnRGcmFtZUltYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>