<?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>176428</bug_id>
          
          <creation_ts>2017-09-05 15:55:33 -0700</creation_ts>
          <short_desc>Add WKUIDelegatePrivate equivalent of WKPageUIClient&apos;s mouseDidMoveOverElement</short_desc>
          <delta_ts>2017-09-27 13:04:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345682</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 15:55:33 -0700</bug_when>
    <thetext>Add WKUIDelegatePrivate equivalent of WKPageUIClient&apos;s mouseDidMoveOverElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345684</commentid>
    <comment_count>1</comment_count>
      <attachid>319946</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 15:58:32 -0700</bug_when>
    <thetext>Created attachment 319946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345704</commentid>
    <comment_count>2</comment_count>
      <attachid>319952</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 16:32:23 -0700</bug_when>
    <thetext>Created attachment 319952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345706</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-05 16:33:48 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345728</commentid>
    <comment_count>4</comment_count>
      <attachid>319962</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 17:14:09 -0700</bug_when>
    <thetext>Created attachment 319962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345746</commentid>
    <comment_count>5</comment_count>
      <attachid>319962</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-05 18:23:41 -0700</bug_when>
    <thetext>Comment on attachment 319962
Patch

Clearing flags on attachment: 319962

Committed r221658: &lt;http://trac.webkit.org/changeset/221658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345747</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-05 18:23:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353791</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 13:04:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694593&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319946</attachid>
            <date>2017-09-05 15:58:32 -0700</date>
            <delta_ts>2017-09-05 16:32:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176428-20170905155832.patch</filename>
            <type>text/plain</type>
            <size>28042</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE2MzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE3LTA5LTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzY0MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjcwMDM1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2Ugc2Nyb2xsIGV2ZW50cywg
dGVzdGluZyBtb3VzZSBtb3Rpb24gZXZlbnRzIGZyb20gYW4gQVBJIHRlc3QgaXMgcXVpdGUgcHJv
YmxlbWF0aWMuCisgICAgICAgIEZpcnN0IG9mIGFsbCwgTlNXaW5kb3cuYWNjZXB0c01vdXNlTW92
ZWRFdmVudHMgZGVmYXVsdHMgdG8gZmFsc2UuICBUaGlzIGlzIG5vIGJpZyBkZWFsLCBidXQgdGhl
CisgICAgICAgIG5vbmRldGVybWluaXN0aWMgaGFuZGxpbmcgb2Ygc3VjaCBldmVudHMgbWFrZSBh
dXRvbWF0ZWQgdGVzdGluZyB1bmZvcnR1bmF0ZWx5IGltcHJhY3RpY2FsLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlVJRGVsZWdhdGU6OkNvbnRleHRNZW51Q2xpZW50OjptZW51RnJvbVByb3Bvc2Vk
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQ
YWdlQ29tbW9uKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkph
dmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp0YWtlRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpVSUNsaWVudDo6Zm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpV
SUNsaWVudDo6dW5mb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKToKKyAg
ICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZE5vdEhhbmRsZVdoZWVsRXZl
bnQpOgorICAgICAgICAoV2ViS2l0Ojp0b05TRXZlbnRNb2RpZmllckZsYWdzKToKKyAgICAgICAg
KFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToK
KyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRDbGlja0F1dG9G
aWxsQnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmhhbmRs
ZUF1dG9wbGF5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpyZXF1ZXN0VXNlck1lZGlhQXV0aG9y
aXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnByaW50RnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2xvc2UpOgorICAg
ICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEVudGVy
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRF
eGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
ZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6Omhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorCiAyMDE3LTA5LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBDYWNoZSBTdG9yYWdlIEVuZ2luZSBzaG91bGQgbm90IG1peCBkaWZmZXJlbnQg
b3JpZ2luIGNhY2hlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyMjE2MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTgwLDEzICszOTgwLDEzIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFMKICAgICBtX3VpQ2xpZW50LT5zZXRTdGF0
dXNUZXh0KHRoaXMsIHRleHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRh
LCB1aW50MzJfdCBvcGFxdWVNb2RpZmllcnMsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3Zv
aWQgV2ViUGFnZVByb3h5Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJIaXRUZXN0UmVzdWx0
RGF0YSYmIGhpdFRlc3RSZXN1bHREYXRhLCB1aW50MzJfdCBvcGFxdWVNb2RpZmllcnMsIFVzZXJE
YXRhJiYgdXNlckRhdGEpCiB7CiAgICAgbV9sYXN0TW91c2VNb3ZlSGl0VGVzdFJlc3VsdCA9IEFQ
STo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKIAogICAgIFdlYkV2
ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzID0gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVy
cz4ob3BhcXVlTW9kaWZpZXJzKTsKIAotICAgIG1fdWlDbGllbnQtPm1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KHRoaXMsIGhpdFRlc3RSZXN1bHREYXRhLCBtb2RpZmllcnMsIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1f
dWlDbGllbnQtPm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KCp0aGlzLCBoaXRUZXN0UmVzdWx0RGF0
YSwgbW9kaWZpZXJzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbm5lY3Rpb25X
aWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIxNTAzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOTYsNyArMTI5
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5
ZWRSZXBseT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0
UHJvbXB0OjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHNldFN0YXR1c1RleHQoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBXZWJIaXRUZXN0
UmVzdWx0RGF0YSYsIHVpbnQzMl90IG1vZGlmaWVycywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2
b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYkhpdFRlc3RSZXN1bHREYXRhJiYsIHVpbnQz
Ml90IG1vZGlmaWVycywgVXNlckRhdGEmJik7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBv
cGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2VV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTFN0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAkocmV2aXNpb24gMjIxNjIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0
KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgV2ViS2l0OjpXZWJFdmVudDo6TW9k
aWZpZXJzLCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhJiwgV2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXJzLCBPYmplY3QqKSB7IH0KICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2aXJ0dWFsIHZvaWQgdW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV0tQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiwgRGljdGlvbmFyeSYpIHsgfQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCShyZXZpc2lvbiAyMjE2MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcwLDcgKzE3NzAsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICBtX2NsaWVudC5zZXRT
dGF0dXNUZXh0KHRvQVBJKHBhZ2UpLCB0b0FQSSh0ZXh0LmltcGwoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGRh
dGEsIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBkYXRhLCBXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQubW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQgJiYgIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjApCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc3OSwxMiArMTc3OSwx
MiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmJhc2UudmVyc2lvbikg
ewotICAgICAgICAgICAgICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2Ns
aWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJ
KCZwYWdlKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9
IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGRhdGEpOwotICAgICAgICAgICAgbV9jbGllbnQu
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKHdlYkhpdFRlc3RSZXN1
bHQuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBhdXRvIGFwaUhpdFRlc3RSZXN1bHQgPSBBUEk6
OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIG1fY2xpZW50Lm1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKCZwYWdlKSwgdG9BUEkoYXBpSGl0VGVzdFJlc3VsdC5w
dHIoKSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDIyMTYyMSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1OCw2ICsxNTgsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZv
OihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0VG9v
bGJhcnNBcmVWaXNpYmxlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2F2ZURhdGFUb0ZpbGU6KE5TRGF0YSAq
KWRhdGEgc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgbWlt
ZVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUgb3JpZ2luYXRpbmdVUkw6KE5TVVJMICopdXJsIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYnZpZXcgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KF9XS0hpdFRlc3RSZXN1
bHQgKiloaXRUZXN0UmVzdWx0IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVyRmxhZ3MpZmxhZ3Mg
dXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm87CiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hp
bGVJbkZvcmVncm91bmQ6KF9XS1Jlc291cmNlTGltaXQpbGltaXQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyB1bmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNsaWNrZWRXaXRoUmVhc29uOihfV0tQbHVnSW5VbmF2
YWlsYWJpbGl0eVJlYXNvbilyZWFzb24gcGx1Z0luSW5mbzooTlNEaWN0aW9uYXJ5ICopcGx1Z0lu
SW5mbzsKIC0gKE5TTWVudSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbnRleHRN
ZW51OihOU01lbnUgKiltZW51IGZvckVsZW1lbnQ6KF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8g
KillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMjE2MjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZE5vdEhhbmRs
ZVdoZWVsRXZlbnQoV2ViUGFnZVByb3h5KiwgY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIGZp
bmFsOwogICAgICAgICB2b2lkIGhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2Vi
Q29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFn
cz4pIGZpbmFsOwogICAgICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIEFQSTo6
RGljdGlvbmFyeSYpIGZpbmFsOworICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgV2ViRXZlbnQ6Ok1v
ZGlmaWVycywgQVBJOjpPYmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0
dG9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9v
bGJhcnNBcmVWaXNpYmxlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29s
KT4mJikgZmluYWw7CiAgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok9w
ZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgZmlu
YWw7CkBAIC0xNTUsNiArMTU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3SGFu
ZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1VuYXZh
aWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZENs
aWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm8gOiAxOworICAgICAgICBib29sIHdlYlZpZXdN
b3VzZURpZE1vdmVPdmVyRWxlbWVudFdpdGhGbGFnc1VzZXJJbmZvIDogMTsKICAgICAgICAgYm9v
bCB3ZWJWaWV3R2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0aENvbXBsZXRpb25IYW5kbGVyIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGls
ZUluRm9yZWdyb3VuZCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1NhdmVEYXRhVG9GaWxlU3Vn
Z2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMIDogMTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjIxNjIxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIkFQ
SUZyYW1lSW5mby5oIgorI2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTmF0aXZlV2ViV2hlZWxFdmVu
dC5oIgogI2ltcG9ydCAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLQ29udGV4dE1lbnVFbGVt
ZW50SW5mby5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgorI2ltcG9ydCAi
X1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgpAQCAtMTEyLDYgKzExNCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQg
PFdLVUlEZWwKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5C
dXR0b25DbGlja2VkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6dW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkV2l0aFJlYXNvbjpwbHVnSW5JbmZv
OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0
aEZsYWdzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6
aGFuZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxhZ3M6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm8gPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRDbGlja0F1dG9GaWxsQnV0dG9u
V2l0aFVzZXJJbmZvOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdNb3VzZURpZE1v
dmVPdmVyRWxlbWVudFdpdGhGbGFnc1VzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6d2l0aEZsYWdz
OnVzZXJJbmZvOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRFeGNlZWRCYWNr
Z3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzYXZlRGF0YVRv
RmlsZTpzdWdnZXN0ZWRGaWxlbmFtZTptaW1lVHlwZTpvcmlnaW5hdGluZ1VSTDopXTsKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0
ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CkBAIC0xNjAsNyArMTYzLDcgQEAgVUlEZWxlZ2F0
ZTo6Q29udGV4dE1lbnVDbGllbnQ6On5Db250ZXh0TQogewogfQogCi1SZXRhaW5QdHI8TlNNZW51
PiBVSURlbGVnYXRlOjpDb250ZXh0TWVudUNsaWVudDo6bWVudUZyb21Qcm9wb3NlZE1lbnUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBOU01lbnUgKm1lbnUsIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVz
dFJlc3VsdERhdGEmLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCitSZXRhaW5QdHI8TlNNZW51PiBV
SURlbGVnYXRlOjpDb250ZXh0TWVudUNsaWVudDo6bWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFn
ZVByb3h5JiwgTlNNZW51ICptZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6
T2JqZWN0KiB1c2VySW5mbykKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3Q29udGV4dE1lbnVGb3JFbGVtZW50ICYmICFtX3VpRGVsZWdhdGUubV9kZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0NvbnRleHRNZW51Rm9yRWxlbWVudFVzZXJJbmZvKQogICAgICAg
ICByZXR1cm4gbWVudTsKQEAgLTE4Nyw3ICsxOTAsNyBAQCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
flVJQ2xpZW50KCkKIHsKIH0KIAotUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBVSURlbGVn
YXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbihXZWJLaXQ6OldlYlBhZ2VQcm94eSog
cGFnZSwgQVBJOjpGcmFtZUluZm8mIHNvdXJjZUZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIHdpbmRvd0Zl
YXR1cmVzLCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorUmVmUHRyPFdlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmNyZWF0ZU5ld1BhZ2VDb21tb24oV2ViUGFnZVByb3h5KiBwYWdlLCBBUEk6OkZyYW1l
SW5mbyYgc291cmNlRnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdURjo6RnVuY3Rpb248dm9pZChS
ZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CiAgICAgQVNTRVJUKGRl
bGVnYXRlKTsKQEAgLTI2Myw3ICsyNjYsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpj
cmVhdGVOZXdQYWdlCiAgICAgY3JlYXRlTmV3UGFnZUNvbW1vbihwYWdlLCBvcmlnaW5hdGluZ0Zy
YW1lSW5mbywgV1RGTW92ZShyZXF1ZXN0KSwgd2luZG93RmVhdHVyZXMsIFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
IHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSos
IGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdp
dGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yODUsNyArMjg4LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiB3ZWJG
cmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luRGF0YSwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkq
LCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94
eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFt
X3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zMDcsNyArMzEwLDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0pLmdldCgpXTsKIH0KIAot
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZGVmYXVsdFZhbHVlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5j
dGlvbjx2b2lkIChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkq
LCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRW
YWx1ZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV1RG
OjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0
aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0cmluZygpKTsKQEAgLTMzNCw3ICszMzcsNyBAQCBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVVCiAgICAgcmV0dXJuIG1fdWlE
ZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXI7CiB9CiAKLXZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2Vi
RnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld1J1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFt
ZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
QEAgLTM5Niw3ICszOTksNyBAQCBzdGF0aWMgaW5saW5lIF9XS0ZvY3VzRGlyZWN0aW9uIHRvV0tG
b2N1CiAgICAgcmV0dXJuIF9XS0ZvY3VzRGlyZWN0aW9uRm9yd2FyZDsKIH0KIAotdm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6dGFrZUZvY3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp0YWtlRm9j
dXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYg
KCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Rha2VGb2N1cykKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA4LDcgKzQxMSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnRha2VGb2N1cyhXZWIKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBf
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHRha2VGb2N1czp0b1dLRm9jdXNEaXJlY3Rp
b24oZGlyZWN0aW9uKV07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZvY3VzKFdl
YktpdDo6V2ViUGFnZVByb3h5KikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZvY3VzKFdl
YlBhZ2VQcm94eSopCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMu
Zm9jdXNXZWJWaWV3KQogICAgICAgICByZXR1cm47CkBAIC00MjAsNyArNDIzLDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6Zm9jdXMoV2ViS2l0OgogICAgIFsoaWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+KWRlbGVnYXRlIF9mb2N1c1dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107
CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnVuZm9jdXMoV2ViS2l0OjpXZWJQYWdl
UHJveHkqKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6dW5mb2N1cyhXZWJQYWdlUHJveHkq
KQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLnVuZm9jdXNXZWJW
aWV3KQogICAgICAgICByZXR1cm47CkBAIC00NzAsNyArNDczLDcgQEAgc3RhdGljIF9XS1Jlc291
cmNlTGltaXQgdG9XS1Jlc291cmNlTGltaQogICAgIHJldHVybiBfV0tSZXNvdXJjZUxpbWl0TWVt
b3J5OwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRFeGNlZWRCYWNrZ3JvdW5k
UmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV0tS
ZXNvdXJjZUxpbWl0IGxpbWl0KQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkRXhjZWVk
QmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZChXZWJQYWdlUHJveHkmLCBX
S1Jlc291cmNlTGltaXQgbGltaXQpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Miw3ICs0ODUsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpkaWRFeGNlZWRCYWNrCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDp0b1dL
UmVzb3VyY2VMaW1pdChsaW1pdCldOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
aWROb3RIYW5kbGVXaGVlbEV2ZW50KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViS2l0
OjpOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmRpZE5vdEhhbmRsZVdoZWVsRXZlbnQoV2ViUGFnZVByb3h5KiwgY29uc3QgTmF0aXZlV2ViV2hl
ZWxFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5
NCw2ICs0OTcsMzUgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkTm90SGFuZGxlVwog
ICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxl
Z2F0ZS5tX3dlYlZpZXcgZGlkTm90SGFuZGxlV2hlZWxFdmVudDpldmVudC5uYXRpdmVFdmVudCgp
XTsKIH0KIAorc3RhdGljIE5TRXZlbnRNb2RpZmllckZsYWdzIHRvTlNFdmVudE1vZGlmaWVyRmxh
Z3MoV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMpCit7CisgICAgTlNFdmVudE1vZGlmaWVy
RmxhZ3MgZmxhZ3MgPSAwOworICAgIGlmIChtb2RpZmllcnMgJiBXZWJFdmVudDo6U2hpZnRLZXkp
CisgICAgICAgIGZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyAgICBpZiAobW9k
aWZpZXJzICYgV2ViRXZlbnQ6OkNvbnRyb2xLZXkpCisgICAgICAgIGZsYWdzIHw9IE5TRXZlbnRN
b2RpZmllckZsYWdDb250cm9sOworICAgIGlmIChtb2RpZmllcnMgJiBXZWJFdmVudDo6QWx0S2V5
KQorICAgICAgICBmbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9uOworICAgIGlmICht
b2RpZmllcnMgJiBXZWJFdmVudDo6TWV0YUtleSkKKyAgICAgICAgZmxhZ3MgfD0gTlNFdmVudE1v
ZGlmaWVyRmxhZ0NvbW1hbmQ7CisgICAgaWYgKG1vZGlmaWVycyAmIFdlYkV2ZW50OjpDYXBzTG9j
a0tleSkKKyAgICAgICAgZmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ0NhcHNMb2NrOworICAg
IHJldHVybiBmbGFnczsKK30KKwordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6bW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEm
IGRhdGEsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBBUEk6Ok9iamVjdCogdXNlcklu
Zm8pCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld01v
dXNlRGlkTW92ZU92ZXJFbGVtZW50V2l0aEZsYWdzVXNlckluZm8pCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGFwaUhpdFRlc3RS
ZXN1bHQgPSBBUEk6OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShkYXRhKTsKKyAgICBbKGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OndyYXBwZXIoYXBpSGl0VGVzdFJlc3VsdC5nZXQoKSkg
d2l0aEZsYWdzOnRvTlNFdmVudE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSB1c2VySW5mbzp1c2Vy
SW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53cmFwcGVy
KCkpIDogbmlsXTsKK30KKwogc3RhdGljIF9XS0F1dG9wbGF5RXZlbnRGbGFncyB0b1dLQXV0b3Bs
YXlFdmVudEZsYWdzKE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdz
KQogewogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFncyB3a0ZsYWdzID0gX1dLQXV0b3BsYXlFdmVu
dEZsYWdzTm9uZTsKQEAgLTUxOSw3ICs1NTEsNyBAQCBzdGF0aWMgX1dLQXV0b3BsYXlFdmVudCB0
b1dLQXV0b3BsYXlFdmVuCiAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFQ
cmV2ZW50ZWRGcm9tQXV0b3BsYXlpbmc7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnRvb2xiYXJzQXJlVmlzaWJsZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp0
b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3R2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0aENvbXBsZXRpb25IYW5kbGVyKQog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CkBAIC01NDUsMTAgKzU3Nywx
MCBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRDbGlja0F1dG9GCiAgICAgaWYgKCFk
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgZGlkQ2xpY2tB
dXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzp1c2VySW5mbyA/c3RhdGljX2Nhc3Q8aWQgPE5TU2Vj
dXJlQ29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOworICAgIFsoaWQgPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzp1c2VySW5mbyA/IHN0YXRpY19jYXN0
PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53cmFwcGVyKCkpIDogbmlsXTsKIH0KICAg
ICAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8
V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudCBldmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4gZmxh
Z3MpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hh
bmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MpCiAgICAgICAgIHJldHVybjsKQEAgLTYxOSw3ICs2
NTEsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiB9CiAjZW5k
aWYKIAotc3RhdGljIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2Vz
KGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCwgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IGRl
bGVnYXRlLCBXS1dlYlZpZXcmIHdlYlZpZXcpCitzdGF0aWMgdm9pZCByZXF1ZXN0VXNlck1lZGlh
QXV0aG9yaXphdGlvbkZvckRldmljZXMoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QsIGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPiBkZWxlZ2F0ZSwgV0tXZWJWaWV3JiB3ZWJWaWV3KQogewogICAgIGF1dG8gZGVjaXNpb25I
YW5kbGVyID0gQmxvY2tQdHI8dm9pZChCT09MKT46OmZyb21DYWxsYWJsZShbcHJvdGVjdGVkUmVx
dWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICBpZiAo
IWF1dGhvcml6ZWQpIHsKQEAgLTY0NSw3ICs2NzcsNyBAQCBzdGF0aWMgdm9pZCByZXF1ZXN0VXNl
ck1lZGlhQXV0aG9yaXphdGlvCiAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnByb3RlY3RlZFdlYlZp
ZXcuZ2V0KCkgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzOmRldmljZXMg
dXJsOnJlcXVlc3RGcmFtZVVSTCBtYWluRnJhbWVVUkw6bWFpbkZyYW1lVVJMIGRlY2lzaW9uSGFu
ZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwogfQogCi1ib29sIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1
cml0eU9yaWdpbiYgdXNlck1lZGlhT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bE9yaWdpbiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0
KQorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
QVBJOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVz
dCkKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7
CiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdSZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXNVUkxNYWluRnJhbWVV
UkxEZWNpc2lvbkhhbmRsZXIpIHsKQEAgLTcyMSw3ICs3NTMsNyBAQCBib29sIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJ
OjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0
b3BMZXZlbE9yaWdpbiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYgcmVx
dWVzdCkKK2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvck9yaWdpbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRv
cExldmVsT3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYgcmVxdWVzdCkKIHsK
ICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CiAgICAg
aWYgKCFkZWxlZ2F0ZSB8fCAhbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdD
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkxNYWluRnJhbWVVUkxGcmFtZUlkZW50aWZpZXJE
ZWNpc2lvbkhhbmRsZXIpIHsKQEAgLTc4Nyw3ICs4MTksNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpyZWFjaGVkQXBwbGljCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpwcmludEZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5KQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cHJpbnRGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5KQog
ewogICAgIEFTU0VSVF9BUkcod2ViRnJhbWVQcm94eSwgd2ViRnJhbWVQcm94eSk7CiAKQEAgLTgw
MSw3ICs4MzMsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpwcmludEZyYW1lKFdlCiAg
ICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVn
YXRlLm1fd2ViVmlldyBwcmludEZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRl
KHdlYkZyYW1lUHJveHktPmZyYW1lSUQoKSkpXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y2xvc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqKQordm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y2xvc2UoV2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAobV91aURlbGVnYXRlLm1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdDbG9zZSkgewogICAgICAgICBhdXRvIGRlbGVnYXRlID0gbV91
aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CkBAIC04MjIsNyArODU0LDcgQEAgdm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6Y2xvc2UoV2ViS2l0OgogICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3RGlk
Q2xvc2U6bV91aURlbGVnYXRlLm1fd2ViVmlld107CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6OldlYlBhZ2VQcm94eSop
Cit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUo
V2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKQogICAgICAgICByZXR1cm47CkBA
IC04MzQsNyArODY2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZnVsbHNjcmVlbk1h
eQogICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3RnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lOm1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogCi12b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpXZWJQYWdl
UHJveHkqKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuKFdl
YlBhZ2VQcm94eSopCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZEVudGVyRnVsbHNjcmVlbikKICAgICAgICAgcmV0dXJuOwpAQCAtODQ2LDcgKzg3
OCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEVudGVyRnVsbHMKICAgICBbKGlk
IDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlld0RpZEVudGVyRnVsbHNjcmVl
bjptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGlkRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpXZWJQYWdlUHJveHkqKQordm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW4oV2ViUGFnZVByb3h5KikKIHsKICAgICBp
ZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhpdEZ1bGxzY3Jl
ZW4pCiAgICAgICAgIHJldHVybjsKQEAgLTkyNSw3ICs5NTcsNyBAQCBOU0RpY3Rpb25hcnkgKlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpkYXRhCiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogCi12
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2soV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2Nr
KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1JlcXVlc3RQb2ludGVyTG9jaykKICAgICAgICAgcmV0dXJuOwpAQCAtOTM3LDcg
Kzk2OSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJlcXVlc3RQb2ludGUKICAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXdS
ZXF1ZXN0UG9pbnRlckxvY2s6bV91aURlbGVnYXRlLm1fd2ViVmlld107CiB9CiAKLXZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZExvc2VQb2ludGVyTG9jayhXZWJLaXQ6OldlYlBhZ2VQcm94
eSopCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRMb3NlUG9pbnRlckxvY2soV2ViUGFn
ZVByb3h5KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RGlkTG9zZVBvaW50ZXJMb2NrKQogICAgICAgICByZXR1cm47CkBAIC05NTEsNyArOTgzLDcg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkTG9zZVBvaW50ZQogCiAjZW5kaWYKICAg
ICAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Omhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJl
RGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgYm9vbCBoYXNWaWRlb0luUGljdHVyZUlu
UGljdHVyZSkKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Omhhc1ZpZGVvSW5QaWN0dXJlSW5Q
aWN0dXJlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSosIGJvb2wgaGFzVmlkZW9JblBpY3R1cmVJblBp
Y3R1cmUpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0hhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319952</attachid>
            <date>2017-09-05 16:32:23 -0700</date>
            <delta_ts>2017-09-05 17:14:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176428-20170905163223.patch</filename>
            <type>text/plain</type>
            <size>28803</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE2MzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE3LTA5LTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzY0MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjcwMDM1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgTGlrZSBzY3JvbGwgZXZlbnRzLCB0ZXN0
aW5nIG1vdXNlIG1vdGlvbiBldmVudHMgZnJvbSBhbiBBUEkgdGVzdCBpcyBxdWl0ZSBwcm9ibGVt
YXRpYy4KKyAgICAgICAgRmlyc3Qgb2YgYWxsLCBOU1dpbmRvdy5hY2NlcHRzTW91c2VNb3ZlZEV2
ZW50cyBkZWZhdWx0cyB0byBmYWxzZS4gIFRoaXMgaXMgbm8gYmlnIGRlYWwsIGJ1dCB0aGUKKyAg
ICAgICAgbm9uZGV0ZXJtaW5pc3RpYyBoYW5kbGluZyBvZiBzdWNoIGV2ZW50cyBtYWtlIGF1dG9t
YXRlZCB0ZXN0aW5nIHVuZm9ydHVuYXRlbHkgaW1wcmFjdGljYWwuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6
CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06
CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6Q29udGV4dE1lbnVDbGllbnQ6Om1lbnVGcm9tUHJvcG9zZWRNZW51
KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2VD
b21tb24pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNj
cmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkph
dmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OlVJQ2xpZW50Ojpmb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50Ojp1bmZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRp
ZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkTm90SGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OnRvTlNFdmVudE1vZGlmaWVyRmxhZ3MpOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6dG9vbGJhcnNBcmVWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZENsaWNrQXV0b0ZpbGxC
dXR0b24pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6aGFuZGxlQXV0
b3BsYXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0
aW9uRm9yRGV2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmln
aW4pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cHJpbnRGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9Jbmxp
bmUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkRW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEV4aXRG
dWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJlcXVl
c3RQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
aWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisKIDIwMTctMDktMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIENhY2hlIFN0b3JhZ2UgRW5naW5lIHNob3VsZCBub3QgbWl4IGRpZmZlcmVudCBvcmln
aW4gY2FjaGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDIyMTYyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5ODAsMTMgKzM5ODAsMTMgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFN0YXR1c1RleHQoY29uc3QgUwogICAgIG1fdWlDbGllbnQtPnNldFN0YXR1c1Rl
eHQodGhpcywgdGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojptb3VzZURpZE1vdmVPdmVy
RWxlbWVudChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIHVp
bnQzMl90IG9wYXF1ZU1vZGlmaWVycywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYkhpdFRlc3RSZXN1bHREYXRh
JiYgaGl0VGVzdFJlc3VsdERhdGEsIHVpbnQzMl90IG9wYXF1ZU1vZGlmaWVycywgVXNlckRhdGEm
JiB1c2VyRGF0YSkKIHsKICAgICBtX2xhc3RNb3VzZU1vdmVIaXRUZXN0UmVzdWx0ID0gQVBJOjpI
aXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERhdGEpOwogCiAgICAgV2ViRXZlbnQ6
Ok1vZGlmaWVycyBtb2RpZmllcnMgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihv
cGFxdWVNb2RpZmllcnMpOwogCi0gICAgbV91aUNsaWVudC0+bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQodGhpcywgaGl0VGVzdFJlc3VsdERhdGEsIG1vZGlmaWVycywgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV91aUNs
aWVudC0+bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoKnRoaXMsIGhpdFRlc3RSZXN1bHREYXRhLCBt
b2RpZmllcnMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29ubmVjdGlvbldpbGxP
cGVuKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMjE1MDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5Niw3ICsxMjk2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJl
cGx5PiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9t
cHQ6OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFdlYkhpdFRlc3RSZXN1
bHREYXRhJiwgdWludDMyX3QgbW9kaWZpZXJzLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQg
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3Qg
bW9kaWZpZXJzLCBVc2VyRGF0YSYmKTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1
ZVBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJM
U3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CShyZXZpc2lvbiAyMjE2MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZCAoY29u
c3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihXVEY6OlN0cmluZygpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c1RleHQoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGEmLCBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmll
cnMsIE9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERh
dGEmLCBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnMsIE9iamVjdCopIHsgfQogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZpcnR1YWwgdm9pZCB1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXS1BsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uLCBEaWN0aW9uYXJ5JikgeyB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHJldmlzaW9uIDIyMTYyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzAsNyArMTc3MCw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAgIG1fY2xpZW50LnNldFN0YXR1
c1RleHQodG9BUEkocGFnZSksIHRvQVBJKHRleHQuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgZGF0YSwg
V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKSBmaW5hbAorICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGRhdGEsIFdlYktpdDo6V2Vi
RXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgZmluYWwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxl
bWVudCAmJiAhbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzc5LDEyICsxNzc5LDEyIEBA
IHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuYmFzZS52ZXJzaW9uKSB7Ci0g
ICAgICAgICAgICAgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCh0b0FQSShwYWdlKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50
Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBh
Z2UpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiB3ZWJIaXRUZXN0UmVzdWx0ID0gQVBJ
OjpIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZGF0YSk7Ci0gICAgICAgICAgICBtX2NsaWVudC5tb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5n
ZXQoKSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgIGF1dG8gYXBpSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0
VGVzdFJlc3VsdDo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgbV9jbGllbnQubW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQodG9BUEkoJnBhZ2UpLCB0b0FQSShhcGlIaXRUZXN0UmVzdWx0LnB0cigp
KSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gMjIxNjIxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU4LDYgKzE1OCw3IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KGlk
IDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBnZXRUb29sYmFy
c0FyZVZpc2libGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0
YSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlw
ZTooTlNTdHJpbmcgKiltaW1lVHlwZSBvcmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2VidmlldyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAq
KWhpdFRlc3RSZXN1bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2Vy
SW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUlu
Rm9yZWdyb3VuZDooX1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHVu
YXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZFdpdGhSZWFzb246KF9XS1BsdWdJblVuYXZhaWxh
YmlsaXR5UmVhc29uKXJlYXNvbiBwbHVnSW5JbmZvOihOU0RpY3Rpb25hcnkgKilwbHVnSW5JbmZv
OwogLSAoTlNNZW51ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4dE1lbnU6
KE5TTWVudSAqKW1lbnUgZm9yRWxlbWVudDooX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mbyAqKWVs
ZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAJKHJldmlz
aW9uIDIyMTUwMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJ
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEJlZm9yZVVu
bG9hZENvbmZpcm0obV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSkpOwogICAgIH0KIAotICAgIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViSGl0VGVz
dFJlc3VsdERhdGEmIGRhdGEsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBBUEk6Ok9i
amVjdCopIG92ZXJyaWRlCisgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdl
UHJveHkmLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgZGF0YSwgV2ViRXZlbnQ6Ok1vZGlm
aWVycyBtb2RpZmllcnMsIEFQSTo6T2JqZWN0KikgZmluYWwKICAgICB7CiAgICAgICAgIHdlYmtp
dFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQobV93ZWJWaWV3LCBkYXRhLCBtb2RpZmllcnMpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJ
KHJldmlzaW9uIDIyMTYyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgZGlkTm90SGFuZGxlV2hlZWxFdmVudChXZWJQYWdlUHJveHkqLCBjb25zdCBOYXRp
dmVXZWJXaGVlbEV2ZW50JikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVu
dChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29y
ZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CiAgICAgICAgIHZvaWQgdW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV0tQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CisgICAgICAgIHZvaWQgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGVzdFJlc3Vs
dERhdGEmLCBXZWJFdmVudDo6TW9kaWZpZXJzLCBBUEk6Ok9iamVjdCopOwogICAgICAgICB2b2lk
IGRpZENsaWNrQXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5h
bDsKICAgICAgICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgYm9vbCBydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkqKSBmaW5hbDsKQEAgLTE1NSw2ICsxNTYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBib29sIHdlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbyA6IDE7Cisg
ICAgICAgIGJvb2wgd2ViVmlld01vdXNlRGlkTW92ZU92ZXJFbGVtZW50V2l0aEZsYWdzVXNlcklu
Zm8gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdHZXRUb29sYmFyc0FyZVZpc2libGVXaXRoQ29t
cGxldGlvbkhhbmRsZXIgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRFeGNlZWRCYWNrZ3Jv
dW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwg
OiAxOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CShyZXZpc2lvbiAyMjE2MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgV0tfQVBJX0VO
QUJMRUQKIAogI2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCisjaW1wb3J0ICJBUElIaXRUZXN0UmVz
dWx0LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0
ICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
IgpAQCAtNDgsNiArNDksNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0
ICJfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUlu
dGVybmFsLmgiCisjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCIKICNpbXBvcnQg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC0xMTIsNiArMTE0LDcgQEAgdm9pZCBVSURlbGVn
YXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbAogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdVbmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNsaWNrZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp1bmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNsaWNrZWRX
aXRoUmVhc29uOnBsdWdJbkluZm86KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hh
bmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpoYW5kbGVBdXRvcGxheUV2ZW50OndpdGhGbGFnczopXTsKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2Vy
SW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRp
ZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld01vdXNlRGlkTW92ZU92ZXJFbGVtZW50V2l0aEZsYWdzVXNlckluZm8gPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzptb3VzZURpZE1vdmVP
dmVyRWxlbWVudDp3aXRoRmxhZ3M6dXNlckluZm86KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRFeGNl
ZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOildOwogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5
cGVPcmlnaW5hdGluZ1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxlOnN1Z2dlc3RlZEZpbGVuYW1lOm1pbWVUeXBlOm9yaWdp
bmF0aW5nVVJMOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxX
aXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBh
cmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKQEAgLTE2MCw3
ICsxNjMsNyBAQCBVSURlbGVnYXRlOjpDb250ZXh0TWVudUNsaWVudDo6fkNvbnRleHRNCiB7CiB9
CiAKLVJldGFpblB0cjxOU01lbnU+IFVJRGVsZWdhdGU6OkNvbnRleHRNZW51Q2xpZW50OjptZW51
RnJvbVByb3Bvc2VkTWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5TTWVudSAqbWVudSwgY29u
c3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0KiB1c2VySW5mbykK
K1JldGFpblB0cjxOU01lbnU+IFVJRGVsZWdhdGU6OkNvbnRleHRNZW51Q2xpZW50OjptZW51RnJv
bVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkmLCBOU01lbnUgKm1lbnUsIGNvbnN0IFdlYkhpdFRl
c3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIHVzZXJJbmZvKQogewogICAgIGlmICghbV91aURl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdDb250ZXh0TWVudUZvckVsZW1lbnQgJiYg
IW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q29udGV4dE1lbnVGb3JFbGVt
ZW50VXNlckluZm8pCiAgICAgICAgIHJldHVybiBtZW51OwpAQCAtMTg3LDcgKzE5MCw3IEBAIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50Ojp+VUlDbGllbnQoKQogewogfQogCi1SZWZQdHI8V2ViS2l0OjpX
ZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlQ29tbW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5KiBwYWdlLCBBUEk6OkZyYW1lSW5mbyYgc291cmNlRnJhbWVJbmZv
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJLaXQ6
OldlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitSZWZQdHI8V2ViUGFnZVBy
b3h5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbihXZWJQYWdlUHJv
eHkqIHBhZ2UsIEFQSTo6RnJhbWVJbmZvJiBzb3VyY2VGcmFtZUluZm8sIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5k
b3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
V1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5n
ZXQoKTsKICAgICBBU1NFUlQoZGVsZWdhdGUpOwpAQCAtMjYzLDcgKzI2Niw3IEBAIHZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UKICAgICBjcmVhdGVOZXdQYWdlQ29tbW9u
KHBhZ2UsIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBXVEZNb3ZlKHJlcXVlc3QpLCB3aW5kb3dGZWF0
dXJlcywgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0
QWxlcnQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1l
UHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkph
dmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhh
bmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTI4NSw3ICsyODgsNyBA
QCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAgICAgfSkuZ2V0KCld
OwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRD
b25maXJtKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFt
ZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
UnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTMw
Nyw3ICszMTAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAg
ICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0
UHJvbXB0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBX
VEY6OlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVu
Y3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2Ny
aXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0RGVmYXVsdFRleHRJbml0aWF0ZWRCeUZyYW1lQ29t
cGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RyaW5nKCkpOwpA
QCAtMzM0LDcgKzMzNyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9y
ZVUKICAgICByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0
aW9uSGFuZGxlcjsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcm
IG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6
U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1l
c3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzk2LDcgKzM5OSw3IEBAIHN0YXRpYyBpbmxpbmUgX1dL
Rm9jdXNEaXJlY3Rpb24gdG9XS0ZvY3UKICAgICByZXR1cm4gX1dLRm9jdXNEaXJlY3Rpb25Gb3J3
YXJkOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp0YWtlRm9jdXMoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBXS0ZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnRha2VGb2N1cyhXZWJQYWdlUHJveHkqLCBXS0ZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3VGFrZUZvY3VzKQogICAgICAgICByZXR1cm47CkBAIC00MDgsNyArNDExLDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6dGFrZUZvY3VzKFdlYgogICAgIFsoaWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgdGFrZUZv
Y3VzOnRvV0tGb2N1c0RpcmVjdGlvbihkaXJlY3Rpb24pXTsKIH0KIAotdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6Zm9jdXMoV2ViS2l0OjpXZWJQYWdlUHJveHkqKQordm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6Zm9jdXMoV2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy5mb2N1c1dlYlZpZXcpCiAgICAgICAgIHJldHVybjsKQEAgLTQy
MCw3ICs0MjMsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpmb2N1cyhXZWJLaXQ6CiAg
ICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX2ZvY3VzV2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6dW5m
b2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp1
bmZvY3VzKFdlYlBhZ2VQcm94eSopCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMudW5mb2N1c1dlYlZpZXcpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3MCw3ICs0NzMs
NyBAQCBzdGF0aWMgX1dLUmVzb3VyY2VMaW1pdCB0b1dLUmVzb3VyY2VMaW1pCiAgICAgcmV0dXJu
IF9XS1Jlc291cmNlTGltaXRNZW1vcnk7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXS1Jlc291cmNlTGltaXQgbGltaXQpCit2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3Jv
dW5kKFdlYlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCBsaW1pdCkKIHsKICAgICBpZiAoIW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJl
c291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDgyLDcg
KzQ4NSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEV4Y2VlZEJhY2sKICAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6
bV91aURlbGVnYXRlLm1fd2ViVmlldyBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdo
aWxlSW5Gb3JlZ3JvdW5kOnRvV0tSZXNvdXJjZUxpbWl0KGxpbWl0KV07CiB9CiAKLXZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZE5vdEhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQordm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkTm90SGFuZGxlV2hlZWxFdmVudChXZWJQYWdlUHJveHkq
LCBjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkTm90SGFuZGxlV2hlZWxFdmVudCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDk0LDYgKzQ5NywzNSBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkaWROb3RIYW5kbGVXCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBkaWROb3RIYW5kbGVXaGVlbEV2ZW50
OmV2ZW50Lm5hdGl2ZUV2ZW50KCldOwogfQogCitzdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3Mg
dG9OU0V2ZW50TW9kaWZpZXJGbGFncyhXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycykKK3sK
KyAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBmbGFncyA9IDA7CisgICAgaWYgKG1vZGlmaWVycyAm
IFdlYkV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgZmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxh
Z1NoaWZ0OworICAgIGlmIChtb2RpZmllcnMgJiBXZWJFdmVudDo6Q29udHJvbEtleSkKKyAgICAg
ICAgZmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7CisgICAgaWYgKG1vZGlmaWVy
cyAmIFdlYkV2ZW50OjpBbHRLZXkpCisgICAgICAgIGZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZs
YWdPcHRpb247CisgICAgaWYgKG1vZGlmaWVycyAmIFdlYkV2ZW50OjpNZXRhS2V5KQorICAgICAg
ICBmbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKKyAgICBpZiAobW9kaWZpZXJz
ICYgV2ViRXZlbnQ6OkNhcHNMb2NrS2V5KQorICAgICAgICBmbGFncyB8PSBOU0V2ZW50TW9kaWZp
ZXJGbGFnQ2Fwc0xvY2s7CisgICAgcmV0dXJuIGZsYWdzOworfQorCit2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJIaXRUZXN0UmVzdWx0RGF0YSYgZGF0YSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMs
IEFQSTo6T2JqZWN0KiB1c2VySW5mbykKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRXaXRoRmxhZ3NVc2VySW5m
bykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gYXBpSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGRh
dGEpOworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6d3JhcHBlcihhcGlI
aXRUZXN0UmVzdWx0LmdldCgpKSB3aXRoRmxhZ3M6dG9OU0V2ZW50TW9kaWZpZXJGbGFncyhtb2Rp
ZmllcnMpIHVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJlQ29kaW5n
Pj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOworfQorCiBzdGF0aWMgX1dLQXV0b3BsYXlF
dmVudEZsYWdzIHRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9w
bGF5RXZlbnRGbGFncz4gZmxhZ3MpCiB7CiAgICAgX1dLQXV0b3BsYXlFdmVudEZsYWdzIHdrRmxh
Z3MgPSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NOb25lOwpAQCAtNTE5LDcgKzU1MSw3IEBAIHN0YXRp
YyBfV0tBdXRvcGxheUV2ZW50IHRvV0tBdXRvcGxheUV2ZW4KICAgICByZXR1cm4gX1dLQXV0b3Bs
YXlFdmVudERpZFBsYXlNZWRpYVByZXZlbnRlZEZyb21BdXRvcGxheWluZzsKIH0KIAotdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6dG9vbGJhcnNBcmVWaXNpYmxlKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlUHJveHkmLCBGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdHZXRUb29sYmFyc0FyZVZpc2libGVXaXRo
Q29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKQEAgLTU0NSwxMCArNTc3LDEwIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZENs
aWNrQXV0b0YKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
WyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRl
Lm1fd2ViVmlldyBkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvOnVzZXJJbmZvID9z
dGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3JhcHBlcigpKSA6IG5p
bF07CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvOnVz
ZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8tPndyYXBw
ZXIoKSkgOiBuaWxdOwogfQogICAgIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aGFuZGxl
QXV0b3BsYXlFdmVudChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5RXZl
bnQgZXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdzKQor
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJv
eHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPiBmbGFncykKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncykKICAgICAgICAg
cmV0dXJuOwpAQCAtNjE5LDcgKzY1MSw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bk9wZW5QYW5lbCgKIH0KICNlbmRpZgogCi1zdGF0aWMgdm9pZCByZXF1ZXN0VXNlck1lZGlhQXV0
aG9yaXphdGlvbkZvckRldmljZXMoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwg
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4gZGVsZWdhdGUsIFdLV2ViVmlldyYgd2ViVmlldykKK3N0YXRpYyB2
b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhjb25zdCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCwg
aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IGRlbGVnYXRlLCBXS1dlYlZpZXcmIHdlYlZpZXcpCiB7
CiAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKEJPT0wpPjo6ZnJvbUNh
bGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oQk9PTCBhdXRob3Jp
emVkKSB7CiAgICAgICAgIGlmICghYXV0aG9yaXplZCkgewpAQCAtNjQ1LDcgKzY3Nyw3IEBAIHN0
YXRpYyB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW8KICAgICBbZGVsZWdhdGUgX3dl
YlZpZXc6cHJvdGVjdGVkV2ViVmlldy5nZXQoKSByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlv
bkZvckRldmljZXM6ZGV2aWNlcyB1cmw6cmVxdWVzdEZyYW1lVVJMIG1haW5GcmFtZVVSTDptYWlu
RnJhbWVVUkwgZGVjaXNpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CiB9CiAKLWJv
b2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFPcmlnaW4sIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmIHJlcXVlc3QpCitib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFPcmlnaW4s
IEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5JiByZXF1ZXN0KQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFtX3VpRGVsZWdhdGUu
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9y
RGV2aWNlc1VSTE1haW5GcmFtZVVSTERlY2lzaW9uSGFuZGxlcikgewpAQCAtNzIxLDcgKzc1Myw3
IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUYKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFPcmlnaW4sIEFQ
STo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5JiByZXF1ZXN0KQorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hl
Y2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYU9yaWdpbiwgQVBJ
OjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5JiByZXF1ZXN0KQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFtX3VpRGVsZWdhdGUubV9kZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTE1haW5GcmFt
ZVVSTEZyYW1lSWRlbnRpZmllckRlY2lzaW9uSGFuZGxlcikgewpAQCAtNzg3LDcgKzgxOSw3IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJlYWNoZWRBcHBsaWMKICAgICB9KS5nZXQoKV07
CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnByaW50RnJhbWUoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHkpCit2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpwcmludEZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqIHdlYkZyYW1lUHJveHkpCiB7CiAgICAgQVNTRVJUX0FSRyh3ZWJGcmFtZVByb3h5LCB3ZWJG
cmFtZVByb3h5KTsKIApAQCAtODAxLDcgKzgzMyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnByaW50RnJhbWUoV2UKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0
ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHByaW50RnJhbWU6d3JhcHBlcihBUEk6
OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94eS0+ZnJhbWVJRCgpKSldOwogfQogCi12
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjbG9zZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopCit2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjbG9zZShXZWJQYWdlUHJveHkqKQogewogICAgIGlm
IChtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Nsb3NlKSB7CiAgICAgICAg
IGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKQEAgLTgyMiw3
ICs4NTQsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjbG9zZShXZWJLaXQ6CiAgICAg
W2RlbGVnYXRlIHdlYlZpZXdEaWRDbG9zZTptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KIAot
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdl
YktpdDo6V2ViUGFnZVByb3h5KikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZShXZWJQYWdlUHJveHkqKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUp
CiAgICAgICAgIHJldHVybjsKQEAgLTgzNCw3ICs4NjYsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpmdWxsc2NyZWVuTWF5CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3dlYlZpZXdGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU6bV91aURlbGVnYXRlLm1f
d2ViVmlld107CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEVudGVyRnVsbHNj
cmVlbihXZWJLaXQ6OldlYlBhZ2VQcm94eSopCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
aWRFbnRlckZ1bGxzY3JlZW4oV2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW50ZXJGdWxsc2NyZWVuKQogICAgICAgICBy
ZXR1cm47CkBAIC04NDYsNyArODc4LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlk
RW50ZXJGdWxscwogICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJW
aWV3RGlkRW50ZXJGdWxsc2NyZWVuOm1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogCi12b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRFeGl0RnVsbHNjcmVlbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSopCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRFeGl0RnVsbHNjcmVlbihXZWJQ
YWdlUHJveHkqKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEaWRFeGl0RnVsbHNjcmVlbikKICAgICAgICAgcmV0dXJuOwpAQCAtOTI1LDcgKzk1Nyw3
IEBAIE5TRGljdGlvbmFyeSAqVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRhdGEKIAogI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJlcXVlc3RQb2lu
dGVyTG9jayhXZWJLaXQ6OldlYlBhZ2VQcm94eSopCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpyZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdFBvaW50ZXJMb2NrKQogICAgICAg
ICByZXR1cm47CkBAIC05MzcsNyArOTY5LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cmVxdWVzdFBvaW50ZQogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+
KGRlbGVnYXRlKSBfd2ViVmlld1JlcXVlc3RQb2ludGVyTG9jazptX3VpRGVsZWdhdGUubV93ZWJW
aWV3XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkTG9zZVBvaW50ZXJMb2Nr
KFdlYktpdDo6V2ViUGFnZVByb3h5KikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZExv
c2VQb2ludGVyTG9jayhXZWJQYWdlUHJveHkqKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRMb3NlUG9pbnRlckxvY2spCiAgICAgICAgIHJldHVy
bjsKQEAgLTk1MSw3ICs5ODMsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRMb3Nl
UG9pbnRlCiAKICNlbmRpZgogICAgIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aGFzVmlk
ZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBib29s
IGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5KiwgYm9vbCBo
YXNWaWRlb0luUGljdHVyZUluUGljdHVyZSkKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3SGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2Up
CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319962</attachid>
            <date>2017-09-05 17:14:09 -0700</date>
            <delta_ts>2017-09-05 18:23:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176428-20170905171408.patch</filename>
            <type>text/plain</type>
            <size>32753</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE2MzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA5LTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzY0MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjcwMDM1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQ292ZXJlZCBieSBhIG5ldyBBUEkgdGVz
dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQ
STo6VUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpDb250ZXh0TWVudUNsaWVudDo6
bWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbik6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVn
YXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgor
ICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6dGFrZUZvY3VzKToKKyAgICAg
ICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZvY3VzKToKKyAgICAgICAgKFdlYktp
dDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnVuZm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpVSUNsaWVudDo6ZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUlu
Rm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRO
b3RIYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6dG9OU0V2ZW50TW9kaWZpZXJG
bGFncyk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojptb3VzZURpZE1v
dmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp0
b29sYmFyc0FyZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVz
dFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpwcmludEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZ1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRl
OjpVSUNsaWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVn
YXRlOjpVSUNsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5n
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAxNy0wOS0wNSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGUgU3RvcmFnZSBFbmdpbmUgc2hvdWxkIG5v
dCBtaXggZGlmZmVyZW50IG9yaWdpbiBjYWNoZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIxNjIxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk4MCwxMyArMzk4
MCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzVGV4dChjb25zdCBTCiAgICAgbV91
aUNsaWVudC0+c2V0U3RhdHVzVGV4dCh0aGlzLCB0ZXh0KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBo
aXRUZXN0UmVzdWx0RGF0YSwgdWludDMyX3Qgb3BhcXVlTW9kaWZpZXJzLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQo
V2ViSGl0VGVzdFJlc3VsdERhdGEmJiBoaXRUZXN0UmVzdWx0RGF0YSwgdWludDMyX3Qgb3BhcXVl
TW9kaWZpZXJzLCBVc2VyRGF0YSYmIHVzZXJEYXRhKQogewogICAgIG1fbGFzdE1vdXNlTW92ZUhp
dFRlc3RSZXN1bHQgPSBBUEk6OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0RGF0
YSk7CiAKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycyA9IHN0YXRpY19jYXN0PFdl
YkV2ZW50OjpNb2RpZmllcnM+KG9wYXF1ZU1vZGlmaWVycyk7CiAKLSAgICBtX3VpQ2xpZW50LT5t
b3VzZURpZE1vdmVPdmVyRWxlbWVudCh0aGlzLCBoaXRUZXN0UmVzdWx0RGF0YSwgbW9kaWZpZXJz
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKKyAgICBtX3VpQ2xpZW50LT5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCgqdGhpcywg
aGl0VGVzdFJlc3VsdERhdGEsIG1vZGlmaWVycywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyMTUwMykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjk2LDcgKzEyOTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENv
bmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3Jp
cHRDb25maXJtOjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21w
dCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5Pik7CiAgICAgdm9pZCBzZXRTdGF0
dXNUZXh0KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQo
Y29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCB1aW50MzJfdCBtb2RpZmllcnMsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJIaXRUZXN0UmVz
dWx0RGF0YSYmLCB1aW50MzJfdCBtb2RpZmllcnMsIFVzZXJEYXRhJiYpOwogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNs
aWNrZWQodWludDMyX3Qgb3BhcXVlUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHBsdWdpbnNQYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDIyMTYyMSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBGdW5jdGlvbjx2b2lkIChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6U3RyaW5nKCkpOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3RhdHVzVGV4dChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIFdlYktp
dDo6V2ViRXZlbnQ6Ok1vZGlmaWVycywgT2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0
OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycywgT2Jq
ZWN0KikgeyB9CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdmlydHVhbCB2
b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIERpY3Rpb25hcnkmKSB7IH0KICNlbmRpZiAv
LyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjIxNjIxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3MCw3ICsxNzcw
LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAg
ICAgbV9jbGllbnQuc2V0U3RhdHVzVGV4dCh0b0FQSShwYWdlKSwgdG9BUEkodGV4dC5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBt
b3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkhpdFRl
c3RSZXN1bHREYXRhJiBkYXRhLCBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJz
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0
YSYgZGF0YSwgV2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50
Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50ICYmICFtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxl
bWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE3NzksMTIgKzE3NzksMTIgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVm
IHBhZwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5iYXNlLnZlcnNpb24pIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVP
dmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtb2Rp
ZmllcnMpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgICAgICAgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCh0b0FQSSgmcGFnZSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IHdl
YkhpdFRlc3RSZXN1bHQgPSBBUEk6OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShkYXRhKTsKLSAgICAg
ICAgICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQ
SSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgYXV0byBhcGlIaXRU
ZXN0UmVzdWx0ID0gQVBJOjpIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAg
ICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSSgmcGFnZSksIHRvQVBJKGFw
aUhpdFRlc3RSZXN1bHQucHRyKCkpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSSh1c2VyRGF0YSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMjE2MjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNiArMTU4LDcgQEAgc3RydWN0IFVJRWRnZUluc2V0czsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2xpY2tBdXRvRmlsbEJ1
dHRvbldpdGhVc2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGdldFRvb2xiYXJzQXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNhdmVEYXRh
VG9GaWxlOihOU0RhdGEgKilkYXRhIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dl
c3RlZEZpbGVuYW1lIG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlIG9yaWdpbmF0aW5nVVJM
OihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CistICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJ2aWV3IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
OihfV0tIaXRUZXN0UmVzdWx0ICopaGl0VGVzdFJlc3VsdCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2Rp
ZmllckZsYWdzKWZsYWdzIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvOwog
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRFeGNlZWRCYWNrZ3JvdW5k
UmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOihfV0tSZXNvdXJjZUxpbWl0KWxpbWl0IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgdW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkV2l0aFJlYXNv
bjooX1dLUGx1Z0luVW5hdmFpbGFiaWxpdHlSZWFzb24pcmVhc29uIHBsdWdJbkluZm86KE5TRGlj
dGlvbmFyeSAqKXBsdWdJbkluZm87CiAtIChOU01lbnUgKilfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBjb250ZXh0TWVudTooTlNNZW51ICopbWVudSBmb3JFbGVtZW50OihfV0tDb250ZXh0
TWVudUVsZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMikp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVJQ2xpZW50LmNwcAkocmV2aXNpb24gMjIxNTAzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZpZXdS
dW5KYXZhU2NyaXB0QmVmb3JlVW5sb2FkQ29uZmlybShtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgp
KSk7CiAgICAgfQogCi0gICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgZGF0YSwgV2ViRXZlbnQ6Ok1vZGlmaWVy
cyBtb2RpZmllcnMsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGUKKyAgICB2b2lkIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBk
YXRhLCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgQVBJOjpPYmplY3QqKSBmaW5hbAog
ICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZChtX3dlYlZpZXcs
IGRhdGEsIG1vZGlmaWVycyk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaAkocmV2aXNpb24gMjIxNjIxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWROb3RIYW5kbGVXaGVlbEV2ZW50KFdlYlBh
Z2VQcm94eSosIGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5RXZl
bnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+KSBmaW5hbDsKICAgICAg
ICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBBUEk6OkRpY3Rpb25hcnkmKSBmaW5h
bDsKKyAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIFdlYkV2ZW50OjpNb2RpZmllcnMsIEFQSTo6T2Jq
ZWN0Kik7CiAgICAgICAgIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJQYWdlUHJveHkm
LCBBUEk6Ok9iamVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHRvb2xiYXJzQXJlVmlzaWJsZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAg
ICAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJz
KiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOwpAQCAtMTU1LDYgKzE1
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRX
aXRoRmxhZ3MgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdVbmF2YWlsYWJsZVBsdWdJbkJ1dHRv
bkNsaWNrZWQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRDbGlja0F1dG9GaWxsQnV0dG9u
V2l0aFVzZXJJbmZvIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3TW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnRXaXRoRmxhZ3NVc2VySW5mbyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0dldFRvb2xi
YXJzQXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Vmlld0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWlt
ZVR5cGVPcmlnaW5hdGluZ1VSTCA6IDE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDIyMTYyMSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJBUElGcmFtZUluZm8uaCIKKyNp
bXBvcnQgIkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXIuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbXBvcnQgIk5h
dmlnYXRpb25BY3Rpb25EYXRhLmgiCkBAIC00OCw2ICs0OSw3IEBACiAjaW1wb3J0ICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCIKICNpbXBv
cnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJ
bnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTExMiw2ICsx
MTQsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsCiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1VuYXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZCA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnVuYXZhaWxhYmxl
UGx1Z0luQnV0dG9uQ2xpY2tlZFdpdGhSZWFzb246cGx1Z0luSW5mbzopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZl
bnQ6d2l0aEZsYWdzOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDbGlja0F1
dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRXaXRo
RmxhZ3NVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OndpdGhGbGFnczp1c2VySW5mbzopXTsKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGlt
aXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVn
cm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxlU3Vn
Z2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVkRmls
ZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRp
b25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOildOwpAQCAtMTYwLDcgKzE2Myw3IEBAIFVJRGVsZWdhdGU6OkNvbnRleHRNZW51Q2xp
ZW50Ojp+Q29udGV4dE0KIHsKIH0KIAotUmV0YWluUHRyPE5TTWVudT4gVUlEZWxlZ2F0ZTo6Q29u
dGV4dE1lbnVDbGllbnQ6Om1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgTlNNZW51ICptZW51LCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJ
OjpPYmplY3QqIHVzZXJJbmZvKQorUmV0YWluUHRyPE5TTWVudT4gVUlEZWxlZ2F0ZTo6Q29udGV4
dE1lbnVDbGllbnQ6Om1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYsIE5TTWVudSAq
bWVudSwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBBUEk6Ok9iamVjdCogdXNlckluZm8p
CiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbnRl
eHRNZW51Rm9yRWxlbWVudCAmJiAhbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdDb250ZXh0TWVudUZvckVsZW1lbnRVc2VySW5mbykKICAgICAgICAgcmV0dXJuIG1lbnU7CkBA
IC0xODcsNyArMTkwLDcgQEAgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6On5VSUNsaWVudCgpCiB7CiB9
CiAKLVJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNy
ZWF0ZU5ld1BhZ2VDb21tb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIEFQSTo6RnJhbWVJ
bmZvJiBzb3VyY2VGcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgV2ViS2l0OjpO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK1JlZlB0cjxXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQ
YWdlQ29tbW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgQVBJOjpGcmFtZUluZm8mIHNvdXJjZUZyYW1l
SW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
V2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94
eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlE
ZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwogICAgIEFTU0VSVChkZWxlZ2F0ZSk7CkBAIC0yNjMs
NyArMjY2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZQogICAg
IGNyZWF0ZU5ld1BhZ2VDb21tb24ocGFnZSwgb3JpZ2luYXRpbmdGcmFtZUluZm8sIFdURk1vdmUo
cmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVzLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVu
Y3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZUluaXRpYXRl
ZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwpAQCAtMjg1LDcgKzI4OCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFT
Y3JpcHQKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bkphdmFTY3JpcHRDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJ
bml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwpAQCAtMzA3LDcgKzMxMCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bkphdmFTY3JpcHQKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25z
dCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRWYWx1ZSwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCAoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJv
eHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4
dEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihTdHJpbmcoKSk7CkBAIC0zMzQsNyArMzM3LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6Y2FuUnVuQmVmb3JlVQogICAgIHJldHVybiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5p
dGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiB3ZWJG
cmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luRGF0YSwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFn
ZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZy
YW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW5EYXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxl
cikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zOTYsNyArMzk5LDcg
QEAgc3RhdGljIGlubGluZSBfV0tGb2N1c0RpcmVjdGlvbiB0b1dLRm9jdQogICAgIHJldHVybiBf
V0tGb2N1c0RpcmVjdGlvbkZvcndhcmQ7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnRha2VGb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdLRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6dGFrZUZvY3VzKFdlYlBhZ2VQcm94eSos
IFdLRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdUYWtlRm9jdXMpCiAgICAgICAgIHJldHVybjsKQEAgLTQw
OCw3ICs0MTEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp0YWtlRm9jdXMoV2ViCiAg
ICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVn
YXRlLm1fd2ViVmlldyB0YWtlRm9jdXM6dG9XS0ZvY3VzRGlyZWN0aW9uKGRpcmVjdGlvbildOwog
fQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpmb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94
eSopCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpmb2N1cyhXZWJQYWdlUHJveHkqKQogewog
ICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmZvY3VzV2ViVmlldykKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDIwLDcgKzQyMyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmZvY3VzKFdlYktpdDoKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0
ZSBfZm9jdXNXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogCi12b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50Ojp1bmZvY3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KikKK3ZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnVuZm9jdXMoV2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAoIW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy51bmZvY3VzV2ViVmlldykKICAgICAgICAgcmV0
dXJuOwpAQCAtNDcwLDcgKzQ3Myw3IEBAIHN0YXRpYyBfV0tSZXNvdXJjZUxpbWl0IHRvV0tSZXNv
dXJjZUxpbWkKICAgICByZXR1cm4gX1dLUmVzb3VyY2VMaW1pdE1lbW9yeTsKIH0KIAotdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGls
ZUluRm9yZWdyb3VuZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCBsaW1p
dCkKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJj
ZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0IGxp
bWl0KQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKQogICAgICAg
ICByZXR1cm47CkBAIC00ODIsNyArNDg1LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGlkRXhjZWVkQmFjawogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+
KGRlbGVnYXRlKSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGRpZEV4Y2VlZEJhY2tn
cm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ6dG9XS1Jlc291cmNlTGltaXQobGlt
aXQpXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkTm90SGFuZGxlV2hlZWxF
dmVudChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViV2hlZWxF
dmVudCYgZXZlbnQpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWROb3RIYW5kbGVXaGVl
bEV2ZW50KFdlYlBhZ2VQcm94eSosIGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQog
ewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RI
YW5kbGVXaGVlbEV2ZW50KQogICAgICAgICByZXR1cm47CkBAIC00OTQsNiArNDk3LDM1IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZE5vdEhhbmRsZVcKICAgICBbKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGRp
ZE5vdEhhbmRsZVdoZWVsRXZlbnQ6ZXZlbnQubmF0aXZlRXZlbnQoKV07CiB9CiAKK3N0YXRpYyBO
U0V2ZW50TW9kaWZpZXJGbGFncyB0b05TRXZlbnRNb2RpZmllckZsYWdzKFdlYkV2ZW50OjpNb2Rp
ZmllcnMgbW9kaWZpZXJzKQoreworICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIGZsYWdzID0gMDsK
KyAgICBpZiAobW9kaWZpZXJzICYgV2ViRXZlbnQ6OlNoaWZ0S2V5KQorICAgICAgICBmbGFncyB8
PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CisgICAgaWYgKG1vZGlmaWVycyAmIFdlYkV2ZW50
OjpDb250cm9sS2V5KQorICAgICAgICBmbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29udHJv
bDsKKyAgICBpZiAobW9kaWZpZXJzICYgV2ViRXZlbnQ6OkFsdEtleSkKKyAgICAgICAgZmxhZ3Mg
fD0gTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbjsKKyAgICBpZiAobW9kaWZpZXJzICYgV2ViRXZl
bnQ6Ok1ldGFLZXkpCisgICAgICAgIGZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5k
OworICAgIGlmIChtb2RpZmllcnMgJiBXZWJFdmVudDo6Q2Fwc0xvY2tLZXkpCisgICAgICAgIGZs
YWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdDYXBzTG9jazsKKyAgICByZXR1cm4gZmxhZ3M7Cit9
CisKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBkYXRhLCBXZWJFdmVudDo6
TW9kaWZpZXJzIG1vZGlmaWVycywgQVBJOjpPYmplY3QqIHVzZXJJbmZvKQoreworICAgIGlmICgh
bV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdNb3VzZURpZE1vdmVPdmVyRWxl
bWVudFdpdGhGbGFnc1VzZXJJbmZvKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRlbGVn
YXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBhcGlIaXRUZXN0UmVzdWx0ID0gQVBJOjpIaXRU
ZXN0UmVzdWx0OjpjcmVhdGUoZGF0YSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4p
ZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudDp3cmFwcGVyKGFwaUhpdFRlc3RSZXN1bHQuZ2V0KCkpIHdpdGhGbGFnczp0b05TRXZl
bnRNb2RpZmllckZsYWdzKG1vZGlmaWVycykgdXNlckluZm86dXNlckluZm8gPyBzdGF0aWNfY2Fz
dDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3JhcHBlcigpKSA6IG5pbF07Cit9CisK
IHN0YXRpYyBfV0tBdXRvcGxheUV2ZW50RmxhZ3MgdG9XS0F1dG9wbGF5RXZlbnRGbGFncyhPcHRp
b25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKIHsKICAgICBfV0tBdXRv
cGxheUV2ZW50RmxhZ3Mgd2tGbGFncyA9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc05vbmU7CkBAIC01
MTksNyArNTUxLDcgQEAgc3RhdGljIF9XS0F1dG9wbGF5RXZlbnQgdG9XS0F1dG9wbGF5RXZlbgog
ICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhUHJldmVudGVkRnJvbUF1dG9w
bGF5aW5nOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp0b29sYmFyc0FyZVZpc2li
bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6dG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0dldFRv
b2xiYXJzQXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOwpAQCAtNTQ1LDEwICs1NzcsMTAgQEAgdm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6ZGlkQ2xpY2tBdXRvRgogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBf
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRo
VXNlckluZm86dXNlckluZm8gP3N0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJ
bmZvLT53cmFwcGVyKCkpIDogbmlsXTsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxC
dXR0b25XaXRoVXNlckluZm86dXNlckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rp
bmc+Pih1c2VySW5mby0+d3JhcHBlcigpKSA6IG5pbF07CiB9CiAgICAgCi12b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
V2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnRGbGFncz4gZmxhZ3MpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRv
cGxheUV2ZW50KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9w
dGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdzKQogewogICAgIGlmICgh
bV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50
V2l0aEZsYWdzKQogICAgICAgICByZXR1cm47CkBAIC02MTksNyArNjUxLDcgQEAgYm9vbCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKAogfQogI2VuZGlmCiAKLXN0YXRpYyB2b2lk
IHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhjb25zdCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmIGZyYW1lLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkmIHJlcXVlc3QsIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiBkZWxlZ2F0ZSwgV0tXZWJWaWV3
JiB3ZWJWaWV3KQorc3RhdGljIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JE
ZXZpY2VzKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5JiByZXF1ZXN0LCBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gZGVsZWdhdGUsIFdL
V2ViVmlldyYgd2ViVmlldykKIHsKICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IEJsb2NrUHRy
PHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3Byb3RlY3RlZFJlcXVlc3QgPSBtYWtlUmVmKHJl
cXVlc3QpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CkBA
IC02NDUsNyArNjc3LDcgQEAgc3RhdGljIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRp
bwogICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpwcm90ZWN0ZWRXZWJWaWV3LmdldCgpIHJlcXVlc3RV
c2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczpkZXZpY2VzIHVybDpyZXF1ZXN0RnJhbWVV
UkwgbWFpbkZyYW1lVVJMOm1haW5GcmFtZVVSTCBkZWNpc2lvbkhhbmRsZXI6ZGVjaXNpb25IYW5k
bGVyLmdldCgpXTsKIH0KIAotYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2Us
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJN
ZWRpYU9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkKK2Jvb2wgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmln
aW4mIHVzZXJNZWRpYU9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4s
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpCiB7CiAgICAgYXV0byBk
ZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICghZGVsZWdh
dGUgfHwgIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdFVzZXJN
ZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzVVJMTWFpbkZyYW1lVVJMRGVjaXNpb25IYW5kbGVy
KSB7CkBAIC03MjEsNyArNzUzLDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRl
UG9saWN5RgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
IHVzZXJNZWRpYU9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpCitib29sIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYg
dXNlck1lZGlhT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpCiB7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICghZGVsZWdhdGUgfHwg
IW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yVVJMTWFpbkZyYW1lVVJMRnJhbWVJZGVudGlmaWVyRGVjaXNpb25IYW5kbGVyKSB7
CkBAIC03ODcsNyArODE5LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVhY2hlZEFw
cGxpYwogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cHJp
bnRGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSogd2Vi
RnJhbWVQcm94eSkKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnByaW50RnJhbWUoV2ViUGFn
ZVByb3h5KiwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSkKIHsKICAgICBBU1NFUlRfQVJH
KHdlYkZyYW1lUHJveHksIHdlYkZyYW1lUHJveHkpOwogCkBAIC04MDEsNyArODMzLDcgQEAgdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cHJpbnRGcmFtZShXZQogICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcHJp
bnRGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LT5m
cmFtZUlEKCkpKV07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNsb3NlKFdlYktp
dDo6V2ViUGFnZVByb3h5KikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNsb3NlKFdlYlBh
Z2VQcm94eSopCiB7CiAgICAgaWYgKG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3Q2xvc2UpIHsKICAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVn
YXRlLmdldCgpOwpAQCAtODIyLDcgKzg1NCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmNsb3NlKFdlYktpdDoKICAgICBbZGVsZWdhdGUgd2ViVmlld0RpZENsb3NlOm1fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXddOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKQordm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdlYlBhZ2VQcm94eSopCiB7
CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Z1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODM0LDcgKzg2Niw3IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZ1bGxzY3JlZW5NYXkKICAgICBbKGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlld0Z1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZTptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6V2ViUGFnZVByb3h5KikKK3ZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEVudGVyRnVsbHNjcmVlbihXZWJQYWdlUHJveHkqKQogewog
ICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRFbnRlckZ1
bGxzY3JlZW4pCiAgICAgICAgIHJldHVybjsKQEAgLTg0Niw3ICs4NzgsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpkaWRFbnRlckZ1bGxzCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXdEaWRFbnRlckZ1bGxzY3JlZW46bV91aURlbGVnYXRlLm1f
d2ViVmlld107CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEV4aXRGdWxsc2Ny
ZWVuKFdlYktpdDo6V2ViUGFnZVByb3h5KikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRp
ZEV4aXRGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUu
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEV4aXRGdWxsc2NyZWVuKQogICAgICAgICByZXR1
cm47CkBAIC05MjUsNyArOTU3LDcgQEAgTlNEaWN0aW9uYXJ5ICpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGF0YQogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKIAotdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2NrKFdlYktpdDo6V2ViUGFnZVByb3h5KikKK3ZvaWQg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jayhXZWJQYWdlUHJveHkqKQog
ewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0
UG9pbnRlckxvY2spCiAgICAgICAgIHJldHVybjsKQEAgLTkzNyw3ICs5NjksNyBAQCB2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0UG9pbnRlCiAgICAgW3N0YXRpY19jYXN0PGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3UmVxdWVzdFBvaW50ZXJMb2Nr
Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkaWRMb3NlUG9pbnRlckxvY2soV2ViS2l0OjpXZWJQYWdlUHJveHkqKQordm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6ZGlkTG9zZVBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSopCiB7CiAgICAg
aWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZExvc2VQb2ludGVy
TG9jaykKICAgICAgICAgcmV0dXJuOwpAQCAtOTUxLDcgKzk4Myw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmRpZExvc2VQb2ludGUKIAogI2VuZGlmCiAgICAgCi12b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIGJvb2wgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmUpCit2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShX
ZWJQYWdlUHJveHkqLCBib29sIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlKQogewogICAgIGlm
ICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYXNWaWRlb0luUGljdHVy
ZUluUGljdHVyZURpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNjQ5KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDkt
MDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBBZGQgV0tVSURlbGVnYXRlUHJpdmF0ZSBlcXVpdmFsZW50IG9mIFdLUGFnZVVJQ2xpZW50J3Mg
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NjQyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyNzAwMzU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bTW91c2VN
b3ZlT3ZlckVsZW1lbnREZWxlZ2F0ZSBfd2ViVmlldzptb3VzZURpZE1vdmVPdmVyRWxlbWVudDp3
aXRoRmxhZ3M6dXNlckluZm86XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VNb3Zl
VG9Qb2ludDp3aXRoRmxhZ3M6XSk6CisKIDIwMTctMDktMDUgIEFha2FzaCBKYWluICA8YWFrYXNo
X2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVXUyBzaG91bGQgcmVwb3J0IHdoZW4gYSBzdGVw
IHN1Y2NlZWRzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJ
RGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMjE2MjEpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTg2LDYgKzE4NywzMSBA
QCBURVNUKFdlYktpdCwgVG9vbGJhclZpc2libGUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKIH0KIAorQGludGVyZmFjZSBNb3VzZU1vdmVPdmVyRWxlbWVudERlbGVnYXRl
IDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBNb3VzZU1vdmVPdmVyRWxlbWVudERlbGVnYXRlCisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYnZpZXcgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KF9XS0hpdFRlc3RSZXN1bHQg
KiloaXRUZXN0UmVzdWx0IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVyRmxhZ3MpZmxhZ3MgdXNl
ckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8KK3sKKyAgICBFWFBFQ1RfU1RSRVEo
aGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZywg
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIik7CisgICAgRVhQRUNUX1NUUkVRKGhpdFRlc3RSZXN1
bHQubGlua0xhYmVsLlVURjhTdHJpbmcsICJsaW5rIGxhYmVsIik7CisgICAgRVhQRUNUX1NUUkVR
KGhpdFRlc3RSZXN1bHQubGlua1RpdGxlLlVURjhTdHJpbmcsICJsaW5rIHRpdGxlIik7CisgICAg
RVhQRUNUX0VRKGZsYWdzLCBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQpOworICAgIGRvbmUgPSB0
cnVlOworfQorCitAZW5kCisKK1RFU1QoV2ViS2l0LCBNb3VzZU1vdmVPdmVyRWxlbWVudCkKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6W1tbTW91c2VNb3ZlT3ZlckVsZW1lbnREZWxlZ2F0ZSBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8
YSBocmVmPSdodHRwOi8vZXhhbXBsZS5jb20vcGF0aCcgdGl0bGU9J2xpbmsgdGl0bGUnPmxpbmsg
bGFiZWw8L2E+Il07CisgICAgW3dlYlZpZXcgbW91c2VNb3ZlVG9Qb2ludDpOU01ha2VQb2ludCgy
MCwgNjAwIC0gMjApIHdpdGhGbGFnczpOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnRdOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKIHN0YXRpYyBib29sIHJlYWR5Rm9y
Q2xpY2s7CiAKIEBpbnRlcmZhY2UgQXV0b0ZpbGxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVs
ZWdhdGVQcml2YXRlPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgJKHJldmlzaW9uIDIyMTQ2NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAvLyBTaW11bGF0
ZXMgY2xpY2tpbmcgd2l0aCBhIHByZXNzdXJlLXNlbnNpdGl2ZSBkZXZpY2UsIGlmIHBvc3NpYmxl
LgogLSAodm9pZCltb3VzZURvd25BdFBvaW50OihOU1BvaW50KXBvaW50IHNpbXVsYXRlUHJlc3N1
cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZTsKIC0gKHZvaWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9p
bnQpcG9pbnQ7CistICh2b2lkKW1vdXNlTW92ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aEZs
YWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFnczsKIC0gKHZvaWQpc2VuZENsaWNrc0F0UG9p
bnQ6KE5TUG9pbnQpcG9pbnQgbnVtYmVyT2ZDbGlja3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlj
a3M7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyOwogQGVuZApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQkocmV2aXNpb24gMjIx
NDY3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDExIEBAIC0gKHZvaWQpbW91c2VVcEF0UG9pbnQ6KE5T
UG9pbnQpcG9pbnQKICAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBvaW50OnBvaW50IGNsaWNr
Q291bnQ6MV07CiB9CiAKKy0gKHZvaWQpbW91c2VNb3ZlVG9Qb2ludDooTlNQb2ludClwb2ludCB3
aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzCit7CisgICAgW3NlbGYgbW91c2VN
b3ZlZDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZU1vdmVkIGxv
Y2F0aW9uOnBvaW50IG1vZGlmaWVyRmxhZ3M6ZmxhZ3MgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVu
dFRpbWUoKSB3aW5kb3dOdW1iZXI6W19ob3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowXV07Cit9CisKIC0gKHZvaWQpc2VuZENsaWNrc0F0
UG9pbnQ6KE5TUG9pbnQpcG9pbnQgbnVtYmVyT2ZDbGlja3M6KE5TVUludGVnZXIpbnVtYmVyT2ZD
bGlja3MKIHsKICAgICBmb3IgKE5TVUludGVnZXIgY2xpY2tDb3VudCA9IDE7IGNsaWNrQ291bnQg
PD0gbnVtYmVyT2ZDbGlja3M7ICsrY2xpY2tDb3VudCkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>