<?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>196433</bug_id>
          
          <creation_ts>2019-03-30 21:18:34 -0700</creation_ts>
          <short_desc>[iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document</short_desc>
          <delta_ts>2019-10-14 10:40:33 -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>
          
          <blocked>202935</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>david_quesada</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1522809</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-30 21:18:34 -0700</bug_when>
    <thetext>[iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522810</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-30 21:19:43 -0700</bug_when>
    <thetext>rdar://problem/49293305</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522811</commentid>
    <comment_count>2</comment_count>
      <attachid>366372</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-30 21:22:59 -0700</bug_when>
    <thetext>Created attachment 366372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522812</commentid>
    <comment_count>3</comment_count>
      <attachid>366373</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-30 21:42:35 -0700</bug_when>
    <thetext>Created attachment 366373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522813</commentid>
    <comment_count>4</comment_count>
      <attachid>366374</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-30 22:08:52 -0700</bug_when>
    <thetext>Created attachment 366374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522814</commentid>
    <comment_count>5</comment_count>
      <attachid>366374</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-30 22:09:38 -0700</bug_when>
    <thetext>Comment on attachment 366374
Patch

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

&gt; Source/WTF/wtf/NeverDestroyed.h:63
&gt; +    T* operator-&gt;() { return storagePointer(); }

The world will never be the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522820</commentid>
    <comment_count>6</comment_count>
      <attachid>366375</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-30 23:59:10 -0700</bug_when>
    <thetext>Created attachment 366375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522821</commentid>
    <comment_count>7</comment_count>
      <attachid>366374</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-31 00:06:00 -0700</bug_when>
    <thetext>Comment on attachment 366374
Patch

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

&gt; Source/WebCore/platform/network/ios/PreviewConverter.mm:59
&gt; +    if (equalLettersIgnoringASCIICase(mimeType, &quot;text/html&quot;) || equalLettersIgnoringASCIICase(mimeType, &quot;text/plain&quot;))

Surprised we don&apos;t have constants for these but it seems like we don&apos;t.

&gt; Tools/TestWebKitAPI/Tests/WebCore/ios/PreviewConverter.cpp:41
&gt; +    EXPECT_FALSE(PreviewConverter::supportsMIMEType(String()));
&gt; +    EXPECT_FALSE(PreviewConverter::supportsMIMEType(emptyString()));

Maybe cover at least one non-empty/null falsy one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522825</commentid>
    <comment_count>8</comment_count>
      <attachid>366377</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-31 09:57:53 -0700</bug_when>
    <thetext>Created attachment 366377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522827</commentid>
    <comment_count>9</comment_count>
      <attachid>366377</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-31 10:37:51 -0700</bug_when>
    <thetext>Comment on attachment 366377
Patch

Clearing flags on attachment: 366377

Committed r243682: &lt;https://trac.webkit.org/changeset/243682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522828</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-31 10:37:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366372</attachid>
            <date>2019-03-30 21:22:59 -0700</date>
            <delta_ts>2019-03-30 21:42:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196433-20190330212259.patch</filename>
            <type>text/plain</type>
            <size>63845</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjNTc3ZWI1ZDQxNDQ2NTUwZDExNDRi
YTkyMDBjOGRmODkxZWQ2ZmQuLmJkN2Q3MmE3YjFhYWM3NGU5MGYyZTBlOWQ4ZGY2M2NlYzJkMzk3
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0aGUgbmF2
aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcgYSBRdWlj
a0xvb2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0
cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJEZXN0cm95ZWQ6Om9wZXJhdG9yLT4pOgorICAg
ICAgICAoV1RGOjpOZXZlckRlc3Ryb3llZDo6b3BlcmF0b3ItPiBjb25zdCk6CisKIDIwMTktMDMt
MjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW4t
Zml4IHRoZSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc2NDI1MDJiMzhmMzkyM2M1NmNiNjJlNGM4MTE2
MWU4NjhkYmM3NTAuLmM5ODJkNDhiMGNiNDQyYmQ2Yjc1YzU1YjY5MDA4OTNiYzEyMWEwYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOS0wMy0zMCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gV2ViS2l0IHNob3VsZCBjb25zdWx0IHRoZSBu
YXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSBiZWZvcmUgcHJldmlld2luZyBhIFF1
aWNrTG9vayBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2NDMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTI5MzMwNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIGxheW91dCB0ZXN0cyBhbmQgbmV3IGFuZCBleGlzdGluZyBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyOjpzaG91bGRDcmVhdGVQcmV2aWV3TG9hZGVyRm9yUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9QcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGluaXRXaXRo
UmVzb3VyY2VMb2FkZXI6cmVzb3VyY2VSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViUHJldmll
d0xvYWRlciBfbG9hZFByZXZpZXdJZk5lZWRlZF0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9h
ZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAg
ICgtW1dlYlByZXZpZXdMb2FkZXIgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6CisgICAg
ICAgICgtW1dlYlByZXZpZXdMb2FkZXIgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgor
ICAgICAgICAoV2ViQ29yZTo6UHJldmlld0xvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICgtW1dlYlBy
ZXZpZXdMb2FkZXIgX3NlbmREaWRSZWNlaXZlUmVzcG9uc2VJZk5lY2Vzc2FyeV0pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5
cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9p
b3MvUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1By
ZXZpZXdDb252ZXJ0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpz
dXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE5LTAzLTI4ICBKdXN0aW4gRmFuICA8anVzdGluX2Zh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBHUFVdIFByb3RvdHlwZSBjb21wdXRlIHBpcGVs
aW5lIHdpdGggTVNMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzODIwZGFkZjMzN2FmZjQ0MGE4MTY3OTFhOWE0OWM0
NTQzOWFkNGYuLmJlMzk4ODY2N2M0OWFmMWZkYzJiOTFhYzY0NzVjMWU5MWY4OTJhZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0aGUgbmF2aWdh
dGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcgYSBRdWlja0xv
b2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1l
T3B0aW9ucyk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKGRlZmF1bHRTaG91
bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyk6CisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBf
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXddKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3Jl
TG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9WZXJzaW9uQ2hlY2tzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCiAyMDE5
LTAzLTI4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBBdXRvbWF0aWMgZm9jdXMgb2YgaW5wdXQgZmllbGQgaXMgZmxha3kKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRl
c3Ryb3llZC5oCmluZGV4IGU3ZThhN2VhMDM5ODljYmE0MDRlYWJiODI1MzUwMGQ1YzNmN2Y1NTMu
LmUwZTQ2Nzc1NjFjN2JmYmQ5ZTU1Njg0YzUyNDVkY2E1ZTJiM2NiOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKKysrIGIvU291cmNlL1dURi93dGYvTmV2ZXJE
ZXN0cm95ZWQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTYwLDkgKzYwLDEzIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBUJigp
IHsgcmV0dXJuICpzdG9yYWdlUG9pbnRlcigpOyB9CiAgICAgVCYgZ2V0KCkgeyByZXR1cm4gKnN0
b3JhZ2VQb2ludGVyKCk7IH0KIAorICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBzdG9yYWdl
UG9pbnRlcigpOyB9CisKICAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuICpz
dG9yYWdlUG9pbnRlcigpOyB9CiAgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKnN0
b3JhZ2VQb2ludGVyKCk7IH0KIAorICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBzdG9yYWdlUG9pbnRlcigpOyB9CisKIHByaXZhdGU6CiAgICAgdXNpbmcgUG9pbnRlclR5
cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSo7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OWRiMzRh
NGNkZWIxZWQ0Nzg2OTFjNTVjOGVkNWYyNjk0YzZkZThkLi5jNDAxODA0NDI0MjBkOWUxNDIxYjg1
MmRjODQwMmQ3NjBmMzMxY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDIzLDcgKzMwMjMsNyBAQAogCQlBMUJCODVCOTIx
NTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyog
SlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07CiAJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwICovOyB9OwogCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyB9OwotCQlB
MUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJD
OThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgfTsKKwkJQTFDMTUwN0ExRTNGMkIzRTAwMzJD
OThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQzE1MDc4MUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVy
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTFDQkVGNjQxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNCRUY2MzFGOUYxMTI5MDAy
OERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAqLzsgfTsKIAkJQTFDQzU2NjcxRjQ2MTQ3QTAw
QTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0M1NjY1MUY0NjE0NjgwMEE0NTU1QiAvKiBKU1BheW1lbnRB
ZGRyZXNzLmggKi87IH07CiAJCUExQ0M1NjY5MUY0NjE0ODAwMEE0NTU1QiAvKiBKU1BheW1lbnRD
b21wbGV0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFDQzU2NEUxRjQ2MTQ1MjAwQTQ1NTVCIC8qIEpTUGF5bWVudENvbXBsZXRlLmggKi87IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0ODNlY2Qz
YzEzZDYxZTY5YTM1OGViODFjY2E2ZTM2NGNjNDUyMDA5Li4yM2RlMTU0NDlhMDVlYzE0OTMyOTIy
Y2NiYzM3NDQzZDQ3MDNkOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02Myw2ICs2Myw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19M
T09LKQorI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJQcmV2aWV3TG9h
ZGVyLmgiCiAjZW5kaWYKIApAQCAtMzA0LDcgKzMwNSw3IEBAIGJvb2wgU3VicmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZENyZWF0ZVByZXZpZXdMb2FkZXJGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvCiAgICAgaWYgKG1fcHJldmlld0xvYWRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmV0dXJuIFByZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBlKHJlc3BvbnNl
Lm1pbWVUeXBlKCkpOworICAgIHJldHVybiBQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVU
eXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogfQogCiAjZW5kaWYKQEAgLTMxOSw3ICszMjAsOCBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChz
aG91bGRDcmVhdGVQcmV2aWV3TG9hZGVyRm9yUmVzcG9uc2UocmVzcG9uc2UpKSB7CiAgICAgICAg
IG1fcHJldmlld0xvYWRlciA9IFByZXZpZXdMb2FkZXI6OmNyZWF0ZSgqdGhpcywgcmVzcG9uc2Up
OwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX3ByZXZpZXdMb2FkZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShyZXNwb25zZSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1By
ZXZpZXdMb2FkZXIuaAppbmRleCBhNjMwOTc0NjZiNWZlYjNiNDNlZjIyMTQ4YTQxZGZlNTZhNjU3
NTZhLi42MThlOTQyOTUwMTdkYzNiODMwMzY1YzExNjc2MTUzOGIxZGI2MjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDEwICs0MSwxMCBAQCBj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQcmV2aWV3TG9hZGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQcmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRl
ciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB+UHJldmlld0xvYWRlcigpOwogCisg
ICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsK
ICAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9v
bCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdM
b2FkZXIubW0KaW5kZXggNzI1MWQ3MGIwNTE3MDZlMjZiNTBmYWU1MjIwZjMyNTZhMzZmNTE5NS4u
ZmVhMWVjMjc3MDY0ZTljN2Q1NDkxNTZiMGM4MWEwYjk5Zjg3YWJmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKIAogI2ltcG9ydCAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbXBvcnQgIkZy
YW1lLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNpbXBvcnQgIlBy
ZXZpZXdMb2FkZXJDbGllbnQuaCIKICNpbXBvcnQgIlF1aWNrTG9vay5oIgogI2ltcG9ydCAiUmVz
b3VyY2VMb2FkZXIuaCIKKyNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2lv
cy9RdWlja0xvb2tTUEkuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC00
Nyw3ICs0OSw3IEBAIEBpbnRlcmZhY2UgV2ViUHJldmlld0xvYWRlciA6IE5TT2JqZWN0IHsKICAg
ICBSZWZQdHI8UHJldmlld0xvYWRlckNsaWVudD4gX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJldmlld0NvbnZlcnRlcj4gX2NvbnZlcnRlcjsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IF9idWZmZXJlZERhdGFBcnJheTsKLSAgICBCT09MIF9oYXNTZW50RGlkUmVjZWl2ZVJl
c3BvbnNlOworICAgIEJPT0wgX2hhc0xvYWRlZFByZXZpZXc7CiAgICAgQk9PTCBfaGFzUHJvY2Vz
c2VkUmVzcG9uc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gX2J1ZmZlcmVkRGF0YTsKICAg
ICBsb25nIGxvbmcgX2xlbmd0aFJlY2VpdmVkOwpAQCAtNTksNiArNjEsOCBAQCAtICh2b2lkKWFw
cGVuZERhdGFBcnJheTooTlNBcnJheTxOU0RhdGEgKj4gKilkYXRhQXJyYXk7CiAtICh2b2lkKWZp
bmlzaGVkQXBwZW5kaW5nOwogLSAodm9pZClmYWlsZWQ7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQk9PTCBzaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOworCiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmV2aWV3TG9hZGVyCkBAIC03NywxNCArODEsMTQgQEAg
c3RhdGljIFByZXZpZXdMb2FkZXJDbGllbnQmIGVtcHR5Q2xpZW50KCkKIAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRl
ciByZXNvdXJjZVJlc3BvbnNlOihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNvdXJjZVJlc3Bv
bnNlCiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfcmVz
b3VyY2VMb2FkZXIgPSBtYWtlV2Vha1B0cihyZXNvdXJjZUxvYWRlcik7CiAgICAgX3Jlc3BvbnNl
ID0gcmVzb3VyY2VSZXNwb25zZTsKICAgICBfY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGlu
Z3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpOwog
CiAgICAgaWYgKHRlc3RpbmdDbGllbnQoKSkKICAgICAgICAgX2NsaWVudCA9IHRlc3RpbmdDbGll
bnQoKTsKQEAgLTExOSwxNSArMTIzLDE2IEBAIC0gKHZvaWQpZmFpbGVkCiAgICAgX2NsaWVudC0+
ZGlkRmFpbCgpOwogfQogCi0tICh2b2lkKV9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3Nh
cnkKKy0gKHZvaWQpX2xvYWRQcmV2aWV3SWZOZWVkZWQKIHsKICAgICBpZiAoIV9yZXNvdXJjZUxv
YWRlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFfcmVzb3VyY2VMb2FkZXItPnJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpOwotICAgIGlmIChfaGFzU2VudERpZFJlY2VpdmVSZXNwb25z
ZSkKKyAgICBpZiAoX2hhc0xvYWRlZFByZXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIF9o
YXNMb2FkZWRQcmV2aWV3ID0gWUVTOwogICAgIFtfYnVmZmVyZWREYXRhQXJyYXkgcmVtb3ZlQWxs
T2JqZWN0c107CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgX2NvbnZlcnRlci0+
cHJldmlld1Jlc3BvbnNlKCkgfTsKQEAgLTEzNSw4ICsxNDAsMTQgQEAgLSAodm9pZClfc2VuZERp
ZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNzYXJ5CiAgICAgQVNTRVJUKHJlc3BvbnNlLm1pbWVUeXBl
KCkubGVuZ3RoKCkpOwogCiAgICAgX3Jlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5z
ZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUoX2NvbnZlcnRlcikpOworICAgIF9jbGllbnQtPmRp
ZFJlY2VpdmVSZXNwb25zZSgpOworCisgICAgaWYgKF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVM
b2FkaW5nKSB7CisgICAgICAgIF9oYXNQcm9jZXNzZWRSZXNwb25zZSA9IFlFUzsKKyAgICAgICAg
X3Jlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRSZXNwb25zZShyZXNwb25zZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBfaGFzU2VudERpZFJlY2VpdmVSZXNwb25z
ZSA9IFlFUzsKICAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBOTzsKICAgICBfcmVzb3VyY2VM
b2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3NlbGYsIHJldGFpbmVkU2VsZiA9
IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBZRVM7
CkBAIC0xNzAsOCArMTgxLDggQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGwKICAgICBBU1NFUlRf
VU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0aW9uKTsKICAgICBpZiAoX3Jlc291cmNlTG9hZGVy
LT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgW3Nl
bGYgX3NlbmREaWRSZWNlaXZlUmVzcG9uc2VJZk5lY2Vzc2FyeV07CisKKyAgICBbc2VsZiBfbG9h
ZFByZXZpZXdJZk5lZWRlZF07CiAKICAgICBhdXRvIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDsK
IApAQCAtMjAxLDcgKzIxMiw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KICAgICBpZiAoX3Jlc291cmNlTG9hZGVyLT5y
ZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgQVNTRVJU
KF9oYXNTZW50RGlkUmVjZWl2ZVJlc3BvbnNlKTsKKyAgICBBU1NFUlQoX2hhc0xvYWRlZFByZXZp
ZXcpOwogCiAgICAgaWYgKCFfaGFzUHJvY2Vzc2VkUmVzcG9uc2UpIHsKICAgICAgICAgX25lZWRz
VG9DYWxsRGlkRmluaXNoTG9hZGluZyA9IFlFUzsKQEAgLTIyNiw3ICsyMzcsNiBAQCAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWlzUXVpY2tMb29r
UGFzc3dvcmRFcnJvcihlcnJvcikpIHsKLSAgICAgICAgW3NlbGYgX3NlbmREaWRSZWNlaXZlUmVz
cG9uc2VJZk5lY2Vzc2FyeV07CiAgICAgICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkRmFpbChlcnJv
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNTYsMjggKzI2NiwxNSBAQCBQcmV2aWV3
TG9hZGVyOjp+UHJldmlld0xvYWRlcigpCiB7CiB9CiAKLWJvb2wgUHJldmlld0xvYWRlcjo6c2hv
dWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0ZDo6dW5pcXVl
X3B0cjxQcmV2aWV3TG9hZGVyPiBQcmV2aWV3TG9hZGVyOjpjcmVhdGUoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4+IHN1cHBvcnRlZE1JTUVUeXBlczsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBmb3IgKE5TU3RyaW5nICptaW1lVHlwZSBpbiBRTFByZXZpZXdH
ZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSkKLSAgICAgICAgICAgIHN1cHBvcnRlZE1JTUVUeXBl
cy5nZXQoKS5hZGQobWltZVR5cGUpOwotICAgIH0pOwotCi0gICAgaWYgKG1pbWVUeXBlLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gc3VwcG9ydGVkTUlNRVR5
cGVzLmdldCgpLmNvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRl
cjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSk7CisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBQcmV2aWV3TG9hZGVyOjpjcmVhdGUoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitib29s
IFByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKIHsKLSAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUocmVzcG9uc2UubWltZVR5
cGUoKSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdMb2FkZXI+KGxvYWRl
ciwgcmVzcG9uc2UpOworICAgIHJldHVybiAhW21fcHJldmlld0xvYWRlciBzaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nXTsKIH0KIAogYm9vbCBQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLnlhbWwKaW5kZXggZDdkNTI4MzcxNzU2YmZkYzFlMDU4YjJiYzU2ZjAwN2Q2MzU1NDI4My4u
NzIwNWQxZmQzODMwOWI3NmUyYjQ1NGIwYjEwMjM2ZWUwNWUwYzliNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbApAQCAtODIzLDYgKzgyMyw5IEBAIGFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJs
ZWQ6CiBibG9ja2luZ09mU21hbGxQbHVnaW5zRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogCitz
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzoKKyAgaW5pdGlh
bDogZmFsc2UKKwogIyBEZXByZWNhdGVkCiAKIGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IGY5
ZWFiYjVmYjkwZjI5NDNiNDg4YTg4NjVmZTc1MmE0YzE0OGJiYzMuLjZjYWUxNGFhNGJjZmNkYTUw
NTNkOGU2NzhhNDkwNGIwNzdkODM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAo
aHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTMsNiAr
NTMsMTAgQEAKICNpbmNsdWRlICJJbWFnZURlY29kZXJBVkZPYmpDLmgiCiAjZW5kaWYKIAorI2lm
IFVTRShRVUlDS19MT09LKQorI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXIuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cygpCkBAIC02NDMsNiArNjQ3LDExIEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKGlzU3VwcG9ydGVkSmF2YVNj
cmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBpc1N1cHBvcnRlZEpTT05NSU1FVHlwZShtaW1lVHlw
ZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgaWYg
KFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0LyIpKQogICAgICAgICByZXR1cm4gIWlzVW5zdXBwb3J0
ZWRUZXh0TUlNRVR5cGUobWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMDFjN2QyNTU5NjM2
MWU5ZGFhZjYxY2EyNTBjMmJmYjcxMTFkMjlmNS4uNWEwNmYyZWY4OWVmNWMyMWJlMTU3YzcxZGEx
NDE5ZWM4NDgwOWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAg
ICAgUHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwogICAgIFByZXZpZXdDb252ZXJ0ZXIoTlNE
YXRhICosIGNvbnN0IFN0cmluZyYgdXRpLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkID0geyB9KTsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CisKICAgICBRTFByZXZpZXdDb252ZXJ0ZXIgKnBsYXRmb3JtQ29u
dmVydGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUNvbnZlcnRlci5nZXQoKTsgfQogICAg
IFJlc291cmNlUmVxdWVzdCBzYWZlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dDsKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVy
Lm1tCmluZGV4IDQ4MmFhYWI3NTg5ZGUxM2RhOGVlNTcwNjc3OTA3NjE0Nzc1MmJhN2MuLmI1Y2Qy
ODM1NmYyNjlmOWQ2MTYzMTM3ZDUxYTNhNGMyODhiYjQ5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIAorI2ltcG9ydCAiUXVpY2tMb29rLmgi
CiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2Uu
aCIKICNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KQEAgLTUzLDYgKzU0LDI0
IEBAIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoTlNEYXRhICpkYXRhLCBjb25z
dCBTdHJpbmcmIHV0aSwgY29uc3QgU3RyaW5nCiB7CiB9CiAKK2Jvb2wgUHJldmlld0NvbnZlcnRl
cjo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9wbGFpbiIpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRNSU1FVHlwZXM7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqbWltZVR5cGUgaW4gUUxQcmV2aWV3
R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkpCisgICAgICAgICAgICBzdXBwb3J0ZWRNSU1FVHlw
ZXMtPmFkZChtaW1lVHlwZSk7CisgICAgfSk7CisKKyAgICBpZiAobWltZVR5cGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzdXBwb3J0ZWRNSU1FVHlwZXMt
PmNvbnRhaW5zKG1pbWVUeXBlKTsKK30KKwogUmVzb3VyY2VSZXF1ZXN0IFByZXZpZXdDb252ZXJ0
ZXI6OnNhZmVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsK
ICAgICByZXR1cm4gW21fcGxhdGZvcm1Db252ZXJ0ZXIgc2FmZVJlcXVlc3RGb3JSZXF1ZXN0OnJl
cXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBC
b2R5KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9Q
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9QcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggNWMwZTg3OTNiMGJiMzVkYzFiNmQ4YTNmNDFi
YWM2N2JhNmZiYmQ1Yi4uZDIwMmViYzZkZmNkNGQzZWZjZjliZGI5N2EzNzZjNjA0MDBhNDIzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1By
ZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UHJldmlld0xv
YWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgflByZXZpZXdMb2FkZXJDbGllbnQo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBjZmE5OWIxNzVmMzUzOWFkMzY0ZmViOTE0OWM3
NzljOTVmYmZiZDFlLi5mOGU0NjQyMzk3OTljZTY0NjY1YTBhZjdlMWJjNmYzZWFhMjRlZWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
IAogI2lmIFVTRShRVUlDS19MT09LKQotI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0xvYWRlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0NvbnZlcnRlci5oPgogI2VuZGlmCiAKICNkZWZp
bmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC0zODYsNyArMzg2LDcgQEAgYm9vbCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2Vz
dG9yc09yWEZyYW1lT3B0aW8KICAgICBBU1NFUlQoaXNNYWluUmVzb3VyY2UoKSk7CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9yTUlN
RVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpCisgICAgaWYgKFByZXZpZXdDb252ZXJ0ZXI6OnN1
cHBvcnRzTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRl
eCA2MDlkMzFmMmZhMDE1ZTRkYmRkYWNjM2I1NGQ1YjMyMzY0YTc4ZWYwLi4zMjAyMTVkZGRmN2Y3
NDk2NmRkMDg2YWE3M2NkNjg3NzIzNWI4ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWwKQEAgLTExOTIsNiArMTE5MiwxMCBAQCBFZGl0YWJsZUltYWdlc0VuYWJs
ZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQogCitTaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzoKKyAgZGVmYXVsdFZhbHVlOiBmYWxz
ZQorICB0eXBlOiBib29sCisKICMgRm9yIGV4cGVyaW1lbnRhbCBmZWF0dXJlczoKICMgVGhlIHR5
cGUgc2hvdWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3ZpZGUgYSBodW1hblJlYWRhYmxl
TmFtZSBhbmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBhbGwgZXhwZXJpbWVudGFsIGZl
YXR1cmVzLiBUaGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCBlYzZjYzdmZWNjMThjMzNlZjBjZjUwZmU1NGQwYzg0MWJlZjE2N2UwLi5k
OGU5NDM2ZjkxNTAxYjM5ZThlODNmY2FlNDU1ZDAxMGJkYWMyZGQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYyNiw2ICs2MjYsNyBA
QCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6dXNlckludGVyZmFjZURpcmVj
dGlvblBvbGljeUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpD
b250ZW50KSkpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0
KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxheW91dERpcmVjdGlvbktleSgpLCBX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uOjpMVFIpKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnBy
ZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dTZXR0
aW5nQW55WEhSSGVhZGVyRnJvbUZpbGVVUkxzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZTo6VmFsdWUoc2hvdWxkQWxsb3dTZXR0aW5nQW55WEhSSGVhZGVyRnJvbUZpbGVVUkxzKCkp
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tM
b29rUHJldmlld0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJl
dmlld10pKTsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVt
UHJldmlld0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSgh
IVtfY29uZmlndXJhdGlvbiBfc3lzdGVtUHJldmlld0VuYWJsZWRdKSk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KaW5kZXggNzdiMTlkZDg2ZGE1NTYxNTJiYTdkNjQ5Y2I2MzFlMTRiZDdk
ZTFiZi4uZDYwMmFhZjRmMjAxNDkyNTM1OGRlNTViM2M1NzEwZWNmOTk5OTlkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KQEAgLTk5LDYgKzk5LDE2IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5
IHRvRHJhZ0xpZnREZWxheShOU1VJbnRlZ2VyIHZhbHVlKQogICAgIHJldHVybiBfV0tEcmFnTGlm
dERlbGF5U2hvcnQ7CiB9CiAKK3N0YXRpYyBib29sIGRlZmF1bHRTaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpCit7CisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgc3RhdGljIGJvb2wgc2hvdWxkRGVjaWRlID0gbGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RL
VmVyc2lvbjo6Rmlyc3RUaGF0RGVjaWRlc1BvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2
aWV3KTsKKyAgICByZXR1cm4gc2hvdWxkRGVjaWRlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKK30KKwogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1
cmF0aW9uIHsKQEAgLTEyOSw2ICsxMzksNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiB7CiAgICAgQk9PTCBfdGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkOwog
ICAgIEJPT0wgX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkOwogICAgIEJPT0wgX3N5c3RlbVByZXZp
ZXdFbmFibGVkOworICAgIEJPT0wgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlj
a0xvb2tQcmV2aWV3OwogI2VuZGlmCiAKICAgICBCT09MIF9pbnZpc2libGVBdXRvcGxheU5vdFBl
cm1pdHRlZDsKQEAgLTIzNiw2ICsyNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9s
b25nUHJlc3NBY3Rpb25zRW5hYmxlZCA9IFlFUzsKICNlbmRpZgogICAgIF9zeXN0ZW1QcmV2aWV3
RW5hYmxlZCA9IE5POworICAgIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tM
b29rUHJldmlldyA9IGRlZmF1bHRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tM
b29rUHJldmlldygpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBfbWVk
aWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBXZWJDb3JlOjpTZXR0aW5n
czo6ZGVmYXVsdE1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCk7CkBA
IC0yOTEsNiArMzAzLDcgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2Rl
cgogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5h
YmxlZCBmb3JLZXk6QCJ0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQiXTsKICAgICBbY29k
ZXIgZW5jb2RlQm9vbDpzZWxmLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCBmb3JLZXk6QCJsb25n
UHJlc3NBY3Rpb25zRW5hYmxlZCJdOwogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX3N5c3Rl
bVByZXZpZXdFbmFibGVkIGZvcktleTpAInN5c3RlbVByZXZpZXdFbmFibGVkIl07CisgICAgW2Nv
ZGVyIGVuY29kZUJvb2w6c2VsZi5fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNr
TG9va1ByZXZpZXcgZm9yS2V5OkAic2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNr
TG9va1ByZXZpZXciXTsKICNlbHNlCiAgICAgW2NvZGVyIGVuY29kZUludGVnZXI6c2VsZi51c2Vy
SW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5IGZvcktleTpAInVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Q
b2xpY3kiXTsKICNlbmRpZgpAQCAtMzI1LDYgKzMzOCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKICAgICBzZWxmLl90ZXh0SW50ZXJhY3Rpb25HZXN0
dXJlc0VuYWJsZWQgPSBbY29kZXIgZGVjb2RlQm9vbEZvcktleTpAInRleHRJbnRlcmFjdGlvbkdl
c3R1cmVzRW5hYmxlZCJdOwogICAgIHNlbGYuX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkID0gW2Nv
ZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJsb25nUHJlc3NBY3Rpb25zRW5hYmxlZCJdOwogICAgIHNl
bGYuX3N5c3RlbVByZXZpZXdFbmFibGVkID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJzeXN0
ZW1QcmV2aWV3RW5hYmxlZCJdOworICAgIHNlbGYuX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxv
YWRpbmdRdWlja0xvb2tQcmV2aWV3ID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJzaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyJdOwogI2Vsc2UKICAgICBh
dXRvIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3lDYW5kaWRhdGUgPSBzdGF0aWNfY2FzdDxX
S1VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k+KFtjb2RlciBkZWNvZGVJbnRlZ2VyRm9yS2V5
OkAidXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSJdKTsKICAgICBpZiAodXNlckludGVyZmFj
ZURpcmVjdGlvblBvbGljeUNhbmRpZGF0ZSA9PSBXS1VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xp
Y3lDb250ZW50IHx8IHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3lDYW5kaWRhdGUgPT0gV0tV
c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5U3lzdGVtKQpAQCAtMzgxLDYgKzM5NSw3IEBAIC0g
KGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZpZ3VyYXRpb24tPl90ZXh0
SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQgPSBzZWxmLT5fdGV4dEludGVyYWN0aW9uR2VzdHVy
ZXNFbmFibGVkOwogICAgIGNvbmZpZ3VyYXRpb24tPl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCA9
IHNlbGYtPl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fc3lz
dGVtUHJldmlld0VuYWJsZWQgPSBzZWxmLT5fc3lzdGVtUHJldmlld0VuYWJsZWQ7CisgICAgY29u
ZmlndXJhdGlvbi0+X3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2
aWV3ID0gc2VsZi0+X3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2
aWV3OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNvbmZpZ3VyYXRpb24tPl91c2Vy
SW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5ID0gc2VsZi0+X3VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Q
b2xpY3k7CkBAIC03MzIsNiArNzQ3LDE2IEBAIC0gKHZvaWQpX3NldFN5c3RlbVByZXZpZXdFbmFi
bGVkOihCT09MKWVuYWJsZWQKICAgICBfc3lzdGVtUHJldmlld0VuYWJsZWQgPSBlbmFibGVkOwog
fQogCistIChCT09MKV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJl
dmlldworeworICAgIHJldHVybiBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNr
TG9va1ByZXZpZXc7Cit9CisKKy0gKHZvaWQpX3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxv
YWRpbmdRdWlja0xvb2tQcmV2aWV3OihCT09MKXNob3VsZERlY2lkZQoreworICAgIF9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyA9IHNob3VsZERlY2lkZTsK
K30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKEJPT0wpX2ludmlzaWJs
ZUF1dG9wbGF5Tm90UGVybWl0dGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmlu
ZGV4IDhjMTZlMzk4MGRkM2FhZmQ2YmU3NTgwYTI3MjkxNmUxYTU4MGI1YTMuLjc4MDI3ZmQ5ZjA3
MjFkZmUxNDI3N2YxMTQxMzA2NzBkMTQ1YzM2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oCkBAIC04Miw2ICs4Miw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBf
V0tEcmFnTGlmdERlbGF5KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRUZXh0
SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQ6KSBCT09MIF90ZXh0SW50ZXJhY3Rpb25HZXN0dXJl
c0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0TG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQ6KSBCT09MIF9sb25nUHJlc3NB
Y3Rpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKGlvcygxMi4wKSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRTeXN0ZW1QcmV2aWV3RW5hYmxlZDopIEJPT0wgX3N5c3RlbVBy
ZXZpZXdFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEyLjApKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3OikgQk9PTCBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9v
a1ByZXZpZXcgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogI2Vsc2UKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNob3dzVVJMc0luVG9vbFRpcHM6KSBCT09MIF9z
aG93c1VSTHNJblRvb2xUaXBzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNlcnZpY2VDb250cm9sc0VuYWJsZWQ6KSBCT09M
IF9zZXJ2aWNlQ29udHJvbHNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3Mu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaAppbmRleCAz
YjM1MGJlMDBiMzk4ZGQ5ZWY0ZWFjMThhMTUzNzQ5YTRiZTM1ZTEwLi5mNGQ0MjgxYWU1M2IxMWI1
NzlmYjQ0YmI3NTcxN2E2MjRhNWU5Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmVyc2lvbkNoZWNrcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjZGVmaW5lIERZTERfSU9T
X1ZFUlNJT05fRklSU1RfV0lUSF9QUk9DRVNTX1NXQVBfT05fQ1JPU1NfU0lURV9OQVZJR0FUSU9O
IDAKICNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NOQVBTSE9UX0FGVEVSX1ND
UkVFTl9VUERBVEVTIDAKICNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSEVSRV9ET1dO
TE9BRF9BVFRSSUJVVEVfRE9FU19OT1RfT1ZFUlJJREVfTkFWSUdBVElPTl9ERUxFR0FURSAwCisj
ZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fRklSU1RfVEhBVF9ERUNJREVTX1BPTElDWV9CRUZPUkVf
TE9BRElOR19RVUlDS19MT09LX1BSRVZJRVcgMAogI2RlZmluZSBEWUxEX01BQ09TX1ZFUlNJT05f
RklSU1RfV0lUSF9TTkFQU0hPVF9BRlRFUl9TQ1JFRU5fVVBEQVRFUyAwCiAjZGVmaW5lIERZTERf
TUFDT1NfVkVSU0lPTl9GSVJTVF9XSEVSRV9ET1dOTE9BRF9BVFRSSUJVVEVfRE9FU19OT1RfT1ZF
UlJJREVfTkFWSUdBVElPTl9ERUxFR0FURSAwCiAjZW5kaWYKQEAgLTYxLDYgKzYyLDcgQEAgZW51
bSBjbGFzcyBTREtWZXJzaW9uIDogdWludDMyX3QgewogICAgIEZpcnN0V2l0aFNuYXBzaG90QWZ0
ZXJTY3JlZW5VcGRhdGVzID0gRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NOQVBTSE9UX0FG
VEVSX1NDUkVFTl9VUERBVEVTLAogICAgIEZpcnN0V2hlcmVEb3dubG9hZEF0dHJpYnV0ZURvZXNO
b3RPdmVycmlkZU5hdmlnYXRpb25EZWxlZ2F0ZSA9IERZTERfSU9TX1ZFUlNJT05fRklSU1RfV0hF
UkVfRE9XTkxPQURfQVRUUklCVVRFX0RPRVNfTk9UX09WRVJSSURFX05BVklHQVRJT05fREVMRUdB
VEUsCiAgICAgRmlyc3RXaXRoRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uQVBJ
ID0gRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX0RFVklDRV9PUklFTlRBVElPTl9BTkRfTU9U
SU9OX1BFUk1JU1NJT05fQVBJLAorICAgIEZpcnN0VGhhdERlY2lkZXNQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldyA9IERZTERfSU9TX1ZFUlNJT05fRklSU1RfVEhBVF9ERUNJREVT
X1BPTElDWV9CRUZPUkVfTE9BRElOR19RVUlDS19MT09LX1BSRVZJRVcsCiAjZWxpZiBQTEFURk9S
TShNQUMpCiAgICAgRmlyc3RXaXRoTmV0d29ya0NhY2hlID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8x
MF8xMSwKICAgICBGaXJzdFdpdGhFeGNlcHRpb25zRm9yRHVwbGljYXRlQ29tcGxldGlvbkhhbmRs
ZXJDYWxscyA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiMmE5MjQxOGNlZDg2NmZlOTMzZDU4OWNlYWU4
ZGQ2ZTAzOGE3YWQzLi4xYzFlM2UyZjg3MDUzMDMzNzNmZjU3ZGY1NGU3OGU1OTM4Mjk2MWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5
LDYgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAs
IG1fcGFnZUlEIHsgcGFnZUlEIH0KIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91dGkpLCBtX3BhZ2VJRCk7CiB9CiAKIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkKQEAgLTU3LDYgKzU2LDEx
IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkKICAg
ICBwYXNzd29yZENhbGxiYWNrcygpLnJlbW92ZShtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91dGkpLCBtX3BhZ2VJ
RCk7Cit9CisKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGFBcnJh
eShDRkFycmF5UmVmIGRhdGFBcnJheSkKIHsKICAgICBDRkFycmF5QXBwbHlGdW5jdGlvbihkYXRh
QXJyYXksIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3VudChkYXRhQXJyYXkpKSwgW10oY29u
c3Qgdm9pZCogdmFsdWUsIHZvaWQqIGNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTJmMjUxZGIyYzNlNWQ4OGUwOGRmNTA2ODU0
MDRlOC4uZDVkMjZjZTg2Mzk2YTJiYTljYTMwZThlNzg2MWZlZTliY2NhMTUzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJy
YXkoQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGU2OWYyOGJkZmY3YTkwOGZlMTMzMzE0
ZmJjNzM0NDVhZmM3YmVlMi4uODc3Zjg3MmZjYzAxMjY2M2I1MmVmMGEzZjMyMzdhNzc0MWZhYTY5
NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUwIEBACisyMDE5LTAzLTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBXZWJLaXQgc2hvdWxkIGNvbnN1bHQgdGhlIG5hdmlnYXRpb24gcmVz
cG9uc2UgcG9saWN5IGRlbGVnYXRlIGJlZm9yZSBwcmV2aWV3aW5nIGEgUXVpY2tMb29rIGRvY3Vt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY0
MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MjkzMzA1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3Q29udmVydGVyLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xvYWRlci5jcHAuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1F1aWNrTG9vay5tbToKKyAgICAgICAgKHJlYWRGaWxlKToKKyAgICAgICAg
KC1bUXVpY2tMb29rRGVsZWdhdGUgaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cmVzcG9uc2VQb2xp
Y3k6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIGluaXRXaXRoRXhwZWN0ZWRGaWxl
VVJMOnByZXZpZXdNSU1FVHlwZTpyZXNwb25zZVBvbGljeTpdKToKKyAgICAgICAgKC1bUXVpY2tM
b29rRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVj
aXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfd2ViVmlldzpk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOnV0
aTpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6XSk6CisgICAgICAgICgtW1F1aWNrTG9v
a0RlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6
XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENy
YXNoOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpd
KToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNw
b25zZTpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2Vp
dmVEYXRhOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAg
ICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6Cisg
ICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpdKToKKyAgICAg
ICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgdmVyaWZ5RG93bmxvYWRdKToKKyAgICAgICAgKHJ1blRl
c3QpOgorICAgICAgICAocnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcpOgorICAgICAgICAocnVu
VGVzdERlY2lkZUFmdGVyTG9hZGluZyk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bUXVp
Y2tMb29rQXN5bmNEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1F1aWNrTG9va1Bhc3N3b3JkRGVs
ZWdhdGUgX3dlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDpdKToK
KyAgICAgICAgKC1bUXVpY2tMb29rRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hM
b2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW1F1aWNrTG9va05hdmlnYXRpb25EZWxlZ2F0ZSBf
d2ViVmlldzpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZp
bGVOYW1lOnV0aTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rTmF2aWdhdGlvbkRl
bGVnYXRlIF93ZWJWaWV3OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUg
d2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlj
a0xvb2tBc3luY05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1
aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6dXRpOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtRdWlja0xvb2tBc3luY05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5p
c2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tEZWNpZGVQb2xp
Y3lEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNp
c2lvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9va0RlY2lkZVBvbGlj
eURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9va0RlY2lkZVBvbGljeURlbGVnYXRlIF93
ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlja0xv
b2tQYXNzd29yZE5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlld0RpZFJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50Ol0pOiBEZWxldGVkLgorCiAyMDE5LTAzLTI4ICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIHdl
YmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGFfZmluaXNoIGNhbiByZXR1cm4gTlVMTCB3aXRob3V0
IHNldHRpbmcgZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzgxODU5MzhiZTgyZTQ1
NTgzNmUyYzQ4YzJjYmZiNjgzYzUwOTU0MC4uMGY5M2MyNjU5ZTdmNDA1OGFmNWU1NzdiMWY2ODYy
NmE5MTBlMTU3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcxNiw3ICs3MTYsNyBAQAog
CQlBMTgwQzBGQTFFRTY3REYwMDA0NjhGNDcgLyogUnVuT3BlblBhbmVsLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MEMwRjkxRUU2N0RGMDAwNDY4
RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLzsgfTsKIAkJQTFDNEZCNzMxQkFDRDFDQTAwMzc0MkQw
IC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyAqLzsg
fTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
REY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0g
Ki87IH07Ci0JCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUMxMTg3MUY0
MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLzsgfTsKKwkJQTFFQzExODgxRjQy
NTQxMjAwRDAxNDZFIC8qIFByZXZpZXdDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8qIFBy
ZXZpZXdDb252ZXJ0ZXIuY3BwICovOyB9OwogCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyog
RmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi87IH07CiAJ
CUE1N0EzNEYyMTZBRjZCMkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRv
d0NoYW5nZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgKi87IH07CiAJCUE1N0Q1NEYzMUYzMzhDMzYwMEE5N0FB
NyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQu
Y3BwICovOyB9OwpAQCAtMTk4Nyw3ICsxOTg3LDcgQEAKIAkJQTFDNEZCNkMxQkFDQ0U1MDAwMzc0
MkQwIC8qIFF1aWNrTG9vay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFF1aWNrTG9vay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNEZCNzIx
QkFDRDFCNzAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IHBhZ2VzLnBhZ2VzOyBwYXRoID0g
aW9zL3BhZ2VzLnBhZ2VzOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUExREY3NDMw
MUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExRUMxMTg3MUY0MjU0MTIw
MEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZpZXdM
b2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUVDMTE4NzFGNDI1NDEy
MDBEMDE0NkUgLyogUHJldmlld0NvbnZlcnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2
aWV3Q29udmVydGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGREZEMkUx
OUMyODhCQjAwNTE0OEE0IC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5
NyAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdBMzRFRjE2
QUY2NzcyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZVZpc2liaWxpdHlT
dGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzA4NSw3ICszMDg1LDcgQEAKIAkJQTFFQzExODUxRjQyNTNEOTAwRDAxNDZFIC8qIGlvcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTFFQzExODcxRjQy
NTQxMjAwRDAxNDZFIC8qIFByZXZpZXdMb2FkZXIuY3BwICovLAorCQkJCUExRUMxMTg3MUY0MjU0
MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVydGVyLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
aW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQyNzMsNyArNDI3Myw3IEBACiAJ
CQkJN0MxQUY3OTUxRThEQ0JBQjAwMjY0NUI5IC8qIFByZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQjFBNDExQUU2MDA0NDdDNEMgLyogUHJldmVudEVt
cHR5VXNlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjJDMUE0MTFCMTAwMDQ0
N0M0QyAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVy
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBDMUE0MTFBRTYwMDQ0N0M0QyAvKiBQ
cml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg4MkYwMzIxMDEwQzBEMDAyRkYyODggLyogUHJvY2Vz
c1ByZVdhcm1pbmcubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0NvbnZlcnRlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ3MjFiZGI1YTA4MjA3YTc2OGE4ZjU5N2YwYjY4NDA0YmM0ODRlNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFVTRShRVUlDS19MT09LKQor
CisjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVydGVyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK1RFU1QoUXVpY2tMb29rLCBTaG91bGRDcmVhdGVGb3JNSU1FVHlw
ZSkKK3sKKyAgICAvLyBGSVhNRTogRXhwYW5kIHRoaXMgdG8gY292ZXIgYWxsIHRoZSBNSU1FIHR5
cGVzIHdlIGV4cGVjdCB0byBzdXBwb3J0LgorICAgIEVYUEVDVF9GQUxTRShQcmV2aWV3Q29udmVy
dGVyOjpzdXBwb3J0c01JTUVUeXBlKFN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKFByZXZp
ZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUoZW1wdHlTdHJpbmcoKSkpOworICAgIEVYUEVD
VF9UUlVFKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUoImFwcGxpY2F0aW9uL3Zu
ZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQuMTIiX3MpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNF
KFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvaW9zL1ByZXZpZXdMb2FkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2lvcy9QcmV2aWV3TG9hZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGYxZWFkZDhjODYwZGY5YjgwMDNiOGQyZDYzMmIyYTZkYWIwYTE5MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvaW9zL1ByZXZpZXdMb2FkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIFVTRShRVUlDS19MT09LKQotCi0jaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3
TG9hZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1QoUXVpY2tM
b29rLCBTaG91bGRDcmVhdGVGb3JNSU1FVHlwZSkKLXsKLSAgICAvLyBGSVhNRTogRXhwYW5kIHRo
aXMgdG8gY292ZXIgYWxsIHRoZSBNSU1FIHR5cGVzIHdlIGV4cGVjdCB0byBzdXBwb3J0LgotICAg
IEVYUEVDVF9GQUxTRShQcmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShTdHJp
bmcoKSkpOwotICAgIEVYUEVDVF9GQUxTRShQcmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JN
SU1FVHlwZShlbXB0eVN0cmluZygpKSk7Ci0gICAgRVhQRUNUX1RSVUUoUHJldmlld0xvYWRlcjo6
c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5t
YWNyb0VuYWJsZWQuMTIiX3MpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQot
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFFVSUNLX0xPT0spCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmlu
ZGV4IDkzZDA3ZmE5YWE1NjBlNmQyZjUxMTZkMTRiMDMyNmUwOTVmNWRkYmIuLjg4ZDIxYjQ0MzZl
MzY0NGYyOGQ3YzhkZDYwZjg2MzU1ZWE2MjVjZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNDIgKzI5LDEwNSBA
QAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2lt
cG9ydCA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlVGhyZWFkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJVSUtpdFN1cHBvcnQuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25s
b2FkLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogc3RhdGljIGJvb2wg
aXNEb25lOwotc3RhdGljIGJvb2wgZGlkU3RhcnRRdWlja0xvb2tMb2FkOwotc3RhdGljIGJvb2wg
ZGlkRmluaXNoUXVpY2tMb29rTG9hZDsKK3N0YXRpYyBib29sIGRvd25sb2FkSXNEb25lOwogCi1z
dGF0aWMgY29uc3QgTlNVSW50ZWdlciBleHBlY3RlZEZpbGVTaXplID0gMjc0MTQzOwotc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgZXhwZWN0ZWRGaWxlTmFtZSA9IEAicGFnZXMucGFnZXMiOwotc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgZXhwZWN0ZWRVVEkgPSBAImNvbS5hcHBsZS5pd29yay5wYWdl
cy5zZmZwYWdlcyI7Ci1zdGF0aWMgTlNVUkxSZXF1ZXN0ICogY29uc3QgcGFnZXNEb2N1bWVudFJl
cXVlc3QgPSBbW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAicGFnZXMiIHdpdGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0gcmV0YWluXTsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgPSBAImFwcGxpY2F0aW9u
L3BkZiI7CitzdGF0aWMgTlNVUkwgKiBjb25zdCBwYWdlc0RvY3VtZW50VVJMID0gW1tOU0J1bmRs
ZS5tYWluQnVuZGxlIFVSTEZvclJlc291cmNlOkAicGFnZXMiIHdpdGhFeHRlbnNpb246QCJwYWdl
cyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXSByZXRhaW5dOworCitA
aW50ZXJmYWNlIFF1aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZSwgX1dLRG93bmxvYWREZWxlZ2F0ZT4KKy0gKGluc3RhbmNldHlwZSlpbml0IE5T
X1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOihO
U1VSTCAqKWZpbGVVUkwgcmVzcG9uc2VQb2xpY3k6KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
KXJlc3BvbnNlUG9saWN5OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRXhwZWN0ZWRGaWxlVVJM
OihOU1VSTCAqKWZpbGVVUkwgcHJldmlld01JTUVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlIHJl
c3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSlyZXNwb25zZVBvbGljeTsK
Ky0gKHZvaWQpdmVyaWZ5RG93bmxvYWQ7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGRp
ZFN0YXJ0UXVpY2tMb29rTG9hZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGRpZEZpbmlz
aFF1aWNrTG9va0xvYWQ7CiAKLUBpbnRlcmZhY2UgUXVpY2tMb29rTmF2aWdhdGlvbkRlbGVnYXRl
IDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4KIEBlbmQKIAotQGltcGxl
bWVudGF0aW9uIFF1aWNrTG9va05hdmlnYXRpb25EZWxlZ2F0ZQorQGltcGxlbWVudGF0aW9uIFF1
aWNrTG9va0RlbGVnYXRlIHsKK0Bwcm90ZWN0ZWQKKyAgICBOU1VJbnRlZ2VyIF9kb3dubG9hZEZp
bGVTaXplOworICAgIE5TVUludGVnZXIgX2V4cGVjdGVkRmlsZVNpemU7CisgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfZXhwZWN0ZWRGaWxlTmFtZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9l
eHBlY3RlZEZpbGVUeXBlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2V4cGVjdGVkTUlNRVR5
cGU7CisgICAgUmV0YWluUHRyPE5TVVJMPiBfZG93bmxvYWREZXN0aW5hdGlvblVSTDsKKyAgICBX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfcmVzcG9uc2VQb2xpY3k7Cit9CisKK3N0YXRpYyB2
b2lkIHJlYWRGaWxlKE5TVVJMICpmaWxlVVJMLCBOU1VJbnRlZ2VyJiBmaWxlU2l6ZSwgUmV0YWlu
UHRyPE5TU3RyaW5nPiYgZmlsZU5hbWUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZpbGVUeXBlLCBS
ZXRhaW5QdHI8TlNTdHJpbmc+JiBtaW1lVHlwZSkKK3sKKyAgICBpZiAoTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzID0gW05TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgYXR0cmlidXRlc09mSXRl
bUF0UGF0aDpmaWxlVVJMLnBhdGggZXJyb3I6bmlsXSkKKyAgICAgICAgZmlsZVNpemUgPSBbYXR0
cmlidXRlc1tOU0ZpbGVTaXplXSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CisKKyAgICBmaWxlTmFt
ZSA9IGZpbGVVUkwubGFzdFBhdGhDb21wb25lbnQ7CisKKyAgICBOU1N0cmluZyAqdHlwZUlkZW50
aWZpZXIgPSBuaWw7CisgICAgaWYgKFtmaWxlVVJMIGdldFJlc291cmNlVmFsdWU6JnR5cGVJZGVu
dGlmaWVyIGZvcktleTpOU1VSTFR5cGVJZGVudGlmaWVyS2V5IGVycm9yOm5pbF0pCisgICAgICAg
IGZpbGVUeXBlID0gdHlwZUlkZW50aWZpZXI7CisKKyAgICBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZUlk
ZW50aWZpZXIsIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRXhwZWN0ZWRGaWxlVVJMOihOU1VSTCAqKWZpbGVVUkwgcmVzcG9uc2VQb2xpY3k6KFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KXJlc3BvbnNlUG9saWN5Cit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZWFkRmlsZShm
aWxlVVJMLCBfZXhwZWN0ZWRGaWxlU2l6ZSwgX2V4cGVjdGVkRmlsZU5hbWUsIF9leHBlY3RlZEZp
bGVUeXBlLCBfZXhwZWN0ZWRNSU1FVHlwZSk7CisKKyAgICBfcmVzcG9uc2VQb2xpY3kgPSByZXNw
b25zZVBvbGljeTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRXhwZWN0ZWRGaWxlVVJMOihOU1VSTCAqKWZpbGVVUkwgcHJldmlld01JTUVUeXBlOihOU1N0
cmluZyAqKW1pbWVUeXBlIHJlc3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSlyZXNwb25zZVBvbGljeQoreworICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0V2l0aEV4cGVj
dGVkRmlsZVVSTDpmaWxlVVJMIHJlc3BvbnNlUG9saWN5OnJlc3BvbnNlUG9saWN5XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgCisgICAgX2V4cGVjdGVkTUlNRVR5cGUgPSBtaW1lVHlwZTsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgRVhQRUNUX1RSVUUo
bmF2aWdhdGlvblJlc3BvbnNlLmNhblNob3dNSU1FVHlwZSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KF9leHBlY3RlZEZpbGVOYW1lLmdldCgpLCBuYXZpZ2F0aW9uUmVzcG9uc2UucmVzcG9uc2UuVVJM
Lmxhc3RQYXRoQ29tcG9uZW50KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5
cGUuZ2V0KCksIG5hdmlnYXRpb25SZXNwb25zZS5yZXNwb25zZS5NSU1FVHlwZSk7CisgICAgZGVj
aXNpb25IYW5kbGVyKF9yZXNwb25zZVBvbGljeSk7Cit9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZVdpdGhGaWxlTmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSB1dGk6KE5TU3RyaW5nICopdXRp
CiB7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRmlsZU5hbWUsIGZpbGVOYW1lKTsKLSAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRVVEksIHV0aSk7Ci0gICAgZGlkU3RhcnRRdWlja0xv
b2tMb2FkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkRmlsZU5hbWUuZ2V0
KCksIGZpbGVOYW1lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkRmlsZVR5cGUuZ2V0
KCksIHV0aSk7CisgICAgX2RpZFN0YXJ0UXVpY2tMb29rTG9hZCA9IFlFUzsKIH0KIAogLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZTooTlNEYXRhICopZG9jdW1lbnREYXRhCiB7Ci0gICAgRVhQRUNU
X0VRKGV4cGVjdGVkRmlsZVNpemUsIGRvY3VtZW50RGF0YS5sZW5ndGgpOwotICAgIGRpZEZpbmlz
aFF1aWNrTG9va0xvYWQgPSB0cnVlOworICAgIEVYUEVDVF9FUShfZXhwZWN0ZWRGaWxlU2l6ZSwg
ZG9jdW1lbnREYXRhLmxlbmd0aCk7CisgICAgX2RpZEZpbmlzaFF1aWNrTG9va0xvYWQgPSBZRVM7
CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZp
Z2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCkBAIC03MiwxMjggKzEzNSwyMjMgQEAg
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246
KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXQKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCi1AZW5kCist
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKill
cnJvcgoreworICAgIGlzRG9uZSA9IHRydWU7Cit9CiAKLUBpbnRlcmZhY2UgUXVpY2tMb29rQXN5
bmNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPgotQGVuZAorLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDooV0tXZWJWaWV3
ICopd2ViVmlldworeworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CiAKLUBp
bXBsZW1lbnRhdGlvbiBRdWlja0xvb2tBc3luY05hdmlnYXRpb25EZWxlZ2F0ZQorLSAodm9pZClf
ZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIEVYUEVDVF9X
S19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgZG93bmxvYWQucmVxdWVzdC5VUkwubGFz
dFBhdGhDb21wb25lbnQpOworfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25z
ZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX2Rvd25sb2FkOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAq
KXJlc3BvbnNlCiB7Ci0gICAgaW50NjRfdCBkZWZlcnJlZFdhaXRUaW1lID0gMTAwICogTlNFQ19Q
RVJfTVNFQzsKLSAgICBkaXNwYXRjaF90aW1lX3Qgd2hlbiA9IGRpc3BhdGNoX3RpbWUoRElTUEFU
Q0hfVElNRV9OT1csIGRlZmVycmVkV2FpdFRpbWUpOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhw
ZWN0ZWRGaWxlTmFtZS5nZXQoKSwgcmVzcG9uc2UuVVJMLmxhc3RQYXRoQ29tcG9uZW50KTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5cGUuZ2V0KCksIHJlc3BvbnNlLk1JTUVU
eXBlKTsKK30KIAotICAgIGRpc3BhdGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUFsbG93KTsKLSAgICB9KTsKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGgKK3sKKyAgICBfZG93bmxvYWRG
aWxlU2l6ZSArPSBsZW5ndGg7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxl
TmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSB1dGk6KE5TU3RyaW5nICopdXRpCistICh2b2lkKV9k
b3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXhwZWN0ZWRGaWxlTmFtZSwgZmlsZU5hbWUpOwotICAgIEVYUEVDVF9XS19TVFJF
UShleHBlY3RlZFVUSSwgdXRpKTsKLSAgICBkaWRTdGFydFF1aWNrTG9va0xvYWQgPSB0cnVlOwor
ICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgZmlsZW5hbWUpOwor
ICAgIAorICAgIE5TVVJMICp0ZW1wRGlyZWN0b3J5VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CisgICAgX2Rvd25sb2Fk
RGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVuYW1lIHJlbGF0aXZl
VG9VUkw6dGVtcERpcmVjdG9yeVVSTF07CisgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBbX2Rv
d25sb2FkRGVzdGluYXRpb25VUkwgcGF0aF0pOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lOihOU0RhdGEgKilkb2N1bWVudERhdGEKKy0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkRmlsZVNpemUs
IGRvY3VtZW50RGF0YS5sZW5ndGgpOwotICAgIGRpZEZpbmlzaFF1aWNrTG9va0xvYWQgPSB0cnVl
OworICAgIEVYUEVDVF9FUShfZXhwZWN0ZWRGaWxlU2l6ZSwgX2Rvd25sb2FkRmlsZVNpemUpOwor
ICAgIGRvd25sb2FkSXNEb25lID0gdHJ1ZTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRp
b24KKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgogewotICAgIGlzRG9uZSA9IHRydWU7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAodm9pZClfZG93bmxvYWREaWRDYW5jZWw6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCistICh2b2lkKXZlcmlmeURvd25sb2FkCit7CisgICAgRVhQRUNUX1RSVUUoW05T
RmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpbX2Rvd25sb2FkRGVz
dGluYXRpb25VUkwgcGF0aF1dKTsKKworICAgIE5TVUludGVnZXIgZG93bmxvYWRGaWxlU2l6ZTsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRvd25sb2FkRmlsZU5hbWU7CisgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBkb3dubG9hZEZpbGVUeXBlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZG93
bmxvYWRNSU1FVHlwZTsKKyAgICByZWFkRmlsZShfZG93bmxvYWREZXN0aW5hdGlvblVSTC5nZXQo
KSwgZG93bmxvYWRGaWxlU2l6ZSwgZG93bmxvYWRGaWxlTmFtZSwgZG93bmxvYWRGaWxlVHlwZSwg
ZG93bmxvYWRNSU1FVHlwZSk7CisKKyAgICBFWFBFQ1RfRVEoX2V4cGVjdGVkRmlsZVNpemUsIGRv
d25sb2FkRmlsZVNpemUpOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5n
ZXQoKSwgZG93bmxvYWRGaWxlTmFtZS5nZXQoKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBl
Y3RlZEZpbGVUeXBlLmdldCgpLCBkb3dubG9hZEZpbGVUeXBlLmdldCgpKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5cGUuZ2V0KCksIGRvd25sb2FkTUlNRVR5cGUuZ2V0KCkp
OwogfQogCiBAZW5kCiAKLXN0YXRpYyB2b2lkIHJ1blRlc3QoQ2xhc3MgbmF2aWdhdGlvbkRlbGVn
YXRlQ2xhc3MsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHJ1blRlc3QoUXVp
Y2tMb29rRGVsZWdhdGUgKmRlbGVnYXRlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIEJPT0wgc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZykKIHsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdh
dGUgPSBhZG9wdE5TKFtbbmF2aWdhdGlvbkRlbGVnYXRlQ2xhc3MgYWxsb2NdIGluaXRdKTsKLSAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
XTsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IGluaXRdKTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZGVsZWdhdGVd
OworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0U2hvdWxkRGVjaWRl
UG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6c2hvdWxkRGVjaWRlUG9saWN5QmVm
b3JlTG9hZGluZ107CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bv
b2wuZ2V0KCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLVRFU1QoUXVpY2tMb29rLCBOYXZpZ2F0aW9u
RGVsZWdhdGUpCitzdGF0aWMgdm9pZCBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhRdWlja0xv
b2tEZWxlZ2F0ZSAqZGVsZWdhdGUsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICBydW5U
ZXN0KFtRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUgY2xhc3NdLCBwYWdlc0RvY3VtZW50UmVx
dWVzdCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkU3RhcnRRdWlja0xvb2tMb2FkKTsKLSAgICBFWFBF
Q1RfVFJVRShkaWRGaW5pc2hRdWlja0xvb2tMb2FkKTsKKyAgICBydW5UZXN0KGRlbGVnYXRlLCBy
ZXF1ZXN0LCBZRVMpOwogfQogCi1URVNUKFF1aWNrTG9vaywgQXN5bmNOYXZpZ2F0aW9uRGVsZWdh
dGUpCitzdGF0aWMgdm9pZCBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKFF1aWNrTG9va0RlbGVn
YXRlICpkZWxlZ2F0ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIHJ1blRlc3QoW1F1
aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIGNsYXNzXSwgcGFnZXNEb2N1bWVudFJlcXVl
c3QpOwotICAgIEVYUEVDVF9UUlVFKGRpZFN0YXJ0UXVpY2tMb29rTG9hZCk7Ci0gICAgRVhQRUNU
X1RSVUUoZGlkRmluaXNoUXVpY2tMb29rTG9hZCk7CisgICAgcnVuVGVzdChkZWxlZ2F0ZSwgcmVx
dWVzdCwgTk8pOwogfQogCi1AaW50ZXJmYWNlIFF1aWNrTG9va0RlY2lkZVBvbGljeURlbGVnYXRl
IDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorVEVTVChRdWlja0xvb2ssIEFsbG93
UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpw
YWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwg
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQ
RUNUX1RSVUUoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9U
UlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7Cit9CisKK1RFU1QoUXVpY2tM
b29rLCBBbGxvd1Jlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKK3sKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVk
RmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJl
dmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxs
b3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1Rf
VFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUo
W2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKK30KKworQGludGVyZmFjZSBRdWlj
a0xvb2tBc3luY0RlbGVnYXRlIDogUXVpY2tMb29rRGVsZWdhdGUKIEBlbmQKIAotQGltcGxlbWVu
dGF0aW9uIFF1aWNrTG9va0RlY2lkZVBvbGljeURlbGVnYXRlCitAaW1wbGVtZW50YXRpb24gUXVp
Y2tMb29rQXN5bmNEZWxlZ2F0ZQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25z
ZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWwpOworICAgIGludDY0X3QgZGVmZXJy
ZWRXYWl0VGltZSA9IDEwMCAqIE5TRUNfUEVSX01TRUM7CisgICAgZGlzcGF0Y2hfdGltZV90IHdo
ZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZlcnJlZFdhaXRUaW1lKTsK
KworICAgIGRpc3BhdGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfcmVzcG9uc2VQb2xpY3kpOworICAgIH0pOwogfQog
Ci0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvcgorQGVuZAorCitURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jlc3BvbnNlQmVmb3Jl
TG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgaXNEb25lID0gdHJ1ZTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVn
YXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxd
KTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKIH0KIAot
LSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDooV0tXZWJWaWV3ICopd2ViVmlldwor
VEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7
Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRG
aWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2
aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxv
d10pOworICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9U
UlVFKFtkZWxlZ2F0ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsKKyAgICBFWFBFQ1RfVFJVRShb
ZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwogfQogCi1AZW5kCitURVNUKFF1aWNr
TG9vaywgQ2FuY2VsUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKK3sKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVj
dGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVs
ZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVS
TF0pOworICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7
CisgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7Cit9
CiAKLUBpbnRlcmZhY2UgUXVpY2tMb29rRnJhbWVMb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8V2Vi
RnJhbWVMb2FkRGVsZWdhdGU+Ci1AZW5kCitURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VB
ZnRlckxvYWRpbmdQcmV2aWV3KQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVp
Y2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1l
bnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9u
c2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsKKyAgICBydW5UZXN0
RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlk
U3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlz
aFF1aWNrTG9va0xvYWRdKTsKK30KIAotQGltcGxlbWVudGF0aW9uIFF1aWNrTG9va0ZyYW1lTG9h
ZERlbGVnYXRlCitURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQ
cmV2aWV3KQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9u
c2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAg
ICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtk
ZWxlZ2F0ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW2RlbGVn
YXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKIAotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQorICAgIFV0
aWw6OnJ1bigmZG93bmxvYWRJc0RvbmUpOworICAgIFtkZWxlZ2F0ZSB2ZXJpZnlEb3dubG9hZF07
Cit9CisKK1RFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmll
dykKIHsKLSAgICBpc0RvbmUgPSB0cnVlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
UXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9j
dW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVz
cG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsK
KyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShb
ZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVn
YXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKIH0KIAorQGludGVyZmFjZSBRdWlja0xvb2tQ
YXNzd29yZERlbGVnYXRlIDogUXVpY2tMb29rRGVsZWdhdGUKIEBlbmQKIAotVEVTVChRdWlja0xv
b2ssIENhbmNlbE5hdmlnYXRpb25BZnRlclJlc3BvbnNlKQorQGltcGxlbWVudGF0aW9uIFF1aWNr
TG9va1Bhc3N3b3JkRGVsZWdhdGUKKworLSAodm9pZClfd2ViVmlld0RpZFJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcnVuVGVz
dChbUXVpY2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgY2xhc3NdLCBwYWdlc0RvY3VtZW50UmVx
dWVzdCk7CisgICAgaXNEb25lID0gdHJ1ZTsKIH0KIAotQGludGVyZmFjZSBRdWlja0xvb2tQYXNz
d29yZE5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tQYXNzd29yZE5hdmlnYXRp
b25EZWxlZ2F0ZQorVEVTVChRdWlja0xvb2ssIFJlcXVlc3RQYXNzd29yZEJlZm9yZUxvYWRpbmdQ
cmV2aWV3KQoreworICAgIE5TVVJMICpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50VVJMID0gW05T
QnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJwYXNzd29yZC1wcm90ZWN0ZWQiIHdp
dGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va1Bhc3N3b3JkRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhc3N3b3JkUHJvdGVjdGVkRG9j
dW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10p
OworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRVUkxdKTsKK30K
IAotLSAodm9pZClfd2ViVmlld0RpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
OihXS1dlYlZpZXcgKil3ZWJWaWV3CitURVNUKFF1aWNrTG9vaywgUmVxdWVzdFBhc3N3b3JkQWZ0
ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBpc0RvbmUgPSB0cnVlOworICAgIE5TVVJMICpwYXNz
d29yZFByb3RlY3RlZERvY3VtZW50VVJMID0gW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVz
b3VyY2U6QCJwYXNzd29yZC1wcm90ZWN0ZWQiIHdpdGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1F1aWNrTG9va1Bhc3N3b3JkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBh
Z2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdh
dGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFzc3dvcmRQcm90ZWN0ZWRE
b2N1bWVudFVSTF0pOwogfQogCitAaW50ZXJmYWNlIFF1aWNrTG9va0ZyYW1lTG9hZERlbGVnYXRl
IDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVnYXRlPgogQGVuZAogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCitAaW1wbGVtZW50YXRpb24gUXVpY2tM
b29rRnJhbWVMb2FkRGVsZWdhdGUKIAotVEVTVChRdWlja0xvb2ssIERpZFJlcXVlc3RQYXNzd29y
ZE5hdmlnYXRpb25EZWxlZ2F0ZSkKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBk
aWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKLSAgICBOU1VSTFJlcXVl
c3QgKnBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFzc3dv
cmQtcHJvdGVjdGVkIiB3aXRoRXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIHJ1blRlc3QoW1F1aWNrTG9va1Bhc3N3b3JkTmF2
aWdhdGlvbkRlbGVnYXRlIGNsYXNzXSwgcGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFJlcXVlc3Qp
OworICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKLSNlbmRpZgorQGVuZAogCiBURVNUKFF1aWNrTG9v
aywgTGVnYWN5UXVpY2tMb29rQ29udGVudCkKIHsKQEAgLTIxMSwxOCArMzY5LDIzIEBAIFRFU1Qo
UXVpY2tMb29rLCBMZWdhY3lRdWlja0xvb2tDb250ZW50KQogCiAgICAgV2ViRnJhbWUgKm1haW5G
cmFtZSA9IFt3ZWJWaWV3IG1haW5GcmFtZV07CiAKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBb
bWFpbkZyYW1lIGxvYWRSZXF1ZXN0OnBhZ2VzRG9jdW1lbnRSZXF1ZXN0XTsKKyAgICBbbWFpbkZy
YW1lIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVu
dFVSTF1dOwogICAgIFV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAK
KyAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkRmlsZVNpemU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBleHBlY3RlZEZpbGVOYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxl
VHlwZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVjdGVkTUlNRVR5cGU7CisgICAgcmVh
ZEZpbGUocGFnZXNEb2N1bWVudFVSTCwgZXhwZWN0ZWRGaWxlU2l6ZSwgZXhwZWN0ZWRGaWxlTmFt
ZSwgZXhwZWN0ZWRGaWxlVHlwZSwgZXhwZWN0ZWRNSU1FVHlwZSk7CisKICAgICBOU0RpY3Rpb25h
cnkgKnF1aWNrTG9va0NvbnRlbnQgPSBtYWluRnJhbWUuZGF0YVNvdXJjZS5fcXVpY2tMb29rQ29u
dGVudDsKICAgICBOU1N0cmluZyAqZmlsZVBhdGggPSBxdWlja0xvb2tDb250ZW50W1dlYlF1aWNr
TG9va0ZpbGVOYW1lS2V5XTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZVBhdGhdKTsKLSAgICBFWFBFQ1RfV0tfU1RS
RVEoZXhwZWN0ZWRGaWxlTmFtZSwgZmlsZVBhdGgubGFzdFBhdGhDb21wb25lbnQpOwotICAgIEVY
UEVDVF9XS19TVFJFUShleHBlY3RlZFVUSSwgcXVpY2tMb29rQ29udGVudFtXZWJRdWlja0xvb2tV
VElLZXldKTsKKyAgICBFWFBFQ1RfVFJVRShbTlNGaWxlTWFuYWdlci5kZWZhdWx0TWFuYWdlciBm
aWxlRXhpc3RzQXRQYXRoOmZpbGVQYXRoXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVk
RmlsZU5hbWUuZ2V0KCksIGZpbGVQYXRoLmxhc3RQYXRoQ29tcG9uZW50KTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXhwZWN0ZWRGaWxlVHlwZS5nZXQoKSwgcXVpY2tMb29rQ29udGVudFtXZWJRdWlj
a0xvb2tVVElLZXldKTsKIAotICAgIE5TRGljdGlvbmFyeSAqZmlsZUF0dHJpYnV0ZXMgPSBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVBh
dGggZXJyb3I6bmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKmZpbGVBdHRyaWJ1dGVzID0gW05TRmls
ZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgYXR0cmlidXRlc09mSXRlbUF0UGF0aDpmaWxlUGF0aCBl
cnJvcjpuaWxdOwogICAgIEVYUEVDVF9FUShleHBlY3RlZEZpbGVTaXplLCBbZmlsZUF0dHJpYnV0
ZXNbTlNGaWxlU2l6ZV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdKTsKIAogICAgIGlzRG9uZSA9IGZh
bHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366373</attachid>
            <date>2019-03-30 21:42:35 -0700</date>
            <delta_ts>2019-03-30 22:08:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196433-20190330214234.patch</filename>
            <type>text/plain</type>
            <size>65652</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjNTc3ZWI1ZDQxNDQ2NTUwZDExNDRi
YTkyMDBjOGRmODkxZWQ2ZmQuLmJkN2Q3MmE3YjFhYWM3NGU5MGYyZTBlOWQ4ZGY2M2NlYzJkMzk3
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0aGUgbmF2
aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcgYSBRdWlj
a0xvb2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0
cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJEZXN0cm95ZWQ6Om9wZXJhdG9yLT4pOgorICAg
ICAgICAoV1RGOjpOZXZlckRlc3Ryb3llZDo6b3BlcmF0b3ItPiBjb25zdCk6CisKIDIwMTktMDMt
MjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW4t
Zml4IHRoZSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc2NDI1MDJiMzhmMzkyM2M1NmNiNjJlNGM4MTE2
MWU4NjhkYmM3NTAuLjY1OTk3MmQwYjc0YjU1YmY3YzU5ZDUyZWU4NDU3ZmY4YjAxNDFhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxOS0wMy0zMCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gV2ViS2l0IHNob3VsZCBjb25zdWx0IHRoZSBu
YXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSBiZWZvcmUgcHJldmlld2luZyBhIFF1
aWNrTG9vayBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2NDMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTI5MzMwNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFJlc291cmNl
TG9hZGVyIHdvdWxkIGVuY291bnRlciBhIHJlc3BvbnNlIHdpdGggYSBNSU1FIHR5cGUgdGhhdCBR
dWlja0xvb2sgc3VwcG9ydHMsIHRoZQorICAgICAgICByZXNwb25zZSB3b3VsZCBiZSBpbXBsaWNp
dGx5IGFsbG93ZWQgYW5kIGEgUXVpY2tMb29rIHByZXZpZXcgd291bGQgYmUgaW1tZWRpYXRlbHkg
Z2VuZXJhdGVkLgorICAgICAgICBXaGVuIHRoZSBnZW5lcmF0aW9uIGZpbmlzaGVkIHRoZSBjbGll
bnQncyBuYXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSB3b3VsZCBiZQorICAgICAg
ICBub3RpZmllZCBvZiB0aGUgcHJldmlldyByZXNwb25zZSAobm90IHRoZSBvcmlnaW5hbCBIVFRQ
IHJlc3BvbnNlKS4gTm90YWJseSwgdGhlIHByZXZpZXcKKyAgICAgICAgcmVzcG9uc2UgaGFzIGEg
VVJMIHNjaGVtZSBvZiAieC1hcHBsZS1xbC1pZCIsIGRvZXMgbm90IGluY2x1ZGUgdGhlIHVuZGVy
bHlpbmcgSFRUUCBoZWFkZXJzLAorICAgICAgICBhbmQgdXN1YWxseSBoYXMgYSBNSU1FIHR5cGUg
b2YgInRleHQvaHRtbCIgb3IgImFwcGxpY2F0aW9uL3BkZiIgcmF0aGVyIHRoYW4gdGhlIG9yaWdp
bmFsCisgICAgICAgIGRvY3VtZW50J3MgTUlNRSB0eXBlLgorCisgICAgICAgIFRvIGFsbG93IGNs
aWVudHMgdG8gbWFrZSBiZXR0ZXIgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25z
LCB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlCisgICAgICAgIGFib3ZlIGJlaGF2aW9yIGZvciBXS1dl
YlZpZXcgY2xpZW50cyB0aGF0IGhhdmUgbGlua2VkIGFnYWluc3QgYSB2ZXJzaW9uIG9mIFdlYktp
dCB0aGF0CisgICAgICAgIGluY2x1ZGVzIHRoaXMgY2hhbmdlLiBSYXRoZXIgdGhhbiBub3RpZnlp
bmcgdGhlIGNsaWVudCdzIG5hdmlnYXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlCisgICAg
ICAgIG9mIHRoZSBwcmV2aWV3IHJlc3BvbnNlLCB3ZSBub3RpZnkgdGhlIGNsaWVudCBvZiB0aGUg
b3JpZ2luYWwgSFRUUCByZXNwb25zZS4gT25seSBpZiB0aGUKKyAgICAgICAgY2xpZW50IHJlc3Bv
bmRzIHdpdGggYSBwb2xpY3kgb2YgImFsbG93IiB3aWxsIHRoZSBRdWlja0xvb2sgcHJldmlldyBy
ZXNwb25zZSBiZSBsb2FkZWQKKyAgICAgICAgKHdpdGhvdXQgYW5vdGhlciBjYWxsIHRvIHRoZSBu
YXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSkuCisKKyAgICAgICAgTm9uLVdLV2Vi
VmlldyBjbGllbnRzIGFuZCBjbGllbnRzIHRoYXQgaGF2ZSBsaW5rZWQgYWdhaW5zdCBhIHZlcnNp
b24gb2YgV2ViS2l0IHRoYXQgZG9lcyBub3QKKyAgICAgICAgaW5jbHVkZSB0aGlzIGNoYW5nZSB3
aWxsIHJldGFpbiB0aGUgb3JpZ2luYWwgYmVoYXZpb3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyBsYXlvdXQgdGVzdHMgYW5kIG5ldyBhbmQgZXhpc3RpbmcgQVBJIHRlc3RzLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkQ3JlYXRlUHJldmlld0xvYWRlckZvclJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9p
b3MvUHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0
aFJlc291cmNlTG9hZGVyOnJlc291cmNlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYlByZXZp
ZXdMb2FkZXIgX2xvYWRQcmV2aWV3SWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0xv
YWRlciBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAg
ICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOgorICAg
ICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoLVtXZWJQ
cmV2aWV3TG9hZGVyIF9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3NhcnldKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1JTUVU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICog
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9Q
cmV2aWV3Q29udmVydGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
c3VwcG9ydHNNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmll
d0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKwogMjAxOS0wMy0yOCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9m
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgR1BVXSBQcm90b3R5cGUgY29tcHV0ZSBwaXBl
bGluZSB3aXRoIE1TTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MzgyMGRhZGYzMzdhZmY0NDBhODE2NzkxYTlhNDlj
NDU0MzlhZDRmLi5kMzUyMGI3MzRjZjAwZWE3YmU5OTlmYjRhOWJjM2U2ZTQ3ZWUxMDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTAzLTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXZWJLaXQgc2hvdWxkIGNvbnN1bHQgdGhlIG5hdmln
YXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlIGJlZm9yZSBwcmV2aWV3aW5nIGEgUXVpY2tM
b29rIGRvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTY0MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MjkzMzA1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gU1BJIGZvciBzZXR0aW5nIHRoZSBRdWlja0xvb2sgbmF2aWdhdGlvbiByZXNw
b25zZSBwb2xpY3kKKyAgICAgICAgZGVjaXNpb24gYmVoYXZpb3IuIFRoZSBjb25maWd1cmF0aW9u
IHNldHRpbmcgZGVmYXVsdHMgdG8gWUVTIGZvciBjbGllbnRzIGxpbmtlZCBvbiBvciBhZnRlcgor
ICAgICAgICB0aGlzIFdlYktpdCBjaGFuZ2UgYW5kIE5PIG90aGVyd2lzZS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1l
QW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5j
ZXMueWFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAg
ICAgICAoZGVmYXVsdFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2
aWV3KToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAg
ICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlld10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRTaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMTktMDMtMjggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEF1dG9tYXRpYyBmb2N1cyBvZiBpbnB1dCBmaWVsZCBpcyBm
bGFreQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBiL1NvdXJj
ZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5kZXggZTdlOGE3ZWEwMzk4OWNiYTQwNGVhYmI4
MjUzNTAwZDVjM2Y3ZjU1My4uZTBlNDY3NzU2MWM3YmZiZDllNTU2ODRjNTI0NWRjYTVlMmIzY2I4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsOSArNjAsMTMgQEAgcHVibGljOgog
ICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KICAgICBUJiBn
ZXQoKSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQogCisgICAgVCogb3BlcmF0b3ItPigp
IHsgcmV0dXJuIHN0b3JhZ2VQb2ludGVyKCk7IH0KKwogICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkg
Y29uc3QgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KICAgICBjb25zdCBUJiBnZXQoKSBj
b25zdCB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQogCisgICAgY29uc3QgVCogb3BlcmF0
b3ItPigpIGNvbnN0IHsgcmV0dXJuIHN0b3JhZ2VQb2ludGVyKCk7IH0KKwogcHJpdmF0ZToKICAg
ICB1c2luZyBQb2ludGVyVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBl
KjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc5ZGIzNGE0Y2RlYjFlZDQ3ODY5MWM1NWM4ZWQ1ZjI2OTRjNmRlOGQuLmM0MDE4
MDQ0MjQyMGQ5ZTE0MjFiODUyZGM4NDAyZDc2MGYzMzFjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMjMsNyArMzAyMyw3
IEBACiAJCUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1
OUIzOEEwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKIAkJQTFCRjZCODIx
QUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi87IH07CiAJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4
QSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmggKi87IH07Ci0JCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVy
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMx
NTA3ODFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyB9OworCQlBMUMx
NTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThD
IC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRN
ZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
Q0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlB
MUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1
NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKIAkJQTFDQzU2NjkxRjQ2MTQ4MDAwQTQ1
NTVCIC8qIEpTUGF5bWVudENvbXBsZXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY0RTFGNDYxNDUyMDBBNDU1NUIgLyogSlNQYXltZW50Q29t
cGxldGUuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ4M2VjZDNjMTNkNjFlNjlhMzU4ZWI4MWNjYTZlMzY0Y2M0NTIwMDkuLjIzZGUx
NTQ0OWEwNWVjMTQ5MzI5MjJjY2JjMzc0NDNkNDcwM2Q5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDYgKzYzLDcgQEAKICNlbmRpZgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCisjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgogI2lu
Y2x1ZGUgIlByZXZpZXdMb2FkZXIuaCIKICNlbmRpZgogCkBAIC0zMDQsNyArMzA1LDcgQEAgYm9v
bCBTdWJyZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ3JlYXRlUHJldmlld0xvYWRlckZvclJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG8KICAgICBpZiAobV9wcmV2aWV3TG9hZGVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9y
TUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgcmV0dXJuIFByZXZpZXdDb252ZXJ0
ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSk7CiB9CiAKICNlbmRpZgpA
QCAtMzE5LDcgKzMyMCw4IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKHNob3VsZENyZWF0ZVByZXZpZXdMb2FkZXJGb3JSZXNwb25zZShyZXNw
b25zZSkpIHsKICAgICAgICAgbV9wcmV2aWV3TG9hZGVyID0gUHJldmlld0xvYWRlcjo6Y3JlYXRl
KCp0aGlzLCByZXNwb25zZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fcHJldmll
d0xvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSkKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IGE2MzA5NzQ2NmI1ZmViM2I0M2Vm
MjIxNDhhNDFkZmU1NmE2NTc1NmEuLjYxOGU5NDI5NTAxN2RjM2I4MzAzNjVjMTE2NzYxNTM4YjFk
YjYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsMTAgKzQxLDEwIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFByZXZpZXdMb2FkZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3Jl
YXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIH5QcmV2
aWV3TG9hZGVyKCk7CiAKKyAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvUHJldmlld0xvYWRlci5tbQppbmRleCA3MjUxZDcwYjA1MTcwNmUyNmI1MGZhZTUy
MjBmMzI1NmEzNmY1MTk1Li5mZWExZWMyNzcwNjRlOWM3ZDU0OTE1NmIwYzgxYTBiOTlmODdhYmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
NiArMjksNyBAQAogI2lmIFVTRShRVUlDS19MT09LKQogCiAjaW1wb3J0ICJEb2N1bWVudExvYWRl
ci5oIgorI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0
ICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMzYsNiArMzcs
NyBAQAogI2ltcG9ydCAiUHJldmlld0xvYWRlckNsaWVudC5oIgogI2ltcG9ydCAiUXVpY2tMb29r
LmgiCiAjaW1wb3J0ICJSZXNvdXJjZUxvYWRlci5oIgorI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNp
bXBvcnQgPHBhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgQGludGVyZmFjZSBXZWJQcmV2aWV3TG9hZGVy
IDogTlNPYmplY3QgewogICAgIFJlZlB0cjxQcmV2aWV3TG9hZGVyQ2xpZW50PiBfY2xpZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3Q29udmVydGVyPiBfY29udmVydGVyOwogICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gX2J1ZmZlcmVkRGF0YUFycmF5OwotICAgIEJPT0wgX2hh
c1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7CisgICAgQk9PTCBfaGFzTG9hZGVkUHJldmlldzsKICAg
ICBCT09MIF9oYXNQcm9jZXNzZWRSZXNwb25zZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBf
YnVmZmVyZWREYXRhOwogICAgIGxvbmcgbG9uZyBfbGVuZ3RoUmVjZWl2ZWQ7CkBAIC01OSw2ICs2
MSw4IEBAIC0gKHZvaWQpYXBwZW5kRGF0YUFycmF5OihOU0FycmF5PE5TRGF0YSAqPiAqKWRhdGFB
cnJheTsKIC0gKHZvaWQpZmluaXNoZWRBcHBlbmRpbmc7CiAtICh2b2lkKWZhaWxlZDsKIAorQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmc7CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlByZXZpZXdMb2FkZXIKQEAg
LTc3LDE0ICs4MSwxNCBAQCBzdGF0aWMgUHJldmlld0xvYWRlckNsaWVudCYgZW1wdHlDbGllbnQo
KQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUmVzb3VyY2VMb2Fk
ZXImKXJlc291cmNlTG9hZGVyIHJlc291cmNlUmVzcG9uc2U6KGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKXJlc291cmNlUmVzcG9uc2UKIHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVy
KTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwogICAgIF9jb252ZXJ0ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CiAgICAg
X2J1ZmZlcmVkRGF0YUFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CisgICAgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgPSByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlj
a0xvb2tQcmV2aWV3KCk7CiAKICAgICBpZiAodGVzdGluZ0NsaWVudCgpKQogICAgICAgICBfY2xp
ZW50ID0gdGVzdGluZ0NsaWVudCgpOwpAQCAtMTE5LDE1ICsxMjMsMTYgQEAgLSAodm9pZClmYWls
ZWQKICAgICBfY2xpZW50LT5kaWRGYWlsKCk7CiB9CiAKLS0gKHZvaWQpX3NlbmREaWRSZWNlaXZl
UmVzcG9uc2VJZk5lY2Vzc2FyeQorLSAodm9pZClfbG9hZFByZXZpZXdJZk5lZWRlZAogewogICAg
IGlmICghX3Jlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIV9y
ZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7Ci0gICAgaWYgKF9oYXNTZW50
RGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgIGlmIChfaGFzTG9hZGVkUHJldmlldykKICAgICAgICAg
cmV0dXJuOwogCisgICAgX2hhc0xvYWRlZFByZXZpZXcgPSBZRVM7CiAgICAgW19idWZmZXJlZERh
dGFBcnJheSByZW1vdmVBbGxPYmplY3RzXTsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UgeyBfY29udmVydGVyLT5wcmV2aWV3UmVzcG9uc2UoKSB9OwpAQCAtMTM1LDggKzE0MCwxNCBA
QCAtICh2b2lkKV9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3NhcnkKICAgICBBU1NFUlQo
cmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7CiAKICAgICBfcmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShfY29udmVydGVyKSk7
CisgICAgX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKCk7CisKKyAgICBpZiAoX3Nob3VsZERl
Y2lkZVBvbGljeUJlZm9yZUxvYWRpbmcpIHsKKyAgICAgICAgX2hhc1Byb2Nlc3NlZFJlc3BvbnNl
ID0gWUVTOworICAgICAgICBfcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFJl
c3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIF9oYXNTZW50
RGlkUmVjZWl2ZVJlc3BvbnNlID0gWUVTOwogICAgIF9oYXNQcm9jZXNzZWRSZXNwb25zZSA9IE5P
OwogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbc2Vs
ZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIF9oYXNQcm9jZXNz
ZWRSZXNwb25zZSA9IFlFUzsKQEAgLTE3MCw4ICsxODEsOCBAQCAtICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRh
dGEgbAogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOwogICAgIGlm
IChfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBbc2VsZiBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNzYXJ5XTsK
KworICAgIFtzZWxmIF9sb2FkUHJldmlld0lmTmVlZGVkXTsKIAogICAgIGF1dG8gZGF0YUxlbmd0
aCA9IGRhdGEubGVuZ3RoOwogCkBAIC0yMDEsNyArMjEyLDcgQEAgLSAodm9pZCljb25uZWN0aW9u
RGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogICAgIGlmIChf
cmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBBU1NFUlQoX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2UpOworICAgIEFTU0VS
VChfaGFzTG9hZGVkUHJldmlldyk7CiAKICAgICBpZiAoIV9oYXNQcm9jZXNzZWRSZXNwb25zZSkg
ewogICAgICAgICBfbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nID0gWUVTOwpAQCAtMjI2LDcg
KzIzNyw2IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKGVycm9yKSkgewotICAgICAgICBbc2VsZiBf
c2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNzYXJ5XTsKICAgICAgICAgX3Jlc291cmNlTG9h
ZGVyLT5kaWRGYWlsKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NiwyOCAr
MjY2LDE1IEBAIFByZXZpZXdMb2FkZXI6On5QcmV2aWV3TG9hZGVyKCkKIHsKIH0KIAotYm9vbCBQ
cmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQorc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6OmNyZWF0
ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0
ZXh0L2h0bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRl
eHQvcGxhaW4iKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkTUlNRVR5cGVzOwotICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKm1pbWVU
eXBlIGluIFFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpKQotICAgICAgICAgICAg
c3VwcG9ydGVkTUlNRVR5cGVzLmdldCgpLmFkZChtaW1lVHlwZSk7Ci0gICAgfSk7Ci0KLSAgICBp
ZiAobWltZVR5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biBzdXBwb3J0ZWRNSU1FVHlwZXMuZ2V0KCkuY29udGFpbnMobWltZVR5cGUpOworICAgIEFTU0VS
VChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkp
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJl
c3BvbnNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2Jvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQogewotICAgIEFTU0VSVChzaG91bGRDcmVhdGVGb3JNSU1FVHlw
ZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJl
dmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuICFbbV9wcmV2aWV3TG9h
ZGVyIHNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmddOwogfQogCiBib29sIFByZXZpZXdM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCBkN2Q1MjgzNzE3NTZiZmRjMWUwNThiMmJj
NTZmMDA3ZDYzNTU0MjgzLi43MjA1ZDFmZDM4MzA5Yjc2ZTJiNDU0YjBiMTAyMzZlZTA1ZTBjOWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC04MjMsNiArODIzLDkgQEAgYWRDbGlj
a0F0dHJpYnV0aW9uRW5hYmxlZDoKIGJsb2NraW5nT2ZTbWFsbFBsdWdpbnNFbmFibGVkOgogICBp
bml0aWFsOiB0cnVlCiAKK3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQ
cmV2aWV3OgorICBpbml0aWFsOiBmYWxzZQorCiAjIERlcHJlY2F0ZWQKIAogaWNlQ2FuZGlkYXRl
RmlsdGVyaW5nRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKaW5kZXggZjllYWJiNWZiOTBmMjk0M2I0ODhhODg2NWZlNzUyYTRjMTQ4YmJjMy4u
NmNhZTE0YWE0YmNmY2RhNTA1M2Q4ZTY3OGE0OTA0YjA3N2Q4MzhhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC01Myw2ICs1MywxMCBAQAogI2luY2x1ZGUgIkltYWdlRGVjb2RlckFWRk9iakMu
aCIKICNlbmRpZgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW5jbHVkZSAiUHJldmlld0NvbnZl
cnRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzKCkKQEAgLTY0Myw2ICs2NDcsMTEgQEAgYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBpZiAo
aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpIHx8IGlzU3VwcG9ydGVkSlNP
Tk1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyNpZiBVU0UoUVVJ
Q0tfTE9PSykKKyAgICBpZiAoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShtaW1l
VHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBpZiAoc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikpCiAgICAgICAgIHJl
dHVybiAhaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaApp
bmRleCAwMWM3ZDI1NTk2MzYxZTlkYWFmNjFjYTI1MGMyYmZiNzExMWQyOWY1Li41YTA2ZjJlZjg5
ZWY1YzIxYmUxNTdjNzFkYTE0MTllYzg0ODA5ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCkBAIC00MSw2ICs0
MSw4IEBAIHB1YmxpYzoKICAgICBQcmV2aWV3Q29udmVydGVyKGlkIGRlbGVnYXRlLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CiAgICAgUHJl
dmlld0NvbnZlcnRlcihOU0RhdGEgKiwgY29uc3QgU3RyaW5nJiB1dGksIGNvbnN0IFN0cmluZyYg
cGFzc3dvcmQgPSB7IH0pOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9y
dHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIFFMUHJldmlld0NvbnZl
cnRlciAqcGxhdGZvcm1Db252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29udmVy
dGVyLmdldCgpOyB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHNhZmVSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIFJlc291cmNlUmVxdWVzdCBwcmV2aWV3UmVxdWVzdCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UHJldmlld0NvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1ByZXZpZXdDb252ZXJ0ZXIubW0KaW5kZXggNDgyYWFhYjc1ODlkZTEzZGE4ZWU1NzA2Nzc5MDc2
MTQ3NzUyYmE3Yy4uYjVjZDI4MzU2ZjI2OWY5ZDYxNjMxMzdkNTFhM2E0YzI4OGJiNDk5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZl
cnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3
Q29udmVydGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShRVUlDS19MT09LKQogCisjaW1w
b3J0ICJRdWlja0xvb2suaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tTb2Z0TGluay5o
PgpAQCAtNTMsNiArNTQsMjQgQEAgUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihO
U0RhdGEgKmRhdGEsIGNvbnN0IFN0cmluZyYgdXRpLCBjb25zdCBTdHJpbmcKIHsKIH0KIAorYm9v
bCBQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCit7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
dGV4dC9odG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0
ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZE1JTUVUeXBlczsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBmb3IgKE5TU3RyaW5nICptaW1l
VHlwZSBpbiBRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSkKKyAgICAgICAgICAg
IHN1cHBvcnRlZE1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKKyAgICB9KTsKKworICAgIGlmICht
aW1lVHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHN1
cHBvcnRlZE1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworfQorCiBSZXNvdXJjZVJlcXVl
c3QgUHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAogewogICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRlciBzYWZlUmVx
dWVzdEZvclJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6
OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1ByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCA1YzBlODc5M2Iw
YmIzNWRjMWI2ZDhhM2Y0MWJhYzY3YmE2ZmJiZDViLi5kMjAyZWJjNmRmY2Q0ZDNlZmNmOWJkYjk3
YTM3NmM2MDQwMGE0MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9QcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UHJl
dmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZB
cnJheVJlZikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGNmYTk5YjE3NWYz
NTM5YWQzNjRmZWI5MTQ5Yzc3OWM5NWZiZmJkMWUuLmY4ZTQ2NDIzOTc5OWNlNjQ2NjVhMGFmN2Ux
YmM2ZjNlYWEyNGVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0jaW5jbHVkZSA8V2ViQ29y
ZS9QcmV2aWV3TG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVydGVyLmg+
CiAjZW5kaWYKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTM4Niw3
ICszODYsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9h
ZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgIEFTU0VSVChpc01haW5SZXNv
dXJjZSgpKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIGlmIChQcmV2aWV3TG9hZGVyOjpz
aG91bGRDcmVhdGVGb3JNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSkKKyAgICBpZiAoUHJl
dmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCmluZGV4IDYwOWQzMWYyZmEwMTVlNGRiZGRhY2MzYjU0ZDViMzIzNjRhNzhl
ZjAuLjMyMDIxNWRkZGY3Zjc0OTY2ZGQwODZhYTczY2Q2ODc3MjM1YjhkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTE5Miw2ICsxMTkyLDEwIEBAIEVk
aXRhYmxlSW1hZ2VzRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZhbHNl
CiAKK1Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3OgorICBk
ZWZhdWx0VmFsdWU6IGZhbHNlCisgIHR5cGU6IGJvb2wKKwogIyBGb3IgZXhwZXJpbWVudGFsIGZl
YXR1cmVzOgogIyBUaGUgdHlwZSBzaG91bGQgYmUgYm9vbGVhbi4KICMgWW91IG11c3QgcHJvdmlk
ZSBhIGh1bWFuUmVhZGFibGVOYW1lIGFuZCBodW1hblJlYWRhYmxlRGVzY3JpcHRpb24gZm9yIGFs
bCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGVjNmNjN2ZlY2MxOGMzM2VmMGNmNTBmZTU0
ZDBjODQxYmVmMTY3ZTAuLmQ4ZTk0MzZmOTE1MDFiMzllOGU4M2ZjYWU0NTVkMDEwYmRhYzJkZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtNjI2LDYgKzYyNiw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjoo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojp1
c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZTo6VmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3k6OkNvbnRlbnQpKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0
RGlyZWN0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUikpKTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjphbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHNLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzaG91bGRBbGxvd1NldHRpbmdBbnlYSFJIZWFk
ZXJGcm9tRmlsZVVSTHMoKSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxv
YWRpbmdRdWlja0xvb2tQcmV2aWV3XSkpOwogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzS2V5OjpzeXN0ZW1QcmV2aWV3RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxlZF0p
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA3N2IxOWRkODZkYTU1NjE1MmJh
N2Q2NDljYjYzMWUxNGJkN2RlMWJmLi5kNjAyYWFmNGYyMDE0OTI1MzU4ZGU1NWIzYzU3MTBlY2Y5
OTk5OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtOTksNiArOTksMTYgQEAgc3RhdGlj
IF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFnTGlmdERlbGF5KE5TVUludGVnZXIgdmFsdWUpCiAgICAg
cmV0dXJuIF9XS0RyYWdMaWZ0RGVsYXlTaG9ydDsKIH0KIAorc3RhdGljIGJvb2wgZGVmYXVsdFNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkKK3sKKyNpZiBV
U0UoUVVJQ0tfTE9PSykKKyAgICBzdGF0aWMgYm9vbCBzaG91bGREZWNpZGUgPSBsaW5rZWRPbk9y
QWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFRoYXREZWNpZGVzUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXcpOworICAgIHJldHVybiBzaG91bGREZWNpZGU7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiAjZW5kaWYKIAogQGltcGxlbWVudGF0aW9u
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gewpAQCAtMTI5LDYgKzEzOSw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBCT09MIF90ZXh0SW50ZXJhY3Rpb25H
ZXN0dXJlc0VuYWJsZWQ7CiAgICAgQk9PTCBfbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQ7CiAgICAg
Qk9PTCBfc3lzdGVtUHJldmlld0VuYWJsZWQ7CisgICAgQk9PTCBfc2hvdWxkRGVjaWRlUG9saWN5
QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc7CiAjZW5kaWYKIAogICAgIEJPT0wgX2ludmlz
aWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkOwpAQCAtMjM2LDYgKzI0Nyw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0CiAgICAgX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkID0gWUVTOwogI2VuZGlmCiAg
ICAgX3N5c3RlbVByZXZpZXdFbmFibGVkID0gTk87CisgICAgX3Nob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3ID0gZGVmYXVsdFNob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogICAgIF9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCA9
IFdlYkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQoKTsKQEAgLTI5MSw2ICszMDMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2Rl
cjooTlNDb2RlciAqKWNvZGVyCiAgICAgW2NvZGVyIGVuY29kZUJvb2w6c2VsZi5fdGV4dEludGVy
YWN0aW9uR2VzdHVyZXNFbmFibGVkIGZvcktleTpAInRleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5h
YmxlZCJdOwogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX2xvbmdQcmVzc0FjdGlvbnNFbmFi
bGVkIGZvcktleTpAImxvbmdQcmVzc0FjdGlvbnNFbmFibGVkIl07CiAgICAgW2NvZGVyIGVuY29k
ZUJvb2w6c2VsZi5fc3lzdGVtUHJldmlld0VuYWJsZWQgZm9yS2V5OkAic3lzdGVtUHJldmlld0Vu
YWJsZWQiXTsKKyAgICBbY29kZXIgZW5jb2RlQm9vbDpzZWxmLl9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyBmb3JLZXk6QCJzaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyJdOwogI2Vsc2UKICAgICBbY29kZXIgZW5jb2Rl
SW50ZWdlcjpzZWxmLnVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgZm9yS2V5OkAidXNlcklu
dGVyZmFjZURpcmVjdGlvblBvbGljeSJdOwogI2VuZGlmCkBAIC0zMjUsNiArMzM4LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogICAgIHNlbGYuX3Rl
eHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCA9IFtjb2RlciBkZWNvZGVCb29sRm9yS2V5OkAi
dGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkIl07CiAgICAgc2VsZi5fbG9uZ1ByZXNzQWN0
aW9uc0VuYWJsZWQgPSBbY29kZXIgZGVjb2RlQm9vbEZvcktleTpAImxvbmdQcmVzc0FjdGlvbnNF
bmFibGVkIl07CiAgICAgc2VsZi5fc3lzdGVtUHJldmlld0VuYWJsZWQgPSBbY29kZXIgZGVjb2Rl
Qm9vbEZvcktleTpAInN5c3RlbVByZXZpZXdFbmFibGVkIl07CisgICAgc2VsZi5fc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcgPSBbY29kZXIgZGVjb2RlQm9v
bEZvcktleTpAInNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3
Il07CiAjZWxzZQogICAgIGF1dG8gdXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUNhbmRpZGF0
ZSA9IHN0YXRpY19jYXN0PFdLVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeT4oW2NvZGVyIGRl
Y29kZUludGVnZXJGb3JLZXk6QCJ1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5Il0pOwogICAg
IGlmICh1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5Q2FuZGlkYXRlID09IFdLVXNlckludGVy
ZmFjZURpcmVjdGlvblBvbGljeUNvbnRlbnQgfHwgdXNlckludGVyZmFjZURpcmVjdGlvblBvbGlj
eUNhbmRpZGF0ZSA9PSBXS1VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3lTeXN0ZW0pCkBAIC0z
ODEsNiArMzk1LDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAgICAgY29u
ZmlndXJhdGlvbi0+X3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCA9IHNlbGYtPl90ZXh0
SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X2xvbmdQcmVz
c0FjdGlvbnNFbmFibGVkID0gc2VsZi0+X2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkOwogICAgIGNv
bmZpZ3VyYXRpb24tPl9zeXN0ZW1QcmV2aWV3RW5hYmxlZCA9IHNlbGYtPl9zeXN0ZW1QcmV2aWV3
RW5hYmxlZDsKKyAgICBjb25maWd1cmF0aW9uLT5fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXcgPSBzZWxmLT5fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXc7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgY29u
ZmlndXJhdGlvbi0+X3VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgPSBzZWxmLT5fdXNlcklu
dGVyZmFjZURpcmVjdGlvblBvbGljeTsKQEAgLTczMiw2ICs3NDcsMTYgQEAgLSAodm9pZClfc2V0
U3lzdGVtUHJldmlld0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIF9zeXN0ZW1QcmV2aWV3RW5h
YmxlZCA9IGVuYWJsZWQ7CiB9CiAKKy0gKEJPT0wpX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxv
YWRpbmdRdWlja0xvb2tQcmV2aWV3Cit7CisgICAgcmV0dXJuIF9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzsKK30KKworLSAodm9pZClfc2V0U2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6KEJPT0wpc2hvdWxkRGVjaWRl
Cit7CisgICAgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3
ID0gc2hvdWxkRGVjaWRlOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
LSAoQk9PTClfaW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgKaW5kZXggOGMxNmUzOTgwZGQzYWFmZDZiZTc1ODBhMjcyOTE2ZTFhNTgw
YjVhMy4uNzgwMjdmZDlmMDcyMWRmZTE0Mjc3ZjExNDEzMDY3MGQxNDVjMzY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBOU19F
TlVNKE5TVUludGVnZXIsIF9XS0RyYWdMaWZ0RGVsYXkpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFRleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZDopIEJPT0wgX3RleHRJ
bnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKGlvcygxMi4wKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMb25nUHJlc3NBY3Rpb25zRW5hYmxlZDop
IEJPT0wgX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEyLjAp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN5c3RlbVByZXZpZXdFbmFibGVk
OikgQk9PTCBfc3lzdGVtUHJldmlld0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTIuMCkp
OworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hvdWxkRGVjaWRlUG9saWN5QmVm
b3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6KSBCT09MIF9zaG91bGREZWNpZGVQb2xpY3lCZWZv
cmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CiAjZWxzZQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hvd3NVUkxzSW5U
b29sVGlwczopIEJPT0wgX3Nob3dzVVJMc0luVG9vbFRpcHMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMikpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2VydmljZUNvbnRy
b2xzRW5hYmxlZDopIEJPT0wgX3NlcnZpY2VDb250cm9sc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmVyc2lvbkNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lv
bkNoZWNrcy5oCmluZGV4IDNiMzUwYmUwMGIzOThkZDllZjRlYWMxOGExNTM3NDlhNGJlMzVlMTAu
LmY0ZDQyODFhZTUzYjExYjU3OWZiNDRiYjc1NzE3YTYyNGE1ZTlmOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKQEAgLTM0LDYgKzM0LDcgQEAK
ICNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1BST0NFU1NfU1dBUF9PTl9DUk9T
U19TSVRFX05BVklHQVRJT04gMAogI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNUX1dJVEhf
U05BUFNIT1RfQUZURVJfU0NSRUVOX1VQREFURVMgMAogI2RlZmluZSBEWUxEX0lPU19WRVJTSU9O
X0ZJUlNUX1dIRVJFX0RPV05MT0FEX0FUVFJJQlVURV9ET0VTX05PVF9PVkVSUklERV9OQVZJR0FU
SU9OX0RFTEVHQVRFIDAKKyNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9USEFUX0RFQ0lE
RVNfUE9MSUNZX0JFRk9SRV9MT0FESU5HX1FVSUNLX0xPT0tfUFJFVklFVyAwCiAjZGVmaW5lIERZ
TERfTUFDT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NOQVBTSE9UX0FGVEVSX1NDUkVFTl9VUERBVEVT
IDAKICNkZWZpbmUgRFlMRF9NQUNPU19WRVJTSU9OX0ZJUlNUX1dIRVJFX0RPV05MT0FEX0FUVFJJ
QlVURV9ET0VTX05PVF9PVkVSUklERV9OQVZJR0FUSU9OX0RFTEVHQVRFIDAKICNlbmRpZgpAQCAt
NjEsNiArNjIsNyBAQCBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50MzJfdCB7CiAgICAgRmly
c3RXaXRoU25hcHNob3RBZnRlclNjcmVlblVwZGF0ZXMgPSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNU
X1dJVEhfU05BUFNIT1RfQUZURVJfU0NSRUVOX1VQREFURVMsCiAgICAgRmlyc3RXaGVyZURvd25s
b2FkQXR0cmlidXRlRG9lc05vdE92ZXJyaWRlTmF2aWdhdGlvbkRlbGVnYXRlID0gRFlMRF9JT1Nf
VkVSU0lPTl9GSVJTVF9XSEVSRV9ET1dOTE9BRF9BVFRSSUJVVEVfRE9FU19OT1RfT1ZFUlJJREVf
TkFWSUdBVElPTl9ERUxFR0FURSwKICAgICBGaXJzdFdpdGhEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvblBlcm1pc3Npb25BUEkgPSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNUX1dJVEhfREVWSUNFX09S
SUVOVEFUSU9OX0FORF9NT1RJT05fUEVSTUlTU0lPTl9BUEksCisgICAgRmlyc3RUaGF0RGVjaWRl
c1BvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3ID0gRFlMRF9JT1NfVkVSU0lPTl9G
SVJTVF9USEFUX0RFQ0lERVNfUE9MSUNZX0JFRk9SRV9MT0FESU5HX1FVSUNLX0xPT0tfUFJFVklF
VywKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGaXJzdFdpdGhOZXR3b3JrQ2FjaGUgPSBEWUxE
X01BQ09TWF9WRVJTSU9OXzEwXzExLAogICAgIEZpcnN0V2l0aEV4Y2VwdGlvbnNGb3JEdXBsaWNh
dGVDb21wbGV0aW9uSGFuZGxlckNhbGxzID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IGIyYTkyNDE4Y2Vk
ODY2ZmU5MzNkNTg5Y2VhZThkZDZlMDM4YTdhZDMuLjFjMWUzZTJmODcwNTMwMzM3M2ZmNTdkZjU0
ZTc4ZTU5MzgyOTYxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcApAQCAtNDksNyArNDksNiBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgICwgbV91
dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1lLCBtX3V0aSksIG1fcGFnZUlE
KTsKIH0KIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQo
KQpAQCAtNTcsNiArNTYsMTEgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdM
b2FkZXJDbGllbnQoKQogICAgIHBhc3N3b3JkQ2FsbGJhY2tzKCkucmVtb3ZlKG1fcGFnZUlEKTsK
IH0KIAordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoKQor
eworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1l
LCBtX3V0aSksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQogewogICAgIENGQXJyYXlB
cHBseUZ1bmN0aW9uKGRhdGFBcnJheSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KGRh
dGFBcnJheSkpLCBbXShjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBmOTk4NmU0MWNhMmYyNTFkYjJj
M2U1ZDg4ZTA4ZGY1MDY4NTQwNGU4Li5kNWQyNmNlODYzOTZhMmJhOWNhMzBlOGU3ODYxZmVlOWJj
Y2ExNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDUs
NiArNDUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZTY5ZjI4
YmRmZjdhOTA4ZmUxMzMzMTRmYmM3MzQ0NWFmYzdiZWUyLi5iNDEyZDQ2MmQ4YTJiMmE1ZmNiY2Ey
NGNlODMzMTZmYWYxNTA5YzBlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0
aGUgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcg
YSBRdWlja0xvb2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5oYW5jZWQg
QVBJIHRlc3QgY292ZXJhZ2UgdG8gaW5jbHVkZSBhbGwgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xp
Y3kgZGVjaXNpb25zIGluIGJvdGgKKyAgICAgICAgbGlua2VkLWJlZm9yZSBhbmQgbGlua2VkLW9u
LW9yLWFmdGVyIG1vZGVzLiBBbHNvIGFkZGVkIG5ldyBleHBlY3RhdGlvbnMgZm9yIGFsbCB0ZXN0
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3Mv
UHJldmlld0NvbnZlcnRlci5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdMb2FkZXIuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW06CisgICAgICAgIChyZWFkRmlsZSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVn
YXRlIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnJlc3BvbnNlUG9saWN5Ol0pOgorICAgICAgICAo
LVtRdWlja0xvb2tEZWxlZ2F0ZSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwcmV2aWV3TUlNRVR5
cGU6cmVzcG9uc2VQb2xpY3k6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIHdlYlZp
ZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6XSk6CisgICAgICAgICgt
W1F1aWNrTG9va0RlbGVnYXRlIF93ZWJWaWV3OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSB3ZWJWaWV3
OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtR
dWlja0xvb2tEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDpdKToKKyAgICAgICAg
KC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1F1
aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAg
ICgtW1F1aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlRGF0YTpdKToKKyAgICAg
ICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtRdWlja0xv
b2tEZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0Rl
bGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtRdWlja0xv
b2tEZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0Rl
bGVnYXRlIHZlcmlmeURvd25sb2FkXSk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHJ1
blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKToKKyAgICAgICAgKHJ1blRlc3REZWNpZGVBZnRlckxv
YWRpbmcpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jRGVsZWdh
dGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlIF93ZWJWaWV3RGlk
UmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQ6XSk6CisgICAgICAgICgtW1F1aWNr
TG9va0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgor
ICAgICAgICAoLVtRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9va05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bUXVpY2tMb29rTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNo
TmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0
aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVj
aXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tBc3luY05hdmln
YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lV2l0aEZpbGVOYW1lOnV0aTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tM
b29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9v
a0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSB3ZWJWaWV3
OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtRdWlja0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NE
aWRDcmFzaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rUGFzc3dvcmROYXZpZ2F0
aW9uRGVsZWdhdGUgX3dlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVu
dDpdKTogRGVsZXRlZC4KKwogMjAxOS0wMy0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSB3ZWJraXRfd2ViX3Jlc291cmNl
X2dldF9kYXRhX2ZpbmlzaCBjYW4gcmV0dXJuIE5VTEwgd2l0aG91dCBzZXR0aW5nIGVycm9yCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4MTg1OTM4YmU4MmU0NTU4MzZlMmM0OGMyY2JmYjY4
M2M1MDk1NDAuLjBmOTNjMjY1OWU3ZjQwNThhZjVlNTc3YjFmNjg2MjZhOTEwZTE1N2QgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTYsNyArNzE2LDcgQEAKIAkJQTE4MEMwRkExRUU2N0RG
MDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExODBDMEY5MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFu
ZWwubW0gKi87IH07CiAJCUExQzRGQjczMUJBQ0QxQ0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0
RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMucGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0
MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBB
MkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovOyB9OwotCQlBMUVDMTE4
ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyog
UHJldmlld0xvYWRlci5jcHAgKi87IH07CisJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQ
cmV2aWV3Q29udmVydGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVydGVyLmNw
cCAqLzsgfTsKIAkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYy
OTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJC
MDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0
RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdl
cy5odG1sICovOyB9OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95
ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKQEAgLTE5
ODcsNyArMTk4Nyw3IEBACiAJCUExQzRGQjZDMUJBQ0NFNTAwMDM3NDJEMCAvKiBRdWlja0xvb2su
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWlja0xvb2subW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAv
KiBwYWdlcy5wYWdlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZpbGU7IG5hbWUgPSBwYWdlcy5wYWdlczsgcGF0aCA9IGlvcy9wYWdlcy5wYWdlczsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAg
LyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmll
d0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2aWV3TG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8qIFByZXZp
ZXdDb252ZXJ0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmlld0NvbnZlcnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJFMTlDMjg4QkIwMDUxNDhBNCAv
KiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwODUsNyArMzA4NSw3IEBA
CiAJCUExRUMxMTg1MUY0MjUzRDkwMEQwMTQ2RSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQ
cmV2aWV3TG9hZGVyLmNwcCAqLywKKwkJCQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJl
dmlld0NvbnZlcnRlci5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC00MjczLDcgKzQyNzMsNyBAQAogCQkJCTdDMUFGNzk1MUU4RENC
QUIwMDI2NDVCOSAvKiBQcmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMEIxQTQxMUFFNjAwNDQ3QzRDIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyQzFBNDExQjEwMDA0NDdDNEMgLyogUHJldmVudElt
YWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW0gaW4gU291cmNlcyAqLywKLQkJCQlBMUVDMTE4ODFG
NDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
MUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0NvbnZlcnRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YwQzFBNDExQUU2MDA0NDdDNEMgLyogUHJpdmF0ZUJyb3dzaW5nUHVz
aFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDY0N0IxMjYx
RUJBM0I4NTAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE4ODJGMDMyMTAxMEMwRDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2lvcy9QcmV2aWV3Q29udmVydGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzIxYmRiNWEwODIw
N2E3NjhhOGY1OTdmMGI2ODQwNGJjNDg0ZTRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0UoUVVJQ0tfTE9PSykKKworI2luY2x1ZGUgPFdlYkNv
cmUvUHJldmlld0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitURVNUKFF1aWNrTG9vaywgU2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUpCit7CisgICAgLy8gRklY
TUU6IEV4cGFuZCB0aGlzIHRvIGNvdmVyIGFsbCB0aGUgTUlNRSB0eXBlcyB3ZSBleHBlY3QgdG8g
c3VwcG9ydC4KKyAgICBFWFBFQ1RfRkFMU0UoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZShTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRShQcmV2aWV3Q29udmVydGVyOjpzdXBw
b3J0c01JTUVUeXBlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShQcmV2aWV3Q29u
dmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQu
bWFjcm9FbmFibGVkLjEyIl9zKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFVTRShRVUlDS19MT09LKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3TG9h
ZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xv
YWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMWVhZGQ4Yzg2MGRmOWI4
MDAzYjhkMmQ2MzJiMmE2ZGFiMGExOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2
aWV3TG9hZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0Uo
UVVJQ0tfTE9PSykKLQotI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0xvYWRlci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUKFF1aWNrTG9vaywgU2hvdWxkQ3JlYXRl
Rm9yTUlNRVR5cGUpCi17Ci0gICAgLy8gRklYTUU6IEV4cGFuZCB0aGlzIHRvIGNvdmVyIGFsbCB0
aGUgTUlNRSB0eXBlcyB3ZSBleHBlY3QgdG8gc3VwcG9ydC4KLSAgICBFWFBFQ1RfRkFMU0UoUHJl
dmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoU3RyaW5nKCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0UoUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoZW1wdHlTdHJp
bmcoKSkpOwotICAgIEVYUEVDVF9UUlVFKFByZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1J
TUVUeXBlKCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyIl9z
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRleCA5M2QwN2ZhOWFhNTYw
ZTZkMmY1MTE2ZDE0YjAzMjZlMDk1ZjVkZGJiLi44OGQyMWI0NDM2ZTM2NDRmMjhkN2M4ZGQ2MGY4
NjM1NWVhNjI1Y2UzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1F1aWNrTG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1F1aWNrTG9vay5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDQyICsyOSwxMDUgQEAKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPENvcmVTZXJ2aWNl
cy9Db3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlLaXRTdXBwb3J0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKIHN0YXRpYyBib29sIGlzRG9uZTsKLXN0YXRpYyBi
b29sIGRpZFN0YXJ0UXVpY2tMb29rTG9hZDsKLXN0YXRpYyBib29sIGRpZEZpbmlzaFF1aWNrTG9v
a0xvYWQ7CitzdGF0aWMgYm9vbCBkb3dubG9hZElzRG9uZTsKIAotc3RhdGljIGNvbnN0IE5TVUlu
dGVnZXIgZXhwZWN0ZWRGaWxlU2l6ZSA9IDI3NDE0MzsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IGV4cGVjdGVkRmlsZU5hbWUgPSBAInBhZ2VzLnBhZ2VzIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNv
bnN0IGV4cGVjdGVkVVRJID0gQCJjb20uYXBwbGUuaXdvcmsucGFnZXMuc2ZmcGFnZXMiOwotc3Rh
dGljIE5TVVJMUmVxdWVzdCAqIGNvbnN0IHBhZ2VzRG9jdW1lbnRSZXF1ZXN0ID0gW1tOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dIHJldGFpbl07CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwYWdl
c0RvY3VtZW50UHJldmlld01JTUVUeXBlID0gQCJhcHBsaWNhdGlvbi9wZGYiOworc3RhdGljIE5T
VVJMICogY29uc3QgcGFnZXNEb2N1bWVudFVSTCA9IFtbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxG
b3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl0gcmV0YWluXTsKKworQGludGVyZmFjZSBRdWlja0xv
b2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUsIF9XS0Rv
d25sb2FkRGVsZWdhdGU+CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHJl
c3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSlyZXNwb25zZVBvbGljeTsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJM
IHByZXZpZXdNSU1FVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSByZXNwb25zZVBvbGljeTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpcmVzcG9uc2VQb2xpY3k7CistICh2b2lkKXZlcmlmeURv
d25sb2FkOworCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBkaWRTdGFydFF1aWNrTG9va0xv
YWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBkaWRGaW5pc2hRdWlja0xvb2tMb2FkOwog
Ci1AaW50ZXJmYWNlIFF1aWNrTG9va05hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xv
b2tOYXZpZ2F0aW9uRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tEZWxlZ2F0ZSB7
CitAcHJvdGVjdGVkCisgICAgTlNVSW50ZWdlciBfZG93bmxvYWRGaWxlU2l6ZTsKKyAgICBOU1VJ
bnRlZ2VyIF9leHBlY3RlZEZpbGVTaXplOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2V4cGVj
dGVkRmlsZU5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZXhwZWN0ZWRGaWxlVHlwZTsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9leHBlY3RlZE1JTUVUeXBlOworICAgIFJldGFpblB0
cjxOU1VSTD4gX2Rvd25sb2FkRGVzdGluYXRpb25VUkw7CisgICAgV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3kgX3Jlc3BvbnNlUG9saWN5OworfQorCitzdGF0aWMgdm9pZCByZWFkRmlsZShOU1VS
TCAqZmlsZVVSTCwgTlNVSW50ZWdlciYgZmlsZVNpemUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZp
bGVOYW1lLCBSZXRhaW5QdHI8TlNTdHJpbmc+JiBmaWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5n
PiYgbWltZVR5cGUpCit7CisgICAgaWYgKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0Zp
bGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVVSTC5w
YXRoIGVycm9yOm5pbF0pCisgICAgICAgIGZpbGVTaXplID0gW2F0dHJpYnV0ZXNbTlNGaWxlU2l6
ZV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworCisgICAgZmlsZU5hbWUgPSBmaWxlVVJMLmxhc3RQ
YXRoQ29tcG9uZW50OworCisgICAgTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyID0gbmlsOworICAg
IGlmIChbZmlsZVVSTCBnZXRSZXNvdXJjZVZhbHVlOiZ0eXBlSWRlbnRpZmllciBmb3JLZXk6TlNV
UkxUeXBlSWRlbnRpZmllcktleSBlcnJvcjpuaWxdKQorICAgICAgICBmaWxlVHlwZSA9IHR5cGVJ
ZGVudGlmaWVyOworCisgICAgbWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3MoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGVJZGVudGlmaWVyLCBrVVRUYWdD
bGFzc01JTUVUeXBlKSk7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmls
ZVVSTDooTlNVUkwgKilmaWxlVVJMIHJlc3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeSlyZXNwb25zZVBvbGljeQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmVhZEZpbGUoZmlsZVVSTCwgX2V4cGVjdGVk
RmlsZVNpemUsIF9leHBlY3RlZEZpbGVOYW1lLCBfZXhwZWN0ZWRGaWxlVHlwZSwgX2V4cGVjdGVk
TUlNRVR5cGUpOworCisgICAgX3Jlc3BvbnNlUG9saWN5ID0gcmVzcG9uc2VQb2xpY3k7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVS
TDooTlNVUkwgKilmaWxlVVJMIHByZXZpZXdNSU1FVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSBy
ZXNwb25zZVBvbGljeTooV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpcmVzcG9uc2VQb2xpY3kK
K3sKKyAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6ZmlsZVVS
TCByZXNwb25zZVBvbGljeTpyZXNwb25zZVBvbGljeV0pKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIAorICAgIF9leHBlY3RlZE1JTUVUeXBlID0gbWltZVR5cGU7CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJl
c3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIEVYUEVDVF9UUlVFKG5hdmlnYXRpb25SZXNwb25z
ZS5jYW5TaG93TUlNRVR5cGUpOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFt
ZS5nZXQoKSwgbmF2aWdhdGlvblJlc3BvbnNlLnJlc3BvbnNlLlVSTC5sYXN0UGF0aENvbXBvbmVu
dCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZE1JTUVUeXBlLmdldCgpLCBuYXZpZ2F0
aW9uUmVzcG9uc2UucmVzcG9uc2UuTUlNRVR5cGUpOworICAgIGRlY2lzaW9uSGFuZGxlcihfcmVz
cG9uc2VQb2xpY3kpOworfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6
KE5TU3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0cmluZyAqKXV0aQogewotICAgIEVYUEVDVF9X
S19TVFJFUShleHBlY3RlZEZpbGVOYW1lLCBmaWxlTmFtZSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KGV4cGVjdGVkVVRJLCB1dGkpOwotICAgIGRpZFN0YXJ0UXVpY2tMb29rTG9hZCA9IHRydWU7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVOYW1lLmdldCgpLCBmaWxlTmFtZSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVUeXBlLmdldCgpLCB1dGkpOworICAgIF9k
aWRTdGFydFF1aWNrTG9va0xvYWQgPSBZRVM7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWU6KE5TRGF0YSAqKWRvY3VtZW50RGF0YQogewotICAgIEVYUEVDVF9FUShleHBlY3RlZEZpbGVT
aXplLCBkb2N1bWVudERhdGEubGVuZ3RoKTsKLSAgICBkaWRGaW5pc2hRdWlja0xvb2tMb2FkID0g
dHJ1ZTsKKyAgICBFWFBFQ1RfRVEoX2V4cGVjdGVkRmlsZVNpemUsIGRvY3VtZW50RGF0YS5sZW5n
dGgpOworICAgIF9kaWRGaW5pc2hRdWlja0xvb2tMb2FkID0gWUVTOwogfQogCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0
aW9uICopbmF2aWdhdGlvbgpAQCAtNzIsMTI4ICsxMzUsMjIzIEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKilu
YXZpZ2F0CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIAotQGVuZAorLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdh
dGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpc0Rv
bmUgPSB0cnVlOworfQogCi1AaW50ZXJmYWNlIFF1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVn
YXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4KLUBlbmQKKy0gKHZv
aWQpX3dlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQogCi1AaW1wbGVtZW50YXRpb24gUXVp
Y2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUKKy0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVk
RmlsZU5hbWUuZ2V0KCksIGRvd25sb2FkLnJlcXVlc3QuVVJMLmxhc3RQYXRoQ29tcG9uZW50KTsK
K30KIAotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQogewotICAg
IGludDY0X3QgZGVmZXJyZWRXYWl0VGltZSA9IDEwMCAqIE5TRUNfUEVSX01TRUM7Ci0gICAgZGlz
cGF0Y2hfdGltZV90IHdoZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZl
cnJlZFdhaXRUaW1lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkRmlsZU5hbWUuZ2V0
KCksIHJlc3BvbnNlLlVSTC5sYXN0UGF0aENvbXBvbmVudCk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KF9leHBlY3RlZE1JTUVUeXBlLmdldCgpLCByZXNwb25zZS5NSU1FVHlwZSk7Cit9CiAKLSAgICBk
aXNwYXRjaF9hZnRlcih3aGVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7Ci0gICAg
fSk7CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZl
RGF0YToodWludDY0X3QpbGVuZ3RoCit7CisgICAgX2Rvd25sb2FkRmlsZVNpemUgKz0gbGVuZ3Ro
OwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5TU3RyaW5nICop
ZmlsZU5hbWUgdXRpOihOU1N0cmluZyAqKXV0aQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5T
U3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wsIE5TU3Ry
aW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVk
RmlsZU5hbWUsIGZpbGVOYW1lKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRVVEksIHV0
aSk7Ci0gICAgZGlkU3RhcnRRdWlja0xvb2tMb2FkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoX2V4cGVjdGVkRmlsZU5hbWUuZ2V0KCksIGZpbGVuYW1lKTsKKyAgICAKKyAgICBOU1VSTCAq
dGVtcERpcmVjdG9yeVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJl
Y3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworICAgIF9kb3dubG9hZERlc3RpbmF0aW9uVVJMID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlbmFtZSByZWxhdGl2ZVRvVVJMOnRlbXBEaXJlY3Rv
cnlVUkxdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW19kb3dubG9hZERlc3RpbmF0aW9u
VVJMIHBhdGhdKTsKIH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTooTlNEYXRhICopZG9j
dW1lbnREYXRhCistICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3du
bG9hZAogewotICAgIEVYUEVDVF9FUShleHBlY3RlZEZpbGVTaXplLCBkb2N1bWVudERhdGEubGVu
Z3RoKTsKLSAgICBkaWRGaW5pc2hRdWlja0xvb2tMb2FkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfRVEo
X2V4cGVjdGVkRmlsZVNpemUsIF9kb3dubG9hZEZpbGVTaXplKTsKKyAgICBkb3dubG9hZElzRG9u
ZSA9IHRydWU7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRG
aW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCistICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICop
ZXJyb3IKIHsKLSAgICBpc0RvbmUgPSB0cnVlOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAodm9p
ZCl2ZXJpZnlEb3dubG9hZAoreworICAgIEVYUEVDVF9UUlVFKFtOU0ZpbGVNYW5hZ2VyLmRlZmF1
bHRNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6W19kb3dubG9hZERlc3RpbmF0aW9uVVJMIHBhdGhd
XSk7CisKKyAgICBOU1VJbnRlZ2VyIGRvd25sb2FkRmlsZVNpemU7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBkb3dubG9hZEZpbGVOYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZG93bmxv
YWRGaWxlVHlwZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRvd25sb2FkTUlNRVR5cGU7Cisg
ICAgcmVhZEZpbGUoX2Rvd25sb2FkRGVzdGluYXRpb25VUkwuZ2V0KCksIGRvd25sb2FkRmlsZVNp
emUsIGRvd25sb2FkRmlsZU5hbWUsIGRvd25sb2FkRmlsZVR5cGUsIGRvd25sb2FkTUlNRVR5cGUp
OworCisgICAgRVhQRUNUX0VRKF9leHBlY3RlZEZpbGVTaXplLCBkb3dubG9hZEZpbGVTaXplKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkRmlsZU5hbWUuZ2V0KCksIGRvd25sb2FkRmls
ZU5hbWUuZ2V0KCkpOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlVHlwZS5nZXQo
KSwgZG93bmxvYWRGaWxlVHlwZS5nZXQoKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3Rl
ZE1JTUVUeXBlLmdldCgpLCBkb3dubG9hZE1JTUVUeXBlLmdldCgpKTsKIH0KIAogQGVuZAogCi1z
dGF0aWMgdm9pZCBydW5UZXN0KENsYXNzIG5hdmlnYXRpb25EZWxlZ2F0ZUNsYXNzLCBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QpCitzdGF0aWMgdm9pZCBydW5UZXN0KFF1aWNrTG9va0RlbGVnYXRlICpk
ZWxlZ2F0ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBCT09MIHNob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmcpCiB7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdF0pOwotICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW25h
dmlnYXRpb25EZWxlZ2F0ZUNsYXNzIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgYXV0byBwcm9j
ZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XSk7CisgICAgW3By
b2Nlc3NQb29sIF9zZXREb3dubG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKKworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmdRdWlja0xvb2tQcmV2aWV3OnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmddOworICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVXRpbDo6cnVuKCZp
c0RvbmUpOwogfQogCi1URVNUKFF1aWNrTG9vaywgTmF2aWdhdGlvbkRlbGVnYXRlKQorc3RhdGlj
IHZvaWQgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVn
YXRlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgcnVuVGVzdChbUXVpY2tMb29rTmF2
aWdhdGlvbkRlbGVnYXRlIGNsYXNzXSwgcGFnZXNEb2N1bWVudFJlcXVlc3QpOwotICAgIEVYUEVD
VF9UUlVFKGRpZFN0YXJ0UXVpY2tMb29rTG9hZCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkRmluaXNo
UXVpY2tMb29rTG9hZCk7CisgICAgcnVuVGVzdChkZWxlZ2F0ZSwgcmVxdWVzdCwgWUVTKTsKIH0K
IAotVEVTVChRdWlja0xvb2ssIEFzeW5jTmF2aWdhdGlvbkRlbGVnYXRlKQorc3RhdGljIHZvaWQg
cnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhRdWlja0xvb2tEZWxlZ2F0ZSAqZGVsZWdhdGUsIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICBydW5UZXN0KFtRdWlja0xvb2tBc3luY05hdmln
YXRpb25EZWxlZ2F0ZSBjbGFzc10sIHBhZ2VzRG9jdW1lbnRSZXF1ZXN0KTsKLSAgICBFWFBFQ1Rf
VFJVRShkaWRTdGFydFF1aWNrTG9va0xvYWQpOwotICAgIEVYUEVDVF9UUlVFKGRpZEZpbmlzaFF1
aWNrTG9va0xvYWQpOworICAgIHJ1blRlc3QoZGVsZWdhdGUsIHJlcXVlc3QsIE5PKTsKIH0KIAot
QGludGVyZmFjZSBRdWlja0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05h
dmlnYXRpb25EZWxlZ2F0ZT4KK1RFU1QoUXVpY2tMb29rLCBBbGxvd1Jlc3BvbnNlQmVmb3JlTG9h
ZGluZ1ByZXZpZXcpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBy
ZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVu
VGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0
ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlk
RmluaXNoUXVpY2tMb29rTG9hZF0pOworfQorCitURVNUKFF1aWNrTG9vaywgQWxsb3dSZXNwb25z
ZUFmdGVyTG9hZGluZ1ByZXZpZXcpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNw
b25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVuVGVz
dERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRp
ZFN0YXJ0UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5p
c2hRdWlja0xvb2tMb2FkXSk7Cit9CisKK0BpbnRlcmZhY2UgUXVpY2tMb29rQXN5bmNEZWxlZ2F0
ZSA6IFF1aWNrTG9va0RlbGVnYXRlCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tE
ZWNpZGVQb2xpY3lEZWxlZ2F0ZQorQGltcGxlbWVudGF0aW9uIFF1aWNrTG9va0FzeW5jRGVsZWdh
dGUKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5Q2FuY2VsKTsKKyAgICBpbnQ2NF90IGRlZmVycmVkV2FpdFRpbWUgPSAxMDAg
KiBOU0VDX1BFUl9NU0VDOworICAgIGRpc3BhdGNoX3RpbWVfdCB3aGVuID0gZGlzcGF0Y2hfdGlt
ZShESVNQQVRDSF9USU1FX05PVywgZGVmZXJyZWRXYWl0VGltZSk7CisKKyAgICBkaXNwYXRjaF9h
ZnRlcih3aGVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBkZWNpc2lv
bkhhbmRsZXIoX3Jlc3BvbnNlUG9saWN5KTsKKyAgICB9KTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2
aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK0BlbmQKKwor
VEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQog
ewotICAgIGlzRG9uZSA9IHRydWU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlj
a0xvb2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0Rv
Y3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3dd
KTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQRUNUX1RS
VUUoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9UUlVFKFtk
ZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXdX
ZWJQcm9jZXNzRGlkQ3Jhc2g6KFdLV2ViVmlldyAqKXdlYlZpZXcKK1RFU1QoUXVpY2tMb29rLCBB
c3luY0FsbG93UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xv
b2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3Vt
ZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3Bv
bnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0
RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlk
U3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlz
aFF1aWNrTG9va0xvYWRdKTsKIH0KIAotQGVuZAorVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3Bv
bnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNE
b2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNl
bF0pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9GQUxT
RShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOworfQogCi1AaW50ZXJmYWNlIFF1
aWNrTG9va0ZyYW1lTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVnYXRl
PgotQGVuZAorVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmll
dykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1F
VHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGlu
ZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3Vt
ZW50VVJMXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9h
ZF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7
Cit9CiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tGcmFtZUxvYWREZWxlZ2F0ZQorVEVTVChR
dWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKK3sKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5Ol9XS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CisgICAgcnVuVGVzdERlY2lkZUJl
Zm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
cGFnZXNEb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkU3RhcnRR
dWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlj
a0xvb2tMb2FkXSk7CiAKLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKKyAgICBVdGlsOjpydW4oJmRvd25sb2Fk
SXNEb25lKTsKKyAgICBbZGVsZWdhdGUgdmVyaWZ5RG93bmxvYWRdOworfQorCitURVNUKFF1aWNr
TG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdN
SU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5Ol9XS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CisgICAgcnVuVGVzdERlY2lk
ZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZFN0YXJ0
UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlj
a0xvb2tMb2FkXSk7CiB9CiAKK0BpbnRlcmZhY2UgUXVpY2tMb29rUGFzc3dvcmREZWxlZ2F0ZSA6
IFF1aWNrTG9va0RlbGVnYXRlCiBAZW5kCiAKLVRFU1QoUXVpY2tMb29rLCBDYW5jZWxOYXZpZ2F0
aW9uQWZ0ZXJSZXNwb25zZSkKK0BpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tQYXNzd29yZERlbGVn
YXRlCisKKy0gKHZvaWQpX3dlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudDooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJ1blRlc3QoW1F1aWNrTG9va0RlY2lk
ZVBvbGljeURlbGVnYXRlIGNsYXNzXSwgcGFnZXNEb2N1bWVudFJlcXVlc3QpOworICAgIGlzRG9u
ZSA9IHRydWU7CiB9CiAKLUBpbnRlcmZhY2UgUXVpY2tMb29rUGFzc3dvcmROYXZpZ2F0aW9uRGVs
ZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPgogQGVuZAogCi1A
aW1wbGVtZW50YXRpb24gUXVpY2tMb29rUGFzc3dvcmROYXZpZ2F0aW9uRGVsZWdhdGUKK1RFU1Qo
UXVpY2tMb29rLCBSZXF1ZXN0UGFzc3dvcmRCZWZvcmVMb2FkaW5nUHJldmlldykKK3sKKyAgICBO
U1VSTCAqcGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFVSTCA9IFtOU0J1bmRsZS5tYWluQnVuZGxl
IFVSTEZvclJlc291cmNlOkAicGFzc3dvcmQtcHJvdGVjdGVkIiB3aXRoRXh0ZW5zaW9uOkAicGFn
ZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEV4cGVjdGVkRmlsZVVSTDpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50VVJMIHJlc3BvbnNl
UG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVj
aWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50VVJMXSk7Cit9CiAKLS0gKHZvaWQpX3dlYlZp
ZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDooV0tXZWJWaWV3ICopd2Vi
VmlldworVEVTVChRdWlja0xvb2ssIFJlcXVlc3RQYXNzd29yZEFmdGVyTG9hZGluZ1ByZXZpZXcp
CiB7Ci0gICAgaXNEb25lID0gdHJ1ZTsKKyAgICBOU1VSTCAqcGFzc3dvcmRQcm90ZWN0ZWREb2N1
bWVudFVSTCA9IFtOU0J1bmRsZS5tYWluQnVuZGxlIFVSTEZvclJlc291cmNlOkAicGFzc3dvcmQt
cHJvdGVjdGVkIiB3aXRoRXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xv
b2tQYXNzd29yZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYXNzd29y
ZFByb3RlY3RlZERvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmll
d01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3dd
KTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRVUkxdKTsKIH0K
IAorQGludGVyZmFjZSBRdWlja0xvb2tGcmFtZUxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXZWJG
cmFtZUxvYWREZWxlZ2F0ZT4KIEBlbmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMAorQGltcGxlbWVudGF0aW9uIFF1aWNrTG9va0ZyYW1lTG9hZERlbGVn
YXRlCiAKLVRFU1QoUXVpY2tMb29rLCBEaWRSZXF1ZXN0UGFzc3dvcmROYXZpZ2F0aW9uRGVsZWdh
dGUpCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9hZEZvckZy
YW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7Ci0gICAgTlNVUkxSZXF1ZXN0ICpwYXNzd29yZFByb3Rl
Y3RlZERvY3VtZW50UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhc3N3b3JkLXByb3RlY3RlZCIgd2l0
aEV4dGVuc2lvbjpAInBhZ2VzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKLSAgICBydW5UZXN0KFtRdWlja0xvb2tQYXNzd29yZE5hdmlnYXRpb25EZWxlZ2F0ZSBj
bGFzc10sIHBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRSZXF1ZXN0KTsKKyAgICBpc0RvbmUgPSB0
cnVlOwogfQogCi0jZW5kaWYKK0BlbmQKIAogVEVTVChRdWlja0xvb2ssIExlZ2FjeVF1aWNrTG9v
a0NvbnRlbnQpCiB7CkBAIC0yMTEsMTggKzM2OSwyMyBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5
UXVpY2tMb29rQ29udGVudCkKIAogICAgIFdlYkZyYW1lICptYWluRnJhbWUgPSBbd2ViVmlldyBt
YWluRnJhbWVdOwogCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW21haW5GcmFtZSBsb2FkUmVx
dWVzdDpwYWdlc0RvY3VtZW50UmVxdWVzdF07CisgICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdXTsKICAgICBVdGls
OjpydW4oJmlzRG9uZSk7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogCisgICAgTlNVSW50ZWdlciBl
eHBlY3RlZEZpbGVTaXplOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxlTmFt
ZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVjdGVkRmlsZVR5cGU7CisgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBleHBlY3RlZE1JTUVUeXBlOworICAgIHJlYWRGaWxlKHBhZ2VzRG9jdW1l
bnRVUkwsIGV4cGVjdGVkRmlsZVNpemUsIGV4cGVjdGVkRmlsZU5hbWUsIGV4cGVjdGVkRmlsZVR5
cGUsIGV4cGVjdGVkTUlNRVR5cGUpOworCiAgICAgTlNEaWN0aW9uYXJ5ICpxdWlja0xvb2tDb250
ZW50ID0gbWFpbkZyYW1lLmRhdGFTb3VyY2UuX3F1aWNrTG9va0NvbnRlbnQ7CiAgICAgTlNTdHJp
bmcgKmZpbGVQYXRoID0gcXVpY2tMb29rQ29udGVudFtXZWJRdWlja0xvb2tGaWxlTmFtZUtleV07
Ci0gICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOmZpbGVQYXRoXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRmlsZU5h
bWUsIGZpbGVQYXRoLmxhc3RQYXRoQ29tcG9uZW50KTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhw
ZWN0ZWRVVEksIHF1aWNrTG9va0NvbnRlbnRbV2ViUXVpY2tMb29rVVRJS2V5XSk7CisgICAgRVhQ
RUNUX1RSVUUoW05TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpm
aWxlUGF0aF0pOworICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZEZpbGVOYW1lLmdldCgpLCBm
aWxlUGF0aC5sYXN0UGF0aENvbXBvbmVudCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVk
RmlsZVR5cGUuZ2V0KCksIHF1aWNrTG9va0NvbnRlbnRbV2ViUXVpY2tMb29rVVRJS2V5XSk7CiAK
LSAgICBOU0RpY3Rpb25hcnkgKmZpbGVBdHRyaWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZJdGVtQXRQYXRoOmZpbGVQYXRoIGVycm9yOm5pbF07Cisg
ICAgTlNEaWN0aW9uYXJ5ICpmaWxlQXR0cmlidXRlcyA9IFtOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRN
YW5hZ2VyIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVBhdGggZXJyb3I6bmlsXTsKICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRGaWxlU2l6ZSwgW2ZpbGVBdHRyaWJ1dGVzW05TRmlsZVNpemVdIHVu
c2lnbmVkSW50ZWdlclZhbHVlXSk7CiAKICAgICBpc0RvbmUgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366374</attachid>
            <date>2019-03-30 22:08:52 -0700</date>
            <delta_ts>2019-03-31 00:14:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196433-20190330220851.patch</filename>
            <type>text/plain</type>
            <size>65830</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjNTc3ZWI1ZDQxNDQ2NTUwZDExNDRi
YTkyMDBjOGRmODkxZWQ2ZmQuLmJkN2Q3MmE3YjFhYWM3NGU5MGYyZTBlOWQ4ZGY2M2NlYzJkMzk3
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0aGUgbmF2
aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcgYSBRdWlj
a0xvb2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0
cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJEZXN0cm95ZWQ6Om9wZXJhdG9yLT4pOgorICAg
ICAgICAoV1RGOjpOZXZlckRlc3Ryb3llZDo6b3BlcmF0b3ItPiBjb25zdCk6CisKIDIwMTktMDMt
MjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW4t
Zml4IHRoZSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc2NDI1MDJiMzhmMzkyM2M1NmNiNjJlNGM4MTE2
MWU4NjhkYmM3NTAuLjY1OTk3MmQwYjc0YjU1YmY3YzU5ZDUyZWU4NDU3ZmY4YjAxNDFhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxOS0wMy0zMCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gV2ViS2l0IHNob3VsZCBjb25zdWx0IHRoZSBu
YXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSBiZWZvcmUgcHJldmlld2luZyBhIFF1
aWNrTG9vayBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2NDMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTI5MzMwNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFJlc291cmNl
TG9hZGVyIHdvdWxkIGVuY291bnRlciBhIHJlc3BvbnNlIHdpdGggYSBNSU1FIHR5cGUgdGhhdCBR
dWlja0xvb2sgc3VwcG9ydHMsIHRoZQorICAgICAgICByZXNwb25zZSB3b3VsZCBiZSBpbXBsaWNp
dGx5IGFsbG93ZWQgYW5kIGEgUXVpY2tMb29rIHByZXZpZXcgd291bGQgYmUgaW1tZWRpYXRlbHkg
Z2VuZXJhdGVkLgorICAgICAgICBXaGVuIHRoZSBnZW5lcmF0aW9uIGZpbmlzaGVkIHRoZSBjbGll
bnQncyBuYXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSB3b3VsZCBiZQorICAgICAg
ICBub3RpZmllZCBvZiB0aGUgcHJldmlldyByZXNwb25zZSAobm90IHRoZSBvcmlnaW5hbCBIVFRQ
IHJlc3BvbnNlKS4gTm90YWJseSwgdGhlIHByZXZpZXcKKyAgICAgICAgcmVzcG9uc2UgaGFzIGEg
VVJMIHNjaGVtZSBvZiAieC1hcHBsZS1xbC1pZCIsIGRvZXMgbm90IGluY2x1ZGUgdGhlIHVuZGVy
bHlpbmcgSFRUUCBoZWFkZXJzLAorICAgICAgICBhbmQgdXN1YWxseSBoYXMgYSBNSU1FIHR5cGUg
b2YgInRleHQvaHRtbCIgb3IgImFwcGxpY2F0aW9uL3BkZiIgcmF0aGVyIHRoYW4gdGhlIG9yaWdp
bmFsCisgICAgICAgIGRvY3VtZW50J3MgTUlNRSB0eXBlLgorCisgICAgICAgIFRvIGFsbG93IGNs
aWVudHMgdG8gbWFrZSBiZXR0ZXIgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25z
LCB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlCisgICAgICAgIGFib3ZlIGJlaGF2aW9yIGZvciBXS1dl
YlZpZXcgY2xpZW50cyB0aGF0IGhhdmUgbGlua2VkIGFnYWluc3QgYSB2ZXJzaW9uIG9mIFdlYktp
dCB0aGF0CisgICAgICAgIGluY2x1ZGVzIHRoaXMgY2hhbmdlLiBSYXRoZXIgdGhhbiBub3RpZnlp
bmcgdGhlIGNsaWVudCdzIG5hdmlnYXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlCisgICAg
ICAgIG9mIHRoZSBwcmV2aWV3IHJlc3BvbnNlLCB3ZSBub3RpZnkgdGhlIGNsaWVudCBvZiB0aGUg
b3JpZ2luYWwgSFRUUCByZXNwb25zZS4gT25seSBpZiB0aGUKKyAgICAgICAgY2xpZW50IHJlc3Bv
bmRzIHdpdGggYSBwb2xpY3kgb2YgImFsbG93IiB3aWxsIHRoZSBRdWlja0xvb2sgcHJldmlldyBy
ZXNwb25zZSBiZSBsb2FkZWQKKyAgICAgICAgKHdpdGhvdXQgYW5vdGhlciBjYWxsIHRvIHRoZSBu
YXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSkuCisKKyAgICAgICAgTm9uLVdLV2Vi
VmlldyBjbGllbnRzIGFuZCBjbGllbnRzIHRoYXQgaGF2ZSBsaW5rZWQgYWdhaW5zdCBhIHZlcnNp
b24gb2YgV2ViS2l0IHRoYXQgZG9lcyBub3QKKyAgICAgICAgaW5jbHVkZSB0aGlzIGNoYW5nZSB3
aWxsIHJldGFpbiB0aGUgb3JpZ2luYWwgYmVoYXZpb3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyBsYXlvdXQgdGVzdHMgYW5kIG5ldyBhbmQgZXhpc3RpbmcgQVBJIHRlc3RzLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkQ3JlYXRlUHJldmlld0xvYWRlckZvclJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9p
b3MvUHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0
aFJlc291cmNlTG9hZGVyOnJlc291cmNlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYlByZXZp
ZXdMb2FkZXIgX2xvYWRQcmV2aWV3SWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0xv
YWRlciBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAg
ICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOgorICAg
ICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoLVtXZWJQ
cmV2aWV3TG9hZGVyIF9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3NhcnldKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1JTUVU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICog
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9Q
cmV2aWV3Q29udmVydGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
c3VwcG9ydHNNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmll
d0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKwogMjAxOS0wMy0yOCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9m
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgR1BVXSBQcm90b3R5cGUgY29tcHV0ZSBwaXBl
bGluZSB3aXRoIE1TTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MzgyMGRhZGYzMzdhZmY0NDBhODE2NzkxYTlhNDlj
NDU0MzlhZDRmLi5kMzUyMGI3MzRjZjAwZWE3YmU5OTlmYjRhOWJjM2U2ZTQ3ZWUxMDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTAzLTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXZWJLaXQgc2hvdWxkIGNvbnN1bHQgdGhlIG5hdmln
YXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlIGJlZm9yZSBwcmV2aWV3aW5nIGEgUXVpY2tM
b29rIGRvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTY0MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MjkzMzA1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gU1BJIGZvciBzZXR0aW5nIHRoZSBRdWlja0xvb2sgbmF2aWdhdGlvbiByZXNw
b25zZSBwb2xpY3kKKyAgICAgICAgZGVjaXNpb24gYmVoYXZpb3IuIFRoZSBjb25maWd1cmF0aW9u
IHNldHRpbmcgZGVmYXVsdHMgdG8gWUVTIGZvciBjbGllbnRzIGxpbmtlZCBvbiBvciBhZnRlcgor
ICAgICAgICB0aGlzIFdlYktpdCBjaGFuZ2UgYW5kIE5PIG90aGVyd2lzZS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1l
QW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5j
ZXMueWFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAg
ICAgICAoZGVmYXVsdFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2
aWV3KToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAg
ICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlld10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRTaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMTktMDMtMjggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEF1dG9tYXRpYyBmb2N1cyBvZiBpbnB1dCBmaWVsZCBpcyBm
bGFreQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBiL1NvdXJj
ZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5kZXggZTdlOGE3ZWEwMzk4OWNiYTQwNGVhYmI4
MjUzNTAwZDVjM2Y3ZjU1My4uZTBlNDY3NzU2MWM3YmZiZDllNTU2ODRjNTI0NWRjYTVlMmIzY2I4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsOSArNjAsMTMgQEAgcHVibGljOgog
ICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KICAgICBUJiBn
ZXQoKSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQogCisgICAgVCogb3BlcmF0b3ItPigp
IHsgcmV0dXJuIHN0b3JhZ2VQb2ludGVyKCk7IH0KKwogICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkg
Y29uc3QgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KICAgICBjb25zdCBUJiBnZXQoKSBj
b25zdCB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQogCisgICAgY29uc3QgVCogb3BlcmF0
b3ItPigpIGNvbnN0IHsgcmV0dXJuIHN0b3JhZ2VQb2ludGVyKCk7IH0KKwogcHJpdmF0ZToKICAg
ICB1c2luZyBQb2ludGVyVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBl
KjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc5ZGIzNGE0Y2RlYjFlZDQ3ODY5MWM1NWM4ZWQ1ZjI2OTRjNmRlOGQuLmM0MDE4
MDQ0MjQyMGQ5ZTE0MjFiODUyZGM4NDAyZDc2MGYzMzFjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMjMsNyArMzAyMyw3
IEBACiAJCUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1
OUIzOEEwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKIAkJQTFCRjZCODIx
QUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi87IH07CiAJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4
QSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmggKi87IH07Ci0JCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVy
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMx
NTA3ODFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyB9OworCQlBMUMx
NTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThD
IC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRN
ZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
Q0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlB
MUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1
NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKIAkJQTFDQzU2NjkxRjQ2MTQ4MDAwQTQ1
NTVCIC8qIEpTUGF5bWVudENvbXBsZXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY0RTFGNDYxNDUyMDBBNDU1NUIgLyogSlNQYXltZW50Q29t
cGxldGUuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ4M2VjZDNjMTNkNjFlNjlhMzU4ZWI4MWNjYTZlMzY0Y2M0NTIwMDkuLjIzZGUx
NTQ0OWEwNWVjMTQ5MzI5MjJjY2JjMzc0NDNkNDcwM2Q5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDYgKzYzLDcgQEAKICNlbmRpZgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCisjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgogI2lu
Y2x1ZGUgIlByZXZpZXdMb2FkZXIuaCIKICNlbmRpZgogCkBAIC0zMDQsNyArMzA1LDcgQEAgYm9v
bCBTdWJyZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ3JlYXRlUHJldmlld0xvYWRlckZvclJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG8KICAgICBpZiAobV9wcmV2aWV3TG9hZGVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9y
TUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgcmV0dXJuIFByZXZpZXdDb252ZXJ0
ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSk7CiB9CiAKICNlbmRpZgpA
QCAtMzE5LDcgKzMyMCw4IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKHNob3VsZENyZWF0ZVByZXZpZXdMb2FkZXJGb3JSZXNwb25zZShyZXNw
b25zZSkpIHsKICAgICAgICAgbV9wcmV2aWV3TG9hZGVyID0gUHJldmlld0xvYWRlcjo6Y3JlYXRl
KCp0aGlzLCByZXNwb25zZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fcHJldmll
d0xvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSkKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IGE2MzA5NzQ2NmI1ZmViM2I0M2Vm
MjIxNDhhNDFkZmU1NmE2NTc1NmEuLjYxOGU5NDI5NTAxN2RjM2I4MzAzNjVjMTE2NzYxNTM4YjFk
YjYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsMTAgKzQxLDEwIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFByZXZpZXdMb2FkZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3Jl
YXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIH5QcmV2
aWV3TG9hZGVyKCk7CiAKKyAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvUHJldmlld0xvYWRlci5tbQppbmRleCA3MjUxZDcwYjA1MTcwNmUyNmI1MGZhZTUy
MjBmMzI1NmEzNmY1MTk1Li5mZWExZWMyNzcwNjRlOWM3ZDU0OTE1NmIwYzgxYTBiOTlmODdhYmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
NiArMjksNyBAQAogI2lmIFVTRShRVUlDS19MT09LKQogCiAjaW1wb3J0ICJEb2N1bWVudExvYWRl
ci5oIgorI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0
ICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMzYsNiArMzcs
NyBAQAogI2ltcG9ydCAiUHJldmlld0xvYWRlckNsaWVudC5oIgogI2ltcG9ydCAiUXVpY2tMb29r
LmgiCiAjaW1wb3J0ICJSZXNvdXJjZUxvYWRlci5oIgorI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNp
bXBvcnQgPHBhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgQGludGVyZmFjZSBXZWJQcmV2aWV3TG9hZGVy
IDogTlNPYmplY3QgewogICAgIFJlZlB0cjxQcmV2aWV3TG9hZGVyQ2xpZW50PiBfY2xpZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3Q29udmVydGVyPiBfY29udmVydGVyOwogICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gX2J1ZmZlcmVkRGF0YUFycmF5OwotICAgIEJPT0wgX2hh
c1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7CisgICAgQk9PTCBfaGFzTG9hZGVkUHJldmlldzsKICAg
ICBCT09MIF9oYXNQcm9jZXNzZWRSZXNwb25zZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBf
YnVmZmVyZWREYXRhOwogICAgIGxvbmcgbG9uZyBfbGVuZ3RoUmVjZWl2ZWQ7CkBAIC01OSw2ICs2
MSw4IEBAIC0gKHZvaWQpYXBwZW5kRGF0YUFycmF5OihOU0FycmF5PE5TRGF0YSAqPiAqKWRhdGFB
cnJheTsKIC0gKHZvaWQpZmluaXNoZWRBcHBlbmRpbmc7CiAtICh2b2lkKWZhaWxlZDsKIAorQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmc7CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlByZXZpZXdMb2FkZXIKQEAg
LTc3LDE0ICs4MSwxNCBAQCBzdGF0aWMgUHJldmlld0xvYWRlckNsaWVudCYgZW1wdHlDbGllbnQo
KQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUmVzb3VyY2VMb2Fk
ZXImKXJlc291cmNlTG9hZGVyIHJlc291cmNlUmVzcG9uc2U6KGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKXJlc291cmNlUmVzcG9uc2UKIHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVy
KTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwogICAgIF9jb252ZXJ0ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CiAgICAg
X2J1ZmZlcmVkRGF0YUFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CisgICAgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgPSByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlj
a0xvb2tQcmV2aWV3KCk7CiAKICAgICBpZiAodGVzdGluZ0NsaWVudCgpKQogICAgICAgICBfY2xp
ZW50ID0gdGVzdGluZ0NsaWVudCgpOwpAQCAtMTE5LDE1ICsxMjMsMTYgQEAgLSAodm9pZClmYWls
ZWQKICAgICBfY2xpZW50LT5kaWRGYWlsKCk7CiB9CiAKLS0gKHZvaWQpX3NlbmREaWRSZWNlaXZl
UmVzcG9uc2VJZk5lY2Vzc2FyeQorLSAodm9pZClfbG9hZFByZXZpZXdJZk5lZWRlZAogewogICAg
IGlmICghX3Jlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIV9y
ZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7Ci0gICAgaWYgKF9oYXNTZW50
RGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgIGlmIChfaGFzTG9hZGVkUHJldmlldykKICAgICAgICAg
cmV0dXJuOwogCisgICAgX2hhc0xvYWRlZFByZXZpZXcgPSBZRVM7CiAgICAgW19idWZmZXJlZERh
dGFBcnJheSByZW1vdmVBbGxPYmplY3RzXTsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UgeyBfY29udmVydGVyLT5wcmV2aWV3UmVzcG9uc2UoKSB9OwpAQCAtMTM1LDggKzE0MCwxNCBA
QCAtICh2b2lkKV9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3NhcnkKICAgICBBU1NFUlQo
cmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7CiAKICAgICBfcmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShfY29udmVydGVyKSk7
CisgICAgX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKCk7CisKKyAgICBpZiAoX3Nob3VsZERl
Y2lkZVBvbGljeUJlZm9yZUxvYWRpbmcpIHsKKyAgICAgICAgX2hhc1Byb2Nlc3NlZFJlc3BvbnNl
ID0gWUVTOworICAgICAgICBfcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFJl
c3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIF9oYXNTZW50
RGlkUmVjZWl2ZVJlc3BvbnNlID0gWUVTOwogICAgIF9oYXNQcm9jZXNzZWRSZXNwb25zZSA9IE5P
OwogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbc2Vs
ZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIF9oYXNQcm9jZXNz
ZWRSZXNwb25zZSA9IFlFUzsKQEAgLTE3MCw4ICsxODEsOCBAQCAtICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRh
dGEgbAogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOwogICAgIGlm
IChfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBbc2VsZiBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNzYXJ5XTsK
KworICAgIFtzZWxmIF9sb2FkUHJldmlld0lmTmVlZGVkXTsKIAogICAgIGF1dG8gZGF0YUxlbmd0
aCA9IGRhdGEubGVuZ3RoOwogCkBAIC0yMDEsNyArMjEyLDcgQEAgLSAodm9pZCljb25uZWN0aW9u
RGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogICAgIGlmIChf
cmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBBU1NFUlQoX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2UpOworICAgIEFTU0VS
VChfaGFzTG9hZGVkUHJldmlldyk7CiAKICAgICBpZiAoIV9oYXNQcm9jZXNzZWRSZXNwb25zZSkg
ewogICAgICAgICBfbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nID0gWUVTOwpAQCAtMjI2LDcg
KzIzNyw2IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKGVycm9yKSkgewotICAgICAgICBbc2VsZiBf
c2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNzYXJ5XTsKICAgICAgICAgX3Jlc291cmNlTG9h
ZGVyLT5kaWRGYWlsKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NiwyOCAr
MjY2LDE1IEBAIFByZXZpZXdMb2FkZXI6On5QcmV2aWV3TG9hZGVyKCkKIHsKIH0KIAotYm9vbCBQ
cmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQorc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6OmNyZWF0
ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0
ZXh0L2h0bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRl
eHQvcGxhaW4iKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkTUlNRVR5cGVzOwotICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKm1pbWVU
eXBlIGluIFFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpKQotICAgICAgICAgICAg
c3VwcG9ydGVkTUlNRVR5cGVzLmdldCgpLmFkZChtaW1lVHlwZSk7Ci0gICAgfSk7Ci0KLSAgICBp
ZiAobWltZVR5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biBzdXBwb3J0ZWRNSU1FVHlwZXMuZ2V0KCkuY29udGFpbnMobWltZVR5cGUpOworICAgIEFTU0VS
VChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkp
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJl
c3BvbnNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2Jvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQogewotICAgIEFTU0VSVChzaG91bGRDcmVhdGVGb3JNSU1FVHlw
ZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJl
dmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuICFbbV9wcmV2aWV3TG9h
ZGVyIHNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmddOwogfQogCiBib29sIFByZXZpZXdM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCBkN2Q1MjgzNzE3NTZiZmRjMWUwNThiMmJj
NTZmMDA3ZDYzNTU0MjgzLi43MjA1ZDFmZDM4MzA5Yjc2ZTJiNDU0YjBiMTAyMzZlZTA1ZTBjOWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC04MjMsNiArODIzLDkgQEAgYWRDbGlj
a0F0dHJpYnV0aW9uRW5hYmxlZDoKIGJsb2NraW5nT2ZTbWFsbFBsdWdpbnNFbmFibGVkOgogICBp
bml0aWFsOiB0cnVlCiAKK3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQ
cmV2aWV3OgorICBpbml0aWFsOiBmYWxzZQorCiAjIERlcHJlY2F0ZWQKIAogaWNlQ2FuZGlkYXRl
RmlsdGVyaW5nRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKaW5kZXggZjllYWJiNWZiOTBmMjk0M2I0ODhhODg2NWZlNzUyYTRjMTQ4YmJjMy4u
NmNhZTE0YWE0YmNmY2RhNTA1M2Q4ZTY3OGE0OTA0YjA3N2Q4MzhhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC01Myw2ICs1MywxMCBAQAogI2luY2x1ZGUgIkltYWdlRGVjb2RlckFWRk9iakMu
aCIKICNlbmRpZgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW5jbHVkZSAiUHJldmlld0NvbnZl
cnRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzKCkKQEAgLTY0Myw2ICs2NDcsMTEgQEAgYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBpZiAo
aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpIHx8IGlzU3VwcG9ydGVkSlNP
Tk1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyNpZiBVU0UoUVVJ
Q0tfTE9PSykKKyAgICBpZiAoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShtaW1l
VHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBpZiAoc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikpCiAgICAgICAgIHJl
dHVybiAhaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaApp
bmRleCAwMWM3ZDI1NTk2MzYxZTlkYWFmNjFjYTI1MGMyYmZiNzExMWQyOWY1Li41YTA2ZjJlZjg5
ZWY1YzIxYmUxNTdjNzFkYTE0MTllYzg0ODA5ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCkBAIC00MSw2ICs0
MSw4IEBAIHB1YmxpYzoKICAgICBQcmV2aWV3Q29udmVydGVyKGlkIGRlbGVnYXRlLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CiAgICAgUHJl
dmlld0NvbnZlcnRlcihOU0RhdGEgKiwgY29uc3QgU3RyaW5nJiB1dGksIGNvbnN0IFN0cmluZyYg
cGFzc3dvcmQgPSB7IH0pOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9y
dHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIFFMUHJldmlld0NvbnZl
cnRlciAqcGxhdGZvcm1Db252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29udmVy
dGVyLmdldCgpOyB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHNhZmVSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIFJlc291cmNlUmVxdWVzdCBwcmV2aWV3UmVxdWVzdCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UHJldmlld0NvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1ByZXZpZXdDb252ZXJ0ZXIubW0KaW5kZXggNDgyYWFhYjc1ODlkZTEzZGE4ZWU1NzA2Nzc5MDc2
MTQ3NzUyYmE3Yy4uYjVjZDI4MzU2ZjI2OWY5ZDYxNjMxMzdkNTFhM2E0YzI4OGJiNDk5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZl
cnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3
Q29udmVydGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShRVUlDS19MT09LKQogCisjaW1w
b3J0ICJRdWlja0xvb2suaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tTb2Z0TGluay5o
PgpAQCAtNTMsNiArNTQsMjQgQEAgUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihO
U0RhdGEgKmRhdGEsIGNvbnN0IFN0cmluZyYgdXRpLCBjb25zdCBTdHJpbmcKIHsKIH0KIAorYm9v
bCBQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCit7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
dGV4dC9odG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0
ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZE1JTUVUeXBlczsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBmb3IgKE5TU3RyaW5nICptaW1l
VHlwZSBpbiBRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSkKKyAgICAgICAgICAg
IHN1cHBvcnRlZE1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKKyAgICB9KTsKKworICAgIGlmICht
aW1lVHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHN1
cHBvcnRlZE1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworfQorCiBSZXNvdXJjZVJlcXVl
c3QgUHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAogewogICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRlciBzYWZlUmVx
dWVzdEZvclJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6
OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1ByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCA1YzBlODc5M2Iw
YmIzNWRjMWI2ZDhhM2Y0MWJhYzY3YmE2ZmJiZDViLi5kMjAyZWJjNmRmY2Q0ZDNlZmNmOWJkYjk3
YTM3NmM2MDQwMGE0MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9QcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UHJl
dmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZB
cnJheVJlZikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGNmYTk5YjE3NWYz
NTM5YWQzNjRmZWI5MTQ5Yzc3OWM5NWZiZmJkMWUuLmY4ZTQ2NDIzOTc5OWNlNjQ2NjVhMGFmN2Ux
YmM2ZjNlYWEyNGVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0jaW5jbHVkZSA8V2ViQ29y
ZS9QcmV2aWV3TG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3Q29udmVydGVyLmg+
CiAjZW5kaWYKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTM4Niw3
ICszODYsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9h
ZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgIEFTU0VSVChpc01haW5SZXNv
dXJjZSgpKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIGlmIChQcmV2aWV3TG9hZGVyOjpz
aG91bGRDcmVhdGVGb3JNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSkKKyAgICBpZiAoUHJl
dmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCmluZGV4IDYwOWQzMWYyZmEwMTVlNGRiZGRhY2MzYjU0ZDViMzIzNjRhNzhl
ZjAuLjMyMDIxNWRkZGY3Zjc0OTY2ZGQwODZhYTczY2Q2ODc3MjM1YjhkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTE5Miw2ICsxMTkyLDEwIEBAIEVk
aXRhYmxlSW1hZ2VzRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZhbHNl
CiAKK1Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3OgorICBk
ZWZhdWx0VmFsdWU6IGZhbHNlCisgIHR5cGU6IGJvb2wKKwogIyBGb3IgZXhwZXJpbWVudGFsIGZl
YXR1cmVzOgogIyBUaGUgdHlwZSBzaG91bGQgYmUgYm9vbGVhbi4KICMgWW91IG11c3QgcHJvdmlk
ZSBhIGh1bWFuUmVhZGFibGVOYW1lIGFuZCBodW1hblJlYWRhYmxlRGVzY3JpcHRpb24gZm9yIGFs
bCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGVjNmNjN2ZlY2MxOGMzM2VmMGNmNTBmZTU0
ZDBjODQxYmVmMTY3ZTAuLmQ4ZTk0MzZmOTE1MDFiMzllOGU4M2ZjYWU0NTVkMDEwYmRhYzJkZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtNjI2LDYgKzYyNiw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjoo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojp1
c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZTo6VmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3k6OkNvbnRlbnQpKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0
RGlyZWN0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUikpKTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjphbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHNLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzaG91bGRBbGxvd1NldHRpbmdBbnlYSFJIZWFk
ZXJGcm9tRmlsZVVSTHMoKSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxv
YWRpbmdRdWlja0xvb2tQcmV2aWV3XSkpOwogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzS2V5OjpzeXN0ZW1QcmV2aWV3RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxlZF0p
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA3N2IxOWRkODZkYTU1NjE1MmJh
N2Q2NDljYjYzMWUxNGJkN2RlMWJmLi5kNjAyYWFmNGYyMDE0OTI1MzU4ZGU1NWIzYzU3MTBlY2Y5
OTk5OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtOTksNiArOTksMTYgQEAgc3RhdGlj
IF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFnTGlmdERlbGF5KE5TVUludGVnZXIgdmFsdWUpCiAgICAg
cmV0dXJuIF9XS0RyYWdMaWZ0RGVsYXlTaG9ydDsKIH0KIAorc3RhdGljIGJvb2wgZGVmYXVsdFNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkKK3sKKyNpZiBV
U0UoUVVJQ0tfTE9PSykKKyAgICBzdGF0aWMgYm9vbCBzaG91bGREZWNpZGUgPSBsaW5rZWRPbk9y
QWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFRoYXREZWNpZGVzUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXcpOworICAgIHJldHVybiBzaG91bGREZWNpZGU7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiAjZW5kaWYKIAogQGltcGxlbWVudGF0aW9u
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gewpAQCAtMTI5LDYgKzEzOSw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBCT09MIF90ZXh0SW50ZXJhY3Rpb25H
ZXN0dXJlc0VuYWJsZWQ7CiAgICAgQk9PTCBfbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQ7CiAgICAg
Qk9PTCBfc3lzdGVtUHJldmlld0VuYWJsZWQ7CisgICAgQk9PTCBfc2hvdWxkRGVjaWRlUG9saWN5
QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc7CiAjZW5kaWYKIAogICAgIEJPT0wgX2ludmlz
aWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkOwpAQCAtMjM2LDYgKzI0Nyw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0CiAgICAgX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkID0gWUVTOwogI2VuZGlmCiAg
ICAgX3N5c3RlbVByZXZpZXdFbmFibGVkID0gTk87CisgICAgX3Nob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3ID0gZGVmYXVsdFNob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogICAgIF9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCA9
IFdlYkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQoKTsKQEAgLTI5MSw2ICszMDMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2Rl
cjooTlNDb2RlciAqKWNvZGVyCiAgICAgW2NvZGVyIGVuY29kZUJvb2w6c2VsZi5fdGV4dEludGVy
YWN0aW9uR2VzdHVyZXNFbmFibGVkIGZvcktleTpAInRleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5h
YmxlZCJdOwogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX2xvbmdQcmVzc0FjdGlvbnNFbmFi
bGVkIGZvcktleTpAImxvbmdQcmVzc0FjdGlvbnNFbmFibGVkIl07CiAgICAgW2NvZGVyIGVuY29k
ZUJvb2w6c2VsZi5fc3lzdGVtUHJldmlld0VuYWJsZWQgZm9yS2V5OkAic3lzdGVtUHJldmlld0Vu
YWJsZWQiXTsKKyAgICBbY29kZXIgZW5jb2RlQm9vbDpzZWxmLl9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyBmb3JLZXk6QCJzaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyJdOwogI2Vsc2UKICAgICBbY29kZXIgZW5jb2Rl
SW50ZWdlcjpzZWxmLnVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgZm9yS2V5OkAidXNlcklu
dGVyZmFjZURpcmVjdGlvblBvbGljeSJdOwogI2VuZGlmCkBAIC0zMjUsNiArMzM4LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogICAgIHNlbGYuX3Rl
eHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCA9IFtjb2RlciBkZWNvZGVCb29sRm9yS2V5OkAi
dGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkIl07CiAgICAgc2VsZi5fbG9uZ1ByZXNzQWN0
aW9uc0VuYWJsZWQgPSBbY29kZXIgZGVjb2RlQm9vbEZvcktleTpAImxvbmdQcmVzc0FjdGlvbnNF
bmFibGVkIl07CiAgICAgc2VsZi5fc3lzdGVtUHJldmlld0VuYWJsZWQgPSBbY29kZXIgZGVjb2Rl
Qm9vbEZvcktleTpAInN5c3RlbVByZXZpZXdFbmFibGVkIl07CisgICAgc2VsZi5fc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcgPSBbY29kZXIgZGVjb2RlQm9v
bEZvcktleTpAInNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3
Il07CiAjZWxzZQogICAgIGF1dG8gdXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUNhbmRpZGF0
ZSA9IHN0YXRpY19jYXN0PFdLVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeT4oW2NvZGVyIGRl
Y29kZUludGVnZXJGb3JLZXk6QCJ1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5Il0pOwogICAg
IGlmICh1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5Q2FuZGlkYXRlID09IFdLVXNlckludGVy
ZmFjZURpcmVjdGlvblBvbGljeUNvbnRlbnQgfHwgdXNlckludGVyZmFjZURpcmVjdGlvblBvbGlj
eUNhbmRpZGF0ZSA9PSBXS1VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3lTeXN0ZW0pCkBAIC0z
ODEsNiArMzk1LDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAgICAgY29u
ZmlndXJhdGlvbi0+X3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCA9IHNlbGYtPl90ZXh0
SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X2xvbmdQcmVz
c0FjdGlvbnNFbmFibGVkID0gc2VsZi0+X2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkOwogICAgIGNv
bmZpZ3VyYXRpb24tPl9zeXN0ZW1QcmV2aWV3RW5hYmxlZCA9IHNlbGYtPl9zeXN0ZW1QcmV2aWV3
RW5hYmxlZDsKKyAgICBjb25maWd1cmF0aW9uLT5fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXcgPSBzZWxmLT5fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXc7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgY29u
ZmlndXJhdGlvbi0+X3VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgPSBzZWxmLT5fdXNlcklu
dGVyZmFjZURpcmVjdGlvblBvbGljeTsKQEAgLTczMiw2ICs3NDcsMTYgQEAgLSAodm9pZClfc2V0
U3lzdGVtUHJldmlld0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIF9zeXN0ZW1QcmV2aWV3RW5h
YmxlZCA9IGVuYWJsZWQ7CiB9CiAKKy0gKEJPT0wpX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxv
YWRpbmdRdWlja0xvb2tQcmV2aWV3Cit7CisgICAgcmV0dXJuIF9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzsKK30KKworLSAodm9pZClfc2V0U2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6KEJPT0wpc2hvdWxkRGVjaWRl
Cit7CisgICAgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3
ID0gc2hvdWxkRGVjaWRlOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
LSAoQk9PTClfaW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgKaW5kZXggOGMxNmUzOTgwZGQzYWFmZDZiZTc1ODBhMjcyOTE2ZTFhNTgw
YjVhMy4uNzgwMjdmZDlmMDcyMWRmZTE0Mjc3ZjExNDEzMDY3MGQxNDVjMzY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBOU19F
TlVNKE5TVUludGVnZXIsIF9XS0RyYWdMaWZ0RGVsYXkpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFRleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZDopIEJPT0wgX3RleHRJ
bnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKGlvcygxMi4wKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMb25nUHJlc3NBY3Rpb25zRW5hYmxlZDop
IEJPT0wgX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEyLjAp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN5c3RlbVByZXZpZXdFbmFibGVk
OikgQk9PTCBfc3lzdGVtUHJldmlld0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTIuMCkp
OworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hvdWxkRGVjaWRlUG9saWN5QmVm
b3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6KSBCT09MIF9zaG91bGREZWNpZGVQb2xpY3lCZWZv
cmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CiAjZWxzZQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hvd3NVUkxzSW5U
b29sVGlwczopIEJPT0wgX3Nob3dzVVJMc0luVG9vbFRpcHMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMikpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2VydmljZUNvbnRy
b2xzRW5hYmxlZDopIEJPT0wgX3NlcnZpY2VDb250cm9sc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmVyc2lvbkNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lv
bkNoZWNrcy5oCmluZGV4IDNiMzUwYmUwMGIzOThkZDllZjRlYWMxOGExNTM3NDlhNGJlMzVlMTAu
LmY0ZDQyODFhZTUzYjExYjU3OWZiNDRiYjc1NzE3YTYyNGE1ZTlmOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKQEAgLTM0LDYgKzM0LDcgQEAK
ICNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1BST0NFU1NfU1dBUF9PTl9DUk9T
U19TSVRFX05BVklHQVRJT04gMAogI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNUX1dJVEhf
U05BUFNIT1RfQUZURVJfU0NSRUVOX1VQREFURVMgMAogI2RlZmluZSBEWUxEX0lPU19WRVJTSU9O
X0ZJUlNUX1dIRVJFX0RPV05MT0FEX0FUVFJJQlVURV9ET0VTX05PVF9PVkVSUklERV9OQVZJR0FU
SU9OX0RFTEVHQVRFIDAKKyNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9USEFUX0RFQ0lE
RVNfUE9MSUNZX0JFRk9SRV9MT0FESU5HX1FVSUNLX0xPT0tfUFJFVklFVyAwCiAjZGVmaW5lIERZ
TERfTUFDT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NOQVBTSE9UX0FGVEVSX1NDUkVFTl9VUERBVEVT
IDAKICNkZWZpbmUgRFlMRF9NQUNPU19WRVJTSU9OX0ZJUlNUX1dIRVJFX0RPV05MT0FEX0FUVFJJ
QlVURV9ET0VTX05PVF9PVkVSUklERV9OQVZJR0FUSU9OX0RFTEVHQVRFIDAKICNlbmRpZgpAQCAt
NjEsNiArNjIsNyBAQCBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50MzJfdCB7CiAgICAgRmly
c3RXaXRoU25hcHNob3RBZnRlclNjcmVlblVwZGF0ZXMgPSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNU
X1dJVEhfU05BUFNIT1RfQUZURVJfU0NSRUVOX1VQREFURVMsCiAgICAgRmlyc3RXaGVyZURvd25s
b2FkQXR0cmlidXRlRG9lc05vdE92ZXJyaWRlTmF2aWdhdGlvbkRlbGVnYXRlID0gRFlMRF9JT1Nf
VkVSU0lPTl9GSVJTVF9XSEVSRV9ET1dOTE9BRF9BVFRSSUJVVEVfRE9FU19OT1RfT1ZFUlJJREVf
TkFWSUdBVElPTl9ERUxFR0FURSwKICAgICBGaXJzdFdpdGhEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvblBlcm1pc3Npb25BUEkgPSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNUX1dJVEhfREVWSUNFX09S
SUVOVEFUSU9OX0FORF9NT1RJT05fUEVSTUlTU0lPTl9BUEksCisgICAgRmlyc3RUaGF0RGVjaWRl
c1BvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3ID0gRFlMRF9JT1NfVkVSU0lPTl9G
SVJTVF9USEFUX0RFQ0lERVNfUE9MSUNZX0JFRk9SRV9MT0FESU5HX1FVSUNLX0xPT0tfUFJFVklF
VywKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGaXJzdFdpdGhOZXR3b3JrQ2FjaGUgPSBEWUxE
X01BQ09TWF9WRVJTSU9OXzEwXzExLAogICAgIEZpcnN0V2l0aEV4Y2VwdGlvbnNGb3JEdXBsaWNh
dGVDb21wbGV0aW9uSGFuZGxlckNhbGxzID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IGIyYTkyNDE4Y2Vk
ODY2ZmU5MzNkNTg5Y2VhZThkZDZlMDM4YTdhZDMuLjFjMWUzZTJmODcwNTMwMzM3M2ZmNTdkZjU0
ZTc4ZTU5MzgyOTYxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcApAQCAtNDksNyArNDksNiBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgICwgbV91
dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1lLCBtX3V0aSksIG1fcGFnZUlE
KTsKIH0KIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQo
KQpAQCAtNTcsNiArNTYsMTEgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdM
b2FkZXJDbGllbnQoKQogICAgIHBhc3N3b3JkQ2FsbGJhY2tzKCkucmVtb3ZlKG1fcGFnZUlEKTsK
IH0KIAordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoKQor
eworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1l
LCBtX3V0aSksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQogewogICAgIENGQXJyYXlB
cHBseUZ1bmN0aW9uKGRhdGFBcnJheSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KGRh
dGFBcnJheSkpLCBbXShjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBmOTk4NmU0MWNhMmYyNTFkYjJj
M2U1ZDg4ZTA4ZGY1MDY4NTQwNGU4Li5kNWQyNmNlODYzOTZhMmJhOWNhMzBlOGU3ODYxZmVlOWJj
Y2ExNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDUs
NiArNDUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZTY5ZjI4
YmRmZjdhOTA4ZmUxMzMzMTRmYmM3MzQ0NWFmYzdiZWUyLi5iNDEyZDQ2MmQ4YTJiMmE1ZmNiY2Ey
NGNlODMzMTZmYWYxNTA5YzBlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0
aGUgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcg
YSBRdWlja0xvb2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5oYW5jZWQg
QVBJIHRlc3QgY292ZXJhZ2UgdG8gaW5jbHVkZSBhbGwgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xp
Y3kgZGVjaXNpb25zIGluIGJvdGgKKyAgICAgICAgbGlua2VkLWJlZm9yZSBhbmQgbGlua2VkLW9u
LW9yLWFmdGVyIG1vZGVzLiBBbHNvIGFkZGVkIG5ldyBleHBlY3RhdGlvbnMgZm9yIGFsbCB0ZXN0
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3Mv
UHJldmlld0NvbnZlcnRlci5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdMb2FkZXIuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW06CisgICAgICAgIChyZWFkRmlsZSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVn
YXRlIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnJlc3BvbnNlUG9saWN5Ol0pOgorICAgICAgICAo
LVtRdWlja0xvb2tEZWxlZ2F0ZSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwcmV2aWV3TUlNRVR5
cGU6cmVzcG9uc2VQb2xpY3k6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIHdlYlZp
ZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6XSk6CisgICAgICAgICgt
W1F1aWNrTG9va0RlbGVnYXRlIF93ZWJWaWV3OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSB3ZWJWaWV3
OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtR
dWlja0xvb2tEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDpdKToKKyAgICAgICAg
KC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1F1
aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAg
ICgtW1F1aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlRGF0YTpdKToKKyAgICAg
ICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtRdWlja0xv
b2tEZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0Rl
bGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtRdWlja0xv
b2tEZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0Rl
bGVnYXRlIHZlcmlmeURvd25sb2FkXSk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHJ1
blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKToKKyAgICAgICAgKHJ1blRlc3REZWNpZGVBZnRlckxv
YWRpbmcpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jRGVsZWdh
dGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlIF93ZWJWaWV3RGlk
UmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQ6XSk6CisgICAgICAgICgtW1F1aWNr
TG9va0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgor
ICAgICAgICAoLVtRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9va05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bUXVpY2tMb29rTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNo
TmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0
aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVj
aXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tBc3luY05hdmln
YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lV2l0aEZpbGVOYW1lOnV0aTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tM
b29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9v
a0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSB3ZWJWaWV3
OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtRdWlja0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NE
aWRDcmFzaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rUGFzc3dvcmROYXZpZ2F0
aW9uRGVsZWdhdGUgX3dlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVu
dDpdKTogRGVsZXRlZC4KKwogMjAxOS0wMy0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSB3ZWJraXRfd2ViX3Jlc291cmNl
X2dldF9kYXRhX2ZpbmlzaCBjYW4gcmV0dXJuIE5VTEwgd2l0aG91dCBzZXR0aW5nIGVycm9yCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4MTg1OTM4YmU4MmU0NTU4MzZlMmM0OGMyY2JmYjY4
M2M1MDk1NDAuLjBmOTNjMjY1OWU3ZjQwNThhZjVlNTc3YjFmNjg2MjZhOTEwZTE1N2QgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTYsNyArNzE2LDcgQEAKIAkJQTE4MEMwRkExRUU2N0RG
MDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExODBDMEY5MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFu
ZWwubW0gKi87IH07CiAJCUExQzRGQjczMUJBQ0QxQ0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0
RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMucGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0
MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBB
MkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovOyB9OwotCQlBMUVDMTE4
ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyog
UHJldmlld0xvYWRlci5jcHAgKi87IH07CisJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQ
cmV2aWV3Q29udmVydGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVydGVyLmNw
cCAqLzsgfTsKIAkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYy
OTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJC
MDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0
RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdl
cy5odG1sICovOyB9OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95
ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKQEAgLTE5
ODcsNyArMTk4Nyw3IEBACiAJCUExQzRGQjZDMUJBQ0NFNTAwMDM3NDJEMCAvKiBRdWlja0xvb2su
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWlja0xvb2subW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAv
KiBwYWdlcy5wYWdlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZpbGU7IG5hbWUgPSBwYWdlcy5wYWdlczsgcGF0aCA9IGlvcy9wYWdlcy5wYWdlczsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAg
LyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmll
d0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2aWV3TG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8qIFByZXZp
ZXdDb252ZXJ0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmlld0NvbnZlcnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJFMTlDMjg4QkIwMDUxNDhBNCAv
KiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwODUsNyArMzA4NSw3IEBA
CiAJCUExRUMxMTg1MUY0MjUzRDkwMEQwMTQ2RSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQ
cmV2aWV3TG9hZGVyLmNwcCAqLywKKwkJCQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJl
dmlld0NvbnZlcnRlci5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC00MjczLDcgKzQyNzMsNyBAQAogCQkJCTdDMUFGNzk1MUU4RENC
QUIwMDI2NDVCOSAvKiBQcmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMEIxQTQxMUFFNjAwNDQ3QzRDIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyQzFBNDExQjEwMDA0NDdDNEMgLyogUHJldmVudElt
YWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW0gaW4gU291cmNlcyAqLywKLQkJCQlBMUVDMTE4ODFG
NDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
MUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0NvbnZlcnRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YwQzFBNDExQUU2MDA0NDdDNEMgLyogUHJpdmF0ZUJyb3dzaW5nUHVz
aFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDY0N0IxMjYx
RUJBM0I4NTAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE4ODJGMDMyMTAxMEMwRDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2lvcy9QcmV2aWV3Q29udmVydGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzIxYmRiNWEwODIw
N2E3NjhhOGY1OTdmMGI2ODQwNGJjNDg0ZTRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0UoUVVJQ0tfTE9PSykKKworI2luY2x1ZGUgPFdlYkNv
cmUvUHJldmlld0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitURVNUKFF1aWNrTG9vaywgU2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUpCit7CisgICAgLy8gRklY
TUU6IEV4cGFuZCB0aGlzIHRvIGNvdmVyIGFsbCB0aGUgTUlNRSB0eXBlcyB3ZSBleHBlY3QgdG8g
c3VwcG9ydC4KKyAgICBFWFBFQ1RfRkFMU0UoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZShTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRShQcmV2aWV3Q29udmVydGVyOjpzdXBw
b3J0c01JTUVUeXBlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShQcmV2aWV3Q29u
dmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQu
bWFjcm9FbmFibGVkLjEyIl9zKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFVTRShRVUlDS19MT09LKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3TG9h
ZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xv
YWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMWVhZGQ4Yzg2MGRmOWI4
MDAzYjhkMmQ2MzJiMmE2ZGFiMGExOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2
aWV3TG9hZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0Uo
UVVJQ0tfTE9PSykKLQotI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0xvYWRlci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUKFF1aWNrTG9vaywgU2hvdWxkQ3JlYXRl
Rm9yTUlNRVR5cGUpCi17Ci0gICAgLy8gRklYTUU6IEV4cGFuZCB0aGlzIHRvIGNvdmVyIGFsbCB0
aGUgTUlNRSB0eXBlcyB3ZSBleHBlY3QgdG8gc3VwcG9ydC4KLSAgICBFWFBFQ1RfRkFMU0UoUHJl
dmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoU3RyaW5nKCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0UoUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoZW1wdHlTdHJp
bmcoKSkpOwotICAgIEVYUEVDVF9UUlVFKFByZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1J
TUVUeXBlKCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyIl9z
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRleCA5M2QwN2ZhOWFhNTYw
ZTZkMmY1MTE2ZDE0YjAzMjZlMDk1ZjVkZGJiLi4yNWE3ZjAxZWMwODczMjBlMjNiZGY5MGNkYmU4
Zjk0MmNmN2Y2NWVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1F1aWNrTG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1F1aWNrTG9vay5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDQyICsyOSwxMDUgQEAKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPENvcmVTZXJ2aWNl
cy9Db3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlLaXRTdXBwb3J0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKIHN0YXRpYyBib29sIGlzRG9uZTsKLXN0YXRpYyBi
b29sIGRpZFN0YXJ0UXVpY2tMb29rTG9hZDsKLXN0YXRpYyBib29sIGRpZEZpbmlzaFF1aWNrTG9v
a0xvYWQ7CitzdGF0aWMgYm9vbCBkb3dubG9hZElzRG9uZTsKIAotc3RhdGljIGNvbnN0IE5TVUlu
dGVnZXIgZXhwZWN0ZWRGaWxlU2l6ZSA9IDI3NDE0MzsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IGV4cGVjdGVkRmlsZU5hbWUgPSBAInBhZ2VzLnBhZ2VzIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNv
bnN0IGV4cGVjdGVkVVRJID0gQCJjb20uYXBwbGUuaXdvcmsucGFnZXMuc2ZmcGFnZXMiOwotc3Rh
dGljIE5TVVJMUmVxdWVzdCAqIGNvbnN0IHBhZ2VzRG9jdW1lbnRSZXF1ZXN0ID0gW1tOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dIHJldGFpbl07CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwYWdl
c0RvY3VtZW50UHJldmlld01JTUVUeXBlID0gQCJhcHBsaWNhdGlvbi9wZGYiOworc3RhdGljIE5T
VVJMICogY29uc3QgcGFnZXNEb2N1bWVudFVSTCA9IFtbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxG
b3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl0gcmV0YWluXTsKKworQGludGVyZmFjZSBRdWlja0xv
b2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUsIF9XS0Rv
d25sb2FkRGVsZWdhdGU+CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHJl
c3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSlyZXNwb25zZVBvbGljeTsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJM
IHByZXZpZXdNSU1FVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSByZXNwb25zZVBvbGljeTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpcmVzcG9uc2VQb2xpY3k7CistICh2b2lkKXZlcmlmeURv
d25sb2FkOworCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBkaWRTdGFydFF1aWNrTG9va0xv
YWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBkaWRGaW5pc2hRdWlja0xvb2tMb2FkOwog
Ci1AaW50ZXJmYWNlIFF1aWNrTG9va05hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xv
b2tOYXZpZ2F0aW9uRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tEZWxlZ2F0ZSB7
CitAcHJvdGVjdGVkCisgICAgTlNVSW50ZWdlciBfZG93bmxvYWRGaWxlU2l6ZTsKKyAgICBOU1VJ
bnRlZ2VyIF9leHBlY3RlZEZpbGVTaXplOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2V4cGVj
dGVkRmlsZU5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZXhwZWN0ZWRGaWxlVHlwZTsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9leHBlY3RlZE1JTUVUeXBlOworICAgIFJldGFpblB0
cjxOU1VSTD4gX2Rvd25sb2FkRGVzdGluYXRpb25VUkw7CisgICAgV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3kgX3Jlc3BvbnNlUG9saWN5OworfQorCitzdGF0aWMgdm9pZCByZWFkRmlsZShOU1VS
TCAqZmlsZVVSTCwgTlNVSW50ZWdlciYgZmlsZVNpemUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZp
bGVOYW1lLCBSZXRhaW5QdHI8TlNTdHJpbmc+JiBmaWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5n
PiYgbWltZVR5cGUpCit7CisgICAgaWYgKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0Zp
bGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVVSTC5w
YXRoIGVycm9yOm5pbF0pCisgICAgICAgIGZpbGVTaXplID0gW2F0dHJpYnV0ZXNbTlNGaWxlU2l6
ZV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworCisgICAgZmlsZU5hbWUgPSBmaWxlVVJMLmxhc3RQ
YXRoQ29tcG9uZW50OworCisgICAgTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyID0gbmlsOworICAg
IGlmIChbZmlsZVVSTCBnZXRSZXNvdXJjZVZhbHVlOiZ0eXBlSWRlbnRpZmllciBmb3JLZXk6TlNV
UkxUeXBlSWRlbnRpZmllcktleSBlcnJvcjpuaWxdKQorICAgICAgICBmaWxlVHlwZSA9IHR5cGVJ
ZGVudGlmaWVyOworCisgICAgbWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3MoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGVJZGVudGlmaWVyLCBrVVRUYWdD
bGFzc01JTUVUeXBlKSk7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmls
ZVVSTDooTlNVUkwgKilmaWxlVVJMIHJlc3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeSlyZXNwb25zZVBvbGljeQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmVhZEZpbGUoZmlsZVVSTCwgX2V4cGVjdGVk
RmlsZVNpemUsIF9leHBlY3RlZEZpbGVOYW1lLCBfZXhwZWN0ZWRGaWxlVHlwZSwgX2V4cGVjdGVk
TUlNRVR5cGUpOworCisgICAgX3Jlc3BvbnNlUG9saWN5ID0gcmVzcG9uc2VQb2xpY3k7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVS
TDooTlNVUkwgKilmaWxlVVJMIHByZXZpZXdNSU1FVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSBy
ZXNwb25zZVBvbGljeTooV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpcmVzcG9uc2VQb2xpY3kK
K3sKKyAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6ZmlsZVVS
TCByZXNwb25zZVBvbGljeTpyZXNwb25zZVBvbGljeV0pKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIAorICAgIF9leHBlY3RlZE1JTUVUeXBlID0gbWltZVR5cGU7CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJl
c3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIEVYUEVDVF9UUlVFKG5hdmlnYXRpb25SZXNwb25z
ZS5jYW5TaG93TUlNRVR5cGUpOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFt
ZS5nZXQoKSwgbmF2aWdhdGlvblJlc3BvbnNlLnJlc3BvbnNlLlVSTC5sYXN0UGF0aENvbXBvbmVu
dCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZE1JTUVUeXBlLmdldCgpLCBuYXZpZ2F0
aW9uUmVzcG9uc2UucmVzcG9uc2UuTUlNRVR5cGUpOworICAgIGRlY2lzaW9uSGFuZGxlcihfcmVz
cG9uc2VQb2xpY3kpOworfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6
KE5TU3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0cmluZyAqKXV0aQogewotICAgIEVYUEVDVF9X
S19TVFJFUShleHBlY3RlZEZpbGVOYW1lLCBmaWxlTmFtZSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KGV4cGVjdGVkVVRJLCB1dGkpOwotICAgIGRpZFN0YXJ0UXVpY2tMb29rTG9hZCA9IHRydWU7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVOYW1lLmdldCgpLCBmaWxlTmFtZSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVUeXBlLmdldCgpLCB1dGkpOworICAgIF9k
aWRTdGFydFF1aWNrTG9va0xvYWQgPSBZRVM7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWU6KE5TRGF0YSAqKWRvY3VtZW50RGF0YQogewotICAgIEVYUEVDVF9FUShleHBlY3RlZEZpbGVT
aXplLCBkb2N1bWVudERhdGEubGVuZ3RoKTsKLSAgICBkaWRGaW5pc2hRdWlja0xvb2tMb2FkID0g
dHJ1ZTsKKyAgICBFWFBFQ1RfRVEoX2V4cGVjdGVkRmlsZVNpemUsIGRvY3VtZW50RGF0YS5sZW5n
dGgpOworICAgIF9kaWRGaW5pc2hRdWlja0xvb2tMb2FkID0gWUVTOwogfQogCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0
aW9uICopbmF2aWdhdGlvbgpAQCAtNzIsMTI4ICsxMzUsMjI3IEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKilu
YXZpZ2F0CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIAotQGVuZAorLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdh
dGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpc0Rv
bmUgPSB0cnVlOworfQogCi1AaW50ZXJmYWNlIFF1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVn
YXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4KLUBlbmQKKy0gKHZv
aWQpX3dlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQogCi1AaW1wbGVtZW50YXRpb24gUXVp
Y2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUKKy0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVk
RmlsZU5hbWUuZ2V0KCksIGRvd25sb2FkLnJlcXVlc3QuVVJMLmxhc3RQYXRoQ29tcG9uZW50KTsK
K30KIAotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQogewotICAg
IGludDY0X3QgZGVmZXJyZWRXYWl0VGltZSA9IDEwMCAqIE5TRUNfUEVSX01TRUM7Ci0gICAgZGlz
cGF0Y2hfdGltZV90IHdoZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZl
cnJlZFdhaXRUaW1lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkRmlsZU5hbWUuZ2V0
KCksIHJlc3BvbnNlLlVSTC5sYXN0UGF0aENvbXBvbmVudCk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KF9leHBlY3RlZE1JTUVUeXBlLmdldCgpLCByZXNwb25zZS5NSU1FVHlwZSk7Cit9CiAKLSAgICBk
aXNwYXRjaF9hZnRlcih3aGVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7Ci0gICAg
fSk7CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZl
RGF0YToodWludDY0X3QpbGVuZ3RoCit7CisgICAgX2Rvd25sb2FkRmlsZVNpemUgKz0gbGVuZ3Ro
OwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5TU3RyaW5nICop
ZmlsZU5hbWUgdXRpOihOU1N0cmluZyAqKXV0aQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5T
U3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wsIE5TU3Ry
aW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVk
RmlsZU5hbWUsIGZpbGVOYW1lKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRVVEksIHV0
aSk7Ci0gICAgZGlkU3RhcnRRdWlja0xvb2tMb2FkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoX2V4cGVjdGVkRmlsZU5hbWUuZ2V0KCksIGZpbGVuYW1lKTsKKyAgICAKKyAgICBOU1VSTCAq
dGVtcERpcmVjdG9yeVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJl
Y3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworICAgIF9kb3dubG9hZERlc3RpbmF0aW9uVVJMID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlbmFtZSByZWxhdGl2ZVRvVVJMOnRlbXBEaXJlY3Rv
cnlVUkxdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW19kb3dubG9hZERlc3RpbmF0aW9u
VVJMIHBhdGhdKTsKIH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTooTlNEYXRhICopZG9j
dW1lbnREYXRhCistICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3du
bG9hZAogewotICAgIEVYUEVDVF9FUShleHBlY3RlZEZpbGVTaXplLCBkb2N1bWVudERhdGEubGVu
Z3RoKTsKLSAgICBkaWRGaW5pc2hRdWlja0xvb2tMb2FkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfRVEo
X2V4cGVjdGVkRmlsZVNpemUsIF9kb3dubG9hZEZpbGVTaXplKTsKKyAgICBkb3dubG9hZElzRG9u
ZSA9IHRydWU7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRG
aW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCistICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICop
ZXJyb3IKIHsKLSAgICBpc0RvbmUgPSB0cnVlOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAodm9p
ZCl2ZXJpZnlEb3dubG9hZAoreworICAgIEVYUEVDVF9UUlVFKFtOU0ZpbGVNYW5hZ2VyLmRlZmF1
bHRNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6W19kb3dubG9hZERlc3RpbmF0aW9uVVJMIHBhdGhd
XSk7CisKKyAgICBOU1VJbnRlZ2VyIGRvd25sb2FkRmlsZVNpemU7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBkb3dubG9hZEZpbGVOYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZG93bmxv
YWRGaWxlVHlwZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRvd25sb2FkTUlNRVR5cGU7Cisg
ICAgcmVhZEZpbGUoX2Rvd25sb2FkRGVzdGluYXRpb25VUkwuZ2V0KCksIGRvd25sb2FkRmlsZVNp
emUsIGRvd25sb2FkRmlsZU5hbWUsIGRvd25sb2FkRmlsZVR5cGUsIGRvd25sb2FkTUlNRVR5cGUp
OworCisgICAgRVhQRUNUX0VRKF9leHBlY3RlZEZpbGVTaXplLCBkb3dubG9hZEZpbGVTaXplKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkRmlsZU5hbWUuZ2V0KCksIGRvd25sb2FkRmls
ZU5hbWUuZ2V0KCkpOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlVHlwZS5nZXQo
KSwgZG93bmxvYWRGaWxlVHlwZS5nZXQoKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3Rl
ZE1JTUVUeXBlLmdldCgpLCBkb3dubG9hZE1JTUVUeXBlLmdldCgpKTsKIH0KIAogQGVuZAogCi1z
dGF0aWMgdm9pZCBydW5UZXN0KENsYXNzIG5hdmlnYXRpb25EZWxlZ2F0ZUNsYXNzLCBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QpCitzdGF0aWMgdm9pZCBydW5UZXN0KFF1aWNrTG9va0RlbGVnYXRlICpk
ZWxlZ2F0ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBCT09MIHNob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmcpCiB7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdF0pOwotICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW25h
dmlnYXRpb25EZWxlZ2F0ZUNsYXNzIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgYXV0byBwcm9j
ZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XSk7CisgICAgW3By
b2Nlc3NQb29sIF9zZXREb3dubG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKKworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmdRdWlja0xvb2tQcmV2aWV3OnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmddOworICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVXRpbDo6cnVuKCZp
c0RvbmUpOwogfQogCi1URVNUKFF1aWNrTG9vaywgTmF2aWdhdGlvbkRlbGVnYXRlKQorc3RhdGlj
IHZvaWQgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVn
YXRlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgcnVuVGVzdChbUXVpY2tMb29rTmF2
aWdhdGlvbkRlbGVnYXRlIGNsYXNzXSwgcGFnZXNEb2N1bWVudFJlcXVlc3QpOwotICAgIEVYUEVD
VF9UUlVFKGRpZFN0YXJ0UXVpY2tMb29rTG9hZCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkRmluaXNo
UXVpY2tMb29rTG9hZCk7CisgICAgcnVuVGVzdChkZWxlZ2F0ZSwgcmVxdWVzdCwgWUVTKTsKIH0K
IAotVEVTVChRdWlja0xvb2ssIEFzeW5jTmF2aWdhdGlvbkRlbGVnYXRlKQorc3RhdGljIHZvaWQg
cnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhRdWlja0xvb2tEZWxlZ2F0ZSAqZGVsZWdhdGUsIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICBydW5UZXN0KFtRdWlja0xvb2tBc3luY05hdmln
YXRpb25EZWxlZ2F0ZSBjbGFzc10sIHBhZ2VzRG9jdW1lbnRSZXF1ZXN0KTsKLSAgICBFWFBFQ1Rf
VFJVRShkaWRTdGFydFF1aWNrTG9va0xvYWQpOwotICAgIEVYUEVDVF9UUlVFKGRpZEZpbmlzaFF1
aWNrTG9va0xvYWQpOworICAgIHJ1blRlc3QoZGVsZWdhdGUsIHJlcXVlc3QsIE5PKTsKIH0KIAot
QGludGVyZmFjZSBRdWlja0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05h
dmlnYXRpb25EZWxlZ2F0ZT4KK1RFU1QoUXVpY2tMb29rLCBBbGxvd1Jlc3BvbnNlQmVmb3JlTG9h
ZGluZ1ByZXZpZXcpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBy
ZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVu
VGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0
ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlk
RmluaXNoUXVpY2tMb29rTG9hZF0pOworfQorCitURVNUKFF1aWNrTG9vaywgQWxsb3dSZXNwb25z
ZUFmdGVyTG9hZGluZ1ByZXZpZXcpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNw
b25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVuVGVz
dERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRp
ZFN0YXJ0UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5p
c2hRdWlja0xvb2tMb2FkXSk7Cit9CisKK0BpbnRlcmZhY2UgUXVpY2tMb29rQXN5bmNEZWxlZ2F0
ZSA6IFF1aWNrTG9va0RlbGVnYXRlCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tE
ZWNpZGVQb2xpY3lEZWxlZ2F0ZQorQGltcGxlbWVudGF0aW9uIFF1aWNrTG9va0FzeW5jRGVsZWdh
dGUKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5Q2FuY2VsKTsKKyAgICBpbnQ2NF90IGRlZmVycmVkV2FpdFRpbWUgPSAxMDAg
KiBOU0VDX1BFUl9NU0VDOworICAgIGRpc3BhdGNoX3RpbWVfdCB3aGVuID0gZGlzcGF0Y2hfdGlt
ZShESVNQQVRDSF9USU1FX05PVywgZGVmZXJyZWRXYWl0VGltZSk7CisKKyAgICBkaXNwYXRjaF9h
ZnRlcih3aGVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBkZWNpc2lv
bkhhbmRsZXIoX3Jlc3BvbnNlUG9saWN5KTsKKyAgICB9KTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2
aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK0BlbmQKKwor
VEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQog
ewotICAgIGlzRG9uZSA9IHRydWU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlj
a0xvb2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0Rv
Y3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3dd
KTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQRUNUX1RS
VUUoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9UUlVFKFtk
ZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXdX
ZWJQcm9jZXNzRGlkQ3Jhc2g6KFdLV2ViVmlldyAqKXdlYlZpZXcKK1RFU1QoUXVpY2tMb29rLCBB
c3luY0FsbG93UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xv
b2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3Vt
ZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3Bv
bnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0
RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlk
U3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlz
aFF1aWNrTG9va0xvYWRdKTsKIH0KIAotQGVuZAorVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3Bv
bnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNE
b2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNl
bF0pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9GQUxT
RShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOworfQogCi1AaW50ZXJmYWNlIFF1
aWNrTG9va0ZyYW1lTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVnYXRl
PgotQGVuZAorVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmll
dykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1F
VHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGlu
ZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3Vt
ZW50VVJMXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9h
ZF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7
Cit9CiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tGcmFtZUxvYWREZWxlZ2F0ZQorVEVTVChR
dWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKK3sKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5Ol9XS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CisgICAgcnVuVGVzdERlY2lkZUJl
Zm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
cGFnZXNEb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkU3RhcnRR
dWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlj
a0xvb2tMb2FkXSk7CiAKLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKKyAgICBVdGlsOjpydW4oJmRvd25sb2Fk
SXNEb25lKTsKKyAgICBbZGVsZWdhdGUgdmVyaWZ5RG93bmxvYWRdOworfQorCitURVNUKFF1aWNr
TG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdN
SU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5Ol9XS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CisgICAgcnVuVGVzdERlY2lk
ZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZFN0YXJ0
UXVpY2tMb29rTG9hZF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlj
a0xvb2tMb2FkXSk7CiB9CiAKK0BpbnRlcmZhY2UgUXVpY2tMb29rUGFzc3dvcmREZWxlZ2F0ZSA6
IFF1aWNrTG9va0RlbGVnYXRlCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBkaWRSZXF1ZXN0
UGFzc3dvcmQ7CiBAZW5kCiAKLVRFU1QoUXVpY2tMb29rLCBDYW5jZWxOYXZpZ2F0aW9uQWZ0ZXJS
ZXNwb25zZSkKK0BpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlCisKKy0g
KHZvaWQpX3dlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDooV0tX
ZWJWaWV3ICopd2ViVmlldwogewotICAgIHJ1blRlc3QoW1F1aWNrTG9va0RlY2lkZVBvbGljeURl
bGVnYXRlIGNsYXNzXSwgcGFnZXNEb2N1bWVudFJlcXVlc3QpOworICAgIF9kaWRSZXF1ZXN0UGFz
c3dvcmQgPSBZRVM7CisgICAgaXNEb25lID0gdHJ1ZTsKIH0KIAotQGludGVyZmFjZSBRdWlja0xv
b2tQYXNzd29yZE5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tQYXNzd29yZE5h
dmlnYXRpb25EZWxlZ2F0ZQorVEVTVChRdWlja0xvb2ssIFJlcXVlc3RQYXNzd29yZEJlZm9yZUxv
YWRpbmdQcmV2aWV3KQoreworICAgIE5TVVJMICpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50VVJM
ID0gW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJwYXNzd29yZC1wcm90ZWN0
ZWQiIHdpdGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va1Bhc3N3
b3JkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhc3N3b3JkUHJvdGVj
dGVkRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvd10pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRVUkxd
KTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkUmVxdWVzdFBhc3N3b3JkXSk7Cit9CiAK
LS0gKHZvaWQpX3dlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDoo
V0tXZWJWaWV3ICopd2ViVmlldworVEVTVChRdWlja0xvb2ssIFJlcXVlc3RQYXNzd29yZEFmdGVy
TG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgaXNEb25lID0gdHJ1ZTsKKyAgICBOU1VSTCAqcGFzc3dv
cmRQcm90ZWN0ZWREb2N1bWVudFVSTCA9IFtOU0J1bmRsZS5tYWluQnVuZGxlIFVSTEZvclJlc291
cmNlOkAicGFzc3dvcmQtcHJvdGVjdGVkIiB3aXRoRXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVk
RmlsZVVSTDpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdl
c0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRl
LmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhc3N3b3JkUHJvdGVjdGVkRG9j
dW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkUmVxdWVzdFBhc3N3b3Jk
XSk7CiB9CiAKK0BpbnRlcmZhY2UgUXVpY2tMb29rRnJhbWVMb2FkRGVsZWdhdGUgOiBOU09iamVj
dCA8V2ViRnJhbWVMb2FkRGVsZWdhdGU+CiBAZW5kCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKK0BpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tGcmFtZUxv
YWREZWxlZ2F0ZQogCi1URVNUKFF1aWNrTG9vaywgRGlkUmVxdWVzdFBhc3N3b3JkTmF2aWdhdGlv
bkRlbGVnYXRlKQorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExv
YWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewotICAgIE5TVVJMUmVxdWVzdCAqcGFzc3dv
cmRQcm90ZWN0ZWREb2N1bWVudFJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYXNzd29yZC1wcm90ZWN0
ZWQiIHdpdGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXV07Ci0gICAgcnVuVGVzdChbUXVpY2tMb29rUGFzc3dvcmROYXZpZ2F0aW9uRGVs
ZWdhdGUgY2xhc3NdLCBwYXNzd29yZFByb3RlY3RlZERvY3VtZW50UmVxdWVzdCk7CisgICAgaXNE
b25lID0gdHJ1ZTsKIH0KIAotI2VuZGlmCitAZW5kCiAKIFRFU1QoUXVpY2tMb29rLCBMZWdhY3lR
dWlja0xvb2tDb250ZW50KQogewpAQCAtMjExLDE4ICszNzMsMjMgQEAgVEVTVChRdWlja0xvb2ss
IExlZ2FjeVF1aWNrTG9va0NvbnRlbnQpCiAKICAgICBXZWJGcmFtZSAqbWFpbkZyYW1lID0gW3dl
YlZpZXcgbWFpbkZyYW1lXTsKIAotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFttYWluRnJhbWUg
bG9hZFJlcXVlc3Q6cGFnZXNEb2N1bWVudFJlcXVlc3RdOworICAgIFttYWluRnJhbWUgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXV07CiAg
ICAgVXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIFdlYlRocmVhZExvY2soKTsKIAorICAgIE5TVUlu
dGVnZXIgZXhwZWN0ZWRGaWxlU2l6ZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVjdGVk
RmlsZU5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBleHBlY3RlZEZpbGVUeXBlOworICAg
IFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRNSU1FVHlwZTsKKyAgICByZWFkRmlsZShwYWdl
c0RvY3VtZW50VVJMLCBleHBlY3RlZEZpbGVTaXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3Rl
ZEZpbGVUeXBlLCBleHBlY3RlZE1JTUVUeXBlKTsKKwogICAgIE5TRGljdGlvbmFyeSAqcXVpY2tM
b29rQ29udGVudCA9IG1haW5GcmFtZS5kYXRhU291cmNlLl9xdWlja0xvb2tDb250ZW50OwogICAg
IE5TU3RyaW5nICpmaWxlUGF0aCA9IHF1aWNrTG9va0NvbnRlbnRbV2ViUXVpY2tMb29rRmlsZU5h
bWVLZXldOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpmaWxlUGF0aF0pOwotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3Rl
ZEZpbGVOYW1lLCBmaWxlUGF0aC5sYXN0UGF0aENvbXBvbmVudCk7Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKGV4cGVjdGVkVVRJLCBxdWlja0xvb2tDb250ZW50W1dlYlF1aWNrTG9va1VUSUtleV0pOwor
ICAgIEVYUEVDVF9UUlVFKFtOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyIGZpbGVFeGlzdHNB
dFBhdGg6ZmlsZVBhdGhdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRGaWxlTmFtZS5n
ZXQoKSwgZmlsZVBhdGgubGFzdFBhdGhDb21wb25lbnQpOworICAgIEVYUEVDVF9XS19TVFJFUShl
eHBlY3RlZEZpbGVUeXBlLmdldCgpLCBxdWlja0xvb2tDb250ZW50W1dlYlF1aWNrTG9va1VUSUtl
eV0pOwogCi0gICAgTlNEaWN0aW9uYXJ5ICpmaWxlQXR0cmlidXRlcyA9IFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09mSXRlbUF0UGF0aDpmaWxlUGF0aCBlcnJvcjpu
aWxdOworICAgIE5TRGljdGlvbmFyeSAqZmlsZUF0dHJpYnV0ZXMgPSBbTlNGaWxlTWFuYWdlci5k
ZWZhdWx0TWFuYWdlciBhdHRyaWJ1dGVzT2ZJdGVtQXRQYXRoOmZpbGVQYXRoIGVycm9yOm5pbF07
CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRmlsZVNpemUsIFtmaWxlQXR0cmlidXRlc1tOU0ZpbGVT
aXplXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOwogCiAgICAgaXNEb25lID0gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366375</attachid>
            <date>2019-03-30 23:59:10 -0700</date>
            <delta_ts>2019-03-31 09:57:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196433-20190330235909.patch</filename>
            <type>text/plain</type>
            <size>65751</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjNTc3ZWI1ZDQxNDQ2NTUwZDExNDRi
YTkyMDBjOGRmODkxZWQ2ZmQuLmJkN2Q3MmE3YjFhYWM3NGU5MGYyZTBlOWQ4ZGY2M2NlYzJkMzk3
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0aGUgbmF2
aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcgYSBRdWlj
a0xvb2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0
cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJEZXN0cm95ZWQ6Om9wZXJhdG9yLT4pOgorICAg
ICAgICAoV1RGOjpOZXZlckRlc3Ryb3llZDo6b3BlcmF0b3ItPiBjb25zdCk6CisKIDIwMTktMDMt
MjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW4t
Zml4IHRoZSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc2NDI1MDJiMzhmMzkyM2M1NmNiNjJlNGM4MTE2
MWU4NjhkYmM3NTAuLjE4ZTM4OWVmMzY4NTVmZmU2YzIxNDIzNzc0ZjMyYzQwMWY4ZjczNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxOS0wMy0zMCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gV2ViS2l0IHNob3VsZCBjb25zdWx0IHRoZSBu
YXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSBiZWZvcmUgcHJldmlld2luZyBhIFF1
aWNrTG9vayBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2NDMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTI5MzMwNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFJlc291cmNl
TG9hZGVyIHdvdWxkIGVuY291bnRlciBhIHJlc3BvbnNlIHdpdGggYSBNSU1FIHR5cGUgdGhhdCBR
dWlja0xvb2sgc3VwcG9ydHMsIHRoZQorICAgICAgICByZXNwb25zZSB3b3VsZCBiZSBpbXBsaWNp
dGx5IGFsbG93ZWQgYW5kIGEgUXVpY2tMb29rIHByZXZpZXcgd291bGQgYmUgaW1tZWRpYXRlbHkg
Z2VuZXJhdGVkLgorICAgICAgICBXaGVuIHRoZSBnZW5lcmF0aW9uIGZpbmlzaGVkIHRoZSBjbGll
bnQncyBuYXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSB3b3VsZCBiZQorICAgICAg
ICBub3RpZmllZCBvZiB0aGUgcHJldmlldyByZXNwb25zZSAobm90IHRoZSBvcmlnaW5hbCBIVFRQ
IHJlc3BvbnNlKS4gTm90YWJseSwgdGhlIHByZXZpZXcKKyAgICAgICAgcmVzcG9uc2UgaGFzIGEg
VVJMIHNjaGVtZSBvZiAieC1hcHBsZS1xbC1pZCIsIGRvZXMgbm90IGluY2x1ZGUgdGhlIHVuZGVy
bHlpbmcgSFRUUCBoZWFkZXJzLAorICAgICAgICBhbmQgdXN1YWxseSBoYXMgYSBNSU1FIHR5cGUg
b2YgInRleHQvaHRtbCIgb3IgImFwcGxpY2F0aW9uL3BkZiIgcmF0aGVyIHRoYW4gdGhlIG9yaWdp
bmFsCisgICAgICAgIGRvY3VtZW50J3MgTUlNRSB0eXBlLgorCisgICAgICAgIFRvIGFsbG93IGNs
aWVudHMgdG8gbWFrZSBiZXR0ZXIgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25z
LCB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlCisgICAgICAgIGFib3ZlIGJlaGF2aW9yIGZvciBXS1dl
YlZpZXcgY2xpZW50cyB0aGF0IGhhdmUgbGlua2VkIGFnYWluc3QgYSB2ZXJzaW9uIG9mIFdlYktp
dCB0aGF0CisgICAgICAgIGluY2x1ZGVzIHRoaXMgY2hhbmdlLiBSYXRoZXIgdGhhbiBub3RpZnlp
bmcgdGhlIGNsaWVudCdzIG5hdmlnYXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlCisgICAg
ICAgIG9mIHRoZSBwcmV2aWV3IHJlc3BvbnNlLCB3ZSBub3RpZnkgdGhlIGNsaWVudCBvZiB0aGUg
b3JpZ2luYWwgSFRUUCByZXNwb25zZS4gT25seSBpZiB0aGUKKyAgICAgICAgY2xpZW50IHJlc3Bv
bmRzIHdpdGggYSBwb2xpY3kgb2YgImFsbG93IiB3aWxsIHRoZSBRdWlja0xvb2sgcHJldmlldyBy
ZXNwb25zZSBiZSBsb2FkZWQKKyAgICAgICAgKHdpdGhvdXQgYW5vdGhlciBjYWxsIHRvIHRoZSBu
YXZpZ2F0aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSkuCisKKyAgICAgICAgTm9uLVdLV2Vi
VmlldyBjbGllbnRzIGFuZCBjbGllbnRzIHRoYXQgaGF2ZSBsaW5rZWQgYWdhaW5zdCBhIHZlcnNp
b24gb2YgV2ViS2l0IHRoYXQgZG9lcyBub3QKKyAgICAgICAgaW5jbHVkZSB0aGlzIGNoYW5nZSB3
aWxsIHJldGFpbiB0aGUgb3JpZ2luYWwgYmVoYXZpb3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyBsYXlvdXQgdGVzdHMgYW5kIG5ldyBhbmQgZXhpc3RpbmcgQVBJIHRlc3RzLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkQ3JlYXRlUHJldmlld0xvYWRlckZvclJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9p
b3MvUHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0
aFJlc291cmNlTG9hZGVyOnJlc291cmNlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYlByZXZp
ZXdMb2FkZXIgX2xvYWRQcmV2aWV3SWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0xv
YWRlciBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAg
ICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOgorICAg
ICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoLVtXZWJQ
cmV2aWV3TG9hZGVyIF9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3NhcnldKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1JTUVU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICog
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9Q
cmV2aWV3Q29udmVydGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
c3VwcG9ydHNNSU1FVHlwZSk6CisKIDIwMTktMDMtMjggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEdQVV0gUHJvdG90eXBlIGNvbXB1dGUgcGlwZWxp
bmUgd2l0aCBNU0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjM4MjBkYWRmMzM3YWZmNDQwYTgxNjc5MWE5YTQ5YzQ1
NDM5YWQ0Zi4uMmY4NjliMTMwMDBjNjAxZGYzYjgwY2Y4NDFiY2NkNDM3MGEwYzE5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOS0wMy0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPU10gV2ViS2l0IHNob3VsZCBjb25zdWx0IHRoZSBuYXZpZ2F0
aW9uIHJlc3BvbnNlIHBvbGljeSBkZWxlZ2F0ZSBiZWZvcmUgcHJldmlld2luZyBhIFF1aWNrTG9v
ayBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk2NDMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTI5MzMwNT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIFNQSSBmb3Igc2V0dGluZyB0aGUgUXVpY2tMb29rIG5hdmlnYXRpb24gcmVzcG9u
c2UgcG9saWN5CisgICAgICAgIGRlY2lzaW9uIGJlaGF2aW9yLiBUaGUgY29uZmlndXJhdGlvbiBz
ZXR0aW5nIGRlZmF1bHRzIHRvIFlFUyBmb3IgY2xpZW50cyBsaW5rZWQgb24gb3IgYWZ0ZXIKKyAg
ICAgICAgdGhpcyBXZWJLaXQgY2hhbmdlIGFuZCBOTyBvdGhlcndpc2UuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFu
Y2VzdG9yc09yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2Vz
LnlhbWw6CisgICAgICAgICogU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAqIFNoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKGRlZmF1bHRTaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXddKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9WZXJzaW9uQ2hlY2tzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOgorCiAyMDE5LTAzLTI4ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBdXRvbWF0
aWMgZm9jdXMgb2YgaW5wdXQgZmllbGQgaXMgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL05ldmVyRGVzdHJveWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCmlu
ZGV4IGU3ZThhN2VhMDM5ODljYmE0MDRlYWJiODI1MzUwMGQ1YzNmN2Y1NTMuLmUwZTQ2Nzc1NjFj
N2JmYmQ5ZTU1Njg0YzUyNDVkY2E1ZTJiM2NiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L05ldmVyRGVzdHJveWVkLmgKKysrIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTYwLDkgKzYwLDEzIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBUJigpIHsgcmV0dXJuICpz
dG9yYWdlUG9pbnRlcigpOyB9CiAgICAgVCYgZ2V0KCkgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVy
KCk7IH0KIAorICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBzdG9yYWdlUG9pbnRlcigpOyB9
CisKICAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9pbnRl
cigpOyB9CiAgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVy
KCk7IH0KIAorICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdG9yYWdl
UG9pbnRlcigpOyB9CisKIHByaXZhdGU6CiAgICAgdXNpbmcgUG9pbnRlclR5cGUgPSB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSo7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OWRiMzRhNGNkZWIxZWQ0Nzg2
OTFjNTVjOGVkNWYyNjk0YzZkZThkLi5jNDAxODA0NDI0MjBkOWUxNDIxYjg1MmRjODQwMmQ3NjBm
MzMxY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMDIzLDcgKzMwMjMsNyBAQAogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0Uw
N0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVu
dEVycm9yLmggKi87IH07CiAJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVu
dEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9
OwogCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZD
N0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyB9OwotCQlBMUMxNTA3QTFFM0Yy
QjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZp
ZXdDb252ZXJ0ZXIuaCAqLzsgfTsKKwkJQTFDMTUwN0ExRTNGMkIzRTAwMzJDOThDIC8qIFByZXZp
ZXdDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQzE1MDc4MUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFDQkVGNjQxRjlG
MTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9j
a1BheW1lbnRNZXRob2QuaCAqLzsgfTsKIAkJQTFDQzU2NjcxRjQ2MTQ3QTAwQTQ1NTVCIC8qIEpT
UGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExQ0M1NjY1MUY0NjE0NjgwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNzLmggKi87
IH07CiAJCUExQ0M1NjY5MUY0NjE0ODAwMEE0NTU1QiAvKiBKU1BheW1lbnRDb21wbGV0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQzU2NEUxRjQ2
MTQ1MjAwQTQ1NTVCIC8qIEpTUGF5bWVudENvbXBsZXRlLmggKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0ODNlY2QzYzEzZDYxZTY5YTM1
OGViODFjY2E2ZTM2NGNjNDUyMDA5Li4yM2RlMTU0NDlhMDVlYzE0OTMyOTIyY2NiYzM3NDQzZDQ3
MDNkOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02Myw2ICs2Myw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQorI2luY2x1
ZGUgIlByZXZpZXdDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJQcmV2aWV3TG9hZGVyLmgiCiAjZW5k
aWYKIApAQCAtMzA0LDcgKzMwNSw3IEBAIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OnNob3VsZENy
ZWF0ZVByZXZpZXdMb2FkZXJGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgaWYg
KG1fcHJldmlld0xvYWRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFBy
ZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkp
OworICAgIHJldHVybiBQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3BvbnNl
Lm1pbWVUeXBlKCkpOwogfQogCiAjZW5kaWYKQEAgLTMxOSw3ICszMjAsOCBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIENvbQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChzaG91bGRDcmVhdGVQ
cmV2aWV3TG9hZGVyRm9yUmVzcG9uc2UocmVzcG9uc2UpKSB7CiAgICAgICAgIG1fcHJldmlld0xv
YWRlciA9IFByZXZpZXdMb2FkZXI6OmNyZWF0ZSgqdGhpcywgcmVzcG9uc2UpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChtX3ByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9Q
cmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIu
aAppbmRleCBhNjMwOTc0NjZiNWZlYjNiNDNlZjIyMTQ4YTQxZGZlNTZhNjU3NTZhLi42MThlOTQy
OTUwMTdkYzNiODMwMzY1YzExNjc2MTUzOGIxZGI2MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL1ByZXZpZXdMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDEwICs0MSwxMCBAQCBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBQcmV2aWV3TG9hZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
cmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBz
aG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICB+UHJldmlld0xvYWRlcigpOwogCisgICAgYm9vbCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBib29sIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hM
b2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdM
b2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KaW5k
ZXggNzI1MWQ3MGIwNTE3MDZlMjZiNTBmYWU1MjIwZjMyNTZhMzZmNTE5NS4uZjZiODIyMTc5MTZj
YWQ5NWJmZTk2MGJiM2UzNzg0YTI3MGE5YmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvUHJldmlld0xvYWRlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKIAogI2ltcG9ydCAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbXBvcnQgIkZyYW1lLmgiCiAjaW1w
b3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbXBv
cnQgIkxvZ2dpbmcuaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNpbXBvcnQgIlByZXZpZXdMb2FkZXJD
bGllbnQuaCIKICNpbXBvcnQgIlF1aWNrTG9vay5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIu
aCIKKyNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tT
UEkuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC00Nyw3ICs0OSw3IEBA
IEBpbnRlcmZhY2UgV2ViUHJldmlld0xvYWRlciA6IE5TT2JqZWN0IHsKICAgICBSZWZQdHI8UHJl
dmlld0xvYWRlckNsaWVudD4gX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0Nv
bnZlcnRlcj4gX2NvbnZlcnRlcjsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9idWZm
ZXJlZERhdGFBcnJheTsKLSAgICBCT09MIF9oYXNTZW50RGlkUmVjZWl2ZVJlc3BvbnNlOworICAg
IEJPT0wgX2hhc0xvYWRlZFByZXZpZXc7CiAgICAgQk9PTCBfaGFzUHJvY2Vzc2VkUmVzcG9uc2U7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gX2J1ZmZlcmVkRGF0YTsKICAgICBsb25nIGxvbmcg
X2xlbmd0aFJlY2VpdmVkOwpAQCAtNTksNiArNjEsOCBAQCAtICh2b2lkKWFwcGVuZERhdGFBcnJh
eTooTlNBcnJheTxOU0RhdGEgKj4gKilkYXRhQXJyYXk7CiAtICh2b2lkKWZpbmlzaGVkQXBwZW5k
aW5nOwogLSAodm9pZClmYWlsZWQ7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Qk9PTCBzaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOworCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJQcmV2aWV3TG9hZGVyCkBAIC03NywxNCArODEsMTQgQEAgc3RhdGljIFByZXZp
ZXdMb2FkZXJDbGllbnQmIGVtcHR5Q2xpZW50KCkKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
UmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVJl
c3BvbnNlOihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNvdXJjZVJlc3BvbnNlCiB7Ci0gICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCisgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfcmVzb3VyY2VMb2FkZXIg
PSBtYWtlV2Vha1B0cihyZXNvdXJjZUxvYWRlcik7CiAgICAgX3Jlc3BvbnNlID0gcmVzb3VyY2VS
ZXNwb25zZTsKICAgICBfY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVy
dGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpOwogCiAgICAgaWYgKHRl
c3RpbmdDbGllbnQoKSkKICAgICAgICAgX2NsaWVudCA9IHRlc3RpbmdDbGllbnQoKTsKQEAgLTEx
OSwxNSArMTIzLDE2IEBAIC0gKHZvaWQpZmFpbGVkCiAgICAgX2NsaWVudC0+ZGlkRmFpbCgpOwog
fQogCi0tICh2b2lkKV9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3NhcnkKKy0gKHZvaWQp
X2xvYWRQcmV2aWV3SWZOZWVkZWQKIHsKICAgICBpZiAoIV9yZXNvdXJjZUxvYWRlcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpOwotICAgIGlmIChfaGFzU2VudERpZFJlY2VpdmVSZXNwb25zZSkKKyAgICBpZiAo
X2hhc0xvYWRlZFByZXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIF9oYXNMb2FkZWRQcmV2
aWV3ID0gWUVTOwogICAgIFtfYnVmZmVyZWREYXRhQXJyYXkgcmVtb3ZlQWxsT2JqZWN0c107CiAK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgX2NvbnZlcnRlci0+cHJldmlld1Jlc3Bv
bnNlKCkgfTsKQEAgLTEzNiw3ICsxNDEsMTIgQEAgLSAodm9pZClfc2VuZERpZFJlY2VpdmVSZXNw
b25zZUlmTmVjZXNzYXJ5CiAKICAgICBfcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShfY29udmVydGVyKSk7CiAKLSAgICBfaGFzU2Vu
dERpZFJlY2VpdmVSZXNwb25zZSA9IFlFUzsKKyAgICBpZiAoX3Nob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmcpIHsKKyAgICAgICAgX2hhc1Byb2Nlc3NlZFJlc3BvbnNlID0gWUVTOworICAg
ICAgICBfcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIF9oYXNQcm9jZXNzZWRSZXNwb25z
ZSA9IE5POwogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
LCBbc2VsZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIF9oYXNQ
cm9jZXNzZWRSZXNwb25zZSA9IFlFUzsKQEAgLTE3MCw4ICsxODAsOCBAQCAtICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0
YSAqKWRhdGEgbAogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOwog
ICAgIGlmIChfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBbc2VsZiBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNz
YXJ5XTsKKworICAgIFtzZWxmIF9sb2FkUHJldmlld0lmTmVlZGVkXTsKIAogICAgIGF1dG8gZGF0
YUxlbmd0aCA9IGRhdGEubGVuZ3RoOwogCkBAIC0yMDEsNyArMjExLDcgQEAgLSAodm9pZCljb25u
ZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogICAg
IGlmIChfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBBU1NFUlQoX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2UpOworICAg
IEFTU0VSVChfaGFzTG9hZGVkUHJldmlldyk7CiAKICAgICBpZiAoIV9oYXNQcm9jZXNzZWRSZXNw
b25zZSkgewogICAgICAgICBfbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nID0gWUVTOwpAQCAt
MjI2LDcgKzIzNiw2IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKGVycm9yKSkgewotICAgICAgICBb
c2VsZiBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNzYXJ5XTsKICAgICAgICAgX3Jlc291
cmNlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1
NiwyOCArMjY1LDE1IEBAIFByZXZpZXdMb2FkZXI6On5QcmV2aWV3TG9hZGVyKCkKIHsKIH0KIAot
Ym9vbCBQcmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQorc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6
OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L2h0bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgInRleHQvcGxhaW4iKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkTUlNRVR5cGVzOwot
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcg
Km1pbWVUeXBlIGluIFFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpKQotICAgICAg
ICAgICAgc3VwcG9ydGVkTUlNRVR5cGVzLmdldCgpLmFkZChtaW1lVHlwZSk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAobWltZVR5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBzdXBwb3J0ZWRNSU1FVHlwZXMuZ2V0KCkuY29udGFpbnMobWltZVR5cGUpOworICAg
IEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVU
eXBlKCkpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2Fk
ZXIsIHJlc3BvbnNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZp
ZXdMb2FkZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK2Jvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewotICAgIEFTU0VSVChzaG91bGRDcmVhdGVGb3JN
SU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuICFbbV9wcmV2
aWV3TG9hZGVyIHNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmddOwogfQogCiBib29sIFBy
ZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCBkN2Q1MjgzNzE3NTZiZmRjMWUw
NThiMmJjNTZmMDA3ZDYzNTU0MjgzLi43MjA1ZDFmZDM4MzA5Yjc2ZTJiNDU0YjBiMTAyMzZlZTA1
ZTBjOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC04MjMsNiArODIzLDkgQEAg
YWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZDoKIGJsb2NraW5nT2ZTbWFsbFBsdWdpbnNFbmFibGVk
OgogICBpbml0aWFsOiB0cnVlCiAKK3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlj
a0xvb2tQcmV2aWV3OgorICBpbml0aWFsOiBmYWxzZQorCiAjIERlcHJlY2F0ZWQKIAogaWNlQ2Fu
ZGlkYXRlRmlsdGVyaW5nRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAKaW5kZXggZjllYWJiNWZiOTBmMjk0M2I0ODhhODg2NWZlNzUyYTRjMTQ4
YmJjMy4uNmNhZTE0YWE0YmNmY2RhNTA1M2Q4ZTY3OGE0OTA0YjA3N2Q4MzhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC01Myw2ICs1MywxMCBAQAogI2luY2x1ZGUgIkltYWdlRGVjb2RlckFW
Rk9iakMuaCIKICNlbmRpZgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW5jbHVkZSAiUHJldmll
d0NvbnZlcnRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6
OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKQEAgLTY0Myw2ICs2NDcsMTEgQEAgYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAg
ICBpZiAoaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpIHx8IGlzU3VwcG9y
dGVkSlNPTk1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyNpZiBV
U0UoUVVJQ0tfTE9PSykKKyAgICBpZiAoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlw
ZShtaW1lVHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBpZiAoc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikpCiAgICAg
ICAgIHJldHVybiAhaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0
ZXIuaAppbmRleCAwMWM3ZDI1NTk2MzYxZTlkYWFmNjFjYTI1MGMyYmZiNzExMWQyOWY1Li41YTA2
ZjJlZjg5ZWY1YzIxYmUxNTdjNzFkYTE0MTllYzg0ODA5ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCkBAIC00
MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICBQcmV2aWV3Q29udmVydGVyKGlkIGRlbGVnYXRlLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CiAg
ICAgUHJldmlld0NvbnZlcnRlcihOU0RhdGEgKiwgY29uc3QgU3RyaW5nJiB1dGksIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmQgPSB7IH0pOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIFFMUHJldmll
d0NvbnZlcnRlciAqcGxhdGZvcm1Db252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
Q29udmVydGVyLmdldCgpOyB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHNhZmVSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIFJlc291cmNlUmVxdWVzdCBwcmV2aWV3UmVx
dWVzdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUHJldmlld0NvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIubW0KaW5kZXggNDgyYWFhYjc1ODlkZTEzZGE4ZWU1NzA2
Nzc5MDc2MTQ3NzUyYmE3Yy4uYjVjZDI4MzU2ZjI2OWY5ZDYxNjMxMzdkNTFhM2E0YzI4OGJiNDk5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmll
d0NvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9Q
cmV2aWV3Q29udmVydGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShRVUlDS19MT09LKQog
CisjaW1wb3J0ICJRdWlja0xvb2suaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgogI2lt
cG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tTb2Z0
TGluay5oPgpAQCAtNTMsNiArNTQsMjQgQEAgUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcihOU0RhdGEgKmRhdGEsIGNvbnN0IFN0cmluZyYgdXRpLCBjb25zdCBTdHJpbmcKIHsKIH0K
IAorYm9vbCBQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCit7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVU
eXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZE1JTUVUeXBlczsK
KyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBmb3IgKE5TU3RyaW5n
ICptaW1lVHlwZSBpbiBRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSkKKyAgICAg
ICAgICAgIHN1cHBvcnRlZE1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKKyAgICB9KTsKKworICAg
IGlmIChtaW1lVHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHN1cHBvcnRlZE1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworfQorCiBSZXNvdXJj
ZVJlcXVlc3QgUHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRlciBz
YWZlUmVxdWVzdEZvclJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQ
b2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBjZmE5OWIxNzVm
MzUzOWFkMzY0ZmViOTE0OWM3NzljOTVmYmZiZDFlLi5mOGU0NjQyMzk3OTljZTY0NjY1YTBhZjdl
MWJjNmYzZWFhMjRlZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFVTRShRVUlDS19MT09LKQotI2luY2x1ZGUgPFdlYkNv
cmUvUHJldmlld0xvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0NvbnZlcnRlci5o
PgogI2VuZGlmCiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC0zODYs
NyArMzg2LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExv
YWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8KICAgICBBU1NFUlQoaXNNYWluUmVz
b3VyY2UoKSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoUHJldmlld0xvYWRlcjo6
c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpCisgICAgaWYgKFBy
ZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbAppbmRleCA2MDlkMzFmMmZhMDE1ZTRkYmRkYWNjM2I1NGQ1YjMyMzY0YTc4
ZWYwLi4zMjAyMTVkZGRmN2Y3NDk2NmRkMDg2YWE3M2NkNjg3NzIzNWI4ZDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTExOTIsNiArMTE5MiwxMCBAQCBF
ZGl0YWJsZUltYWdlc0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxz
ZQogCitTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzoKKyAg
ZGVmYXVsdFZhbHVlOiBmYWxzZQorICB0eXBlOiBib29sCisKICMgRm9yIGV4cGVyaW1lbnRhbCBm
ZWF0dXJlczoKICMgVGhlIHR5cGUgc2hvdWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3Zp
ZGUgYSBodW1hblJlYWRhYmxlTmFtZSBhbmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBh
bGwgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBUaGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwCmluZGV4IDBmODU5MTliMDQ2M2EzZGVj
ZmRkMjhmNTNjZmY1OWQ3MDJmZWU4ZmMuLjhiYmRhNTk3NTE1ZjQ2YjZlY2Q1MDQ4MGQ2ZTQ5ODgw
YzE4NGRiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tE
b2N1bWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tE
b2N1bWVudERhdGEuY3BwCkBAIC00Niw2ICs0NiwxMSBAQCBDRkRhdGFSZWYgUXVpY2tMb29rRG9j
dW1lbnREYXRhOjpkZWNvZGVkRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YVswXS5nZXQo
KTsKIH0KIAorYm9vbCBRdWlja0xvb2tEb2N1bWVudERhdGE6OmlzRW1wdHkoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2RhdGEuaXNFbXB0eSgpOworfQorCiB2b2lkIFF1aWNrTG9va0RvY3VtZW50
RGF0YTo6Y2xlYXIoKQogewogICAgIG1fZGF0YS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oCmluZGV4IDFmMjU1YjVmODZlNTUx
N2NmYWVlYWFmZTAzNTFhZWE2YWEyMDBmZWEuLjcwMTZmNDE3MDJlNmMzNTgxMjFkMGUzMWU1NDcz
YWRmOWE5N2YyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xv
b2tEb2N1bWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvUXVpY2tMb29r
RG9jdW1lbnREYXRhLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgUXVpY2tMb29rRG9jdW1lbnRE
YXRhIHsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogICAgIENGRGF0YVJl
ZiBkZWNvZGVkRGF0YSgpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgIHZv
aWQgY2xlYXIoKTsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUXVpY2tMb29rRG9jdW1lbnREYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCBlYzZjYzdmZWNjMThjMzNlZjBjZjUwZmU1NGQwYzg0MWJlZjE2N2UwLi5kOGU5NDM2ZjkxNTAx
YjM5ZThlODNmY2FlNDU1ZDAxMGJkYWMyZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYyNiw2ICs2MjYsNyBAQCAtICh2b2lkKV9p
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQo
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6dXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUtl
eSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihXZWJDb3JlOjpVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50KSkpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxheW91dERpcmVjdGlvbktleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpUZXh0
RGlyZWN0aW9uOjpMVFIpKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dTZXR0aW5nQW55WEhSSGVh
ZGVyRnJvbUZpbGVVUkxzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
c2hvdWxkQWxsb3dTZXR0aW5nQW55WEhSSGVhZGVyRnJvbUZpbGVVUkxzKCkpKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlld0tl
eSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9u
IF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlld10pKTsKICNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtUHJldmlld0VuYWJs
ZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJh
dGlvbiBfc3lzdGVtUHJldmlld0VuYWJsZWRdKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0KaW5kZXggNzdiMTlkZDg2ZGE1NTYxNTJiYTdkNjQ5Y2I2MzFlMTRiZDdkZTFiZi4uZDYwMmFh
ZjRmMjAxNDkyNTM1OGRlNTViM2M1NzEwZWNmOTk5OTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0KQEAgLTk5LDYgKzk5LDE2IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5IHRvRHJhZ0xpZnRE
ZWxheShOU1VJbnRlZ2VyIHZhbHVlKQogICAgIHJldHVybiBfV0tEcmFnTGlmdERlbGF5U2hvcnQ7
CiB9CiAKK3N0YXRpYyBib29sIGRlZmF1bHRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5n
UXVpY2tMb29rUHJldmlldygpCit7CisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgc3RhdGljIGJv
b2wgc2hvdWxkRGVjaWRlID0gbGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmly
c3RUaGF0RGVjaWRlc1BvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KTsKKyAgICBy
ZXR1cm4gc2hvdWxkRGVjaWRlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KwogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKQEAg
LTEyOSw2ICsxMzksNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB7
CiAgICAgQk9PTCBfdGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkOwogICAgIEJPT0wgX2xv
bmdQcmVzc0FjdGlvbnNFbmFibGVkOwogICAgIEJPT0wgX3N5c3RlbVByZXZpZXdFbmFibGVkOwor
ICAgIEJPT0wgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3
OwogI2VuZGlmCiAKICAgICBCT09MIF9pbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZDsKQEAg
LTIzNiw2ICsyNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9sb25nUHJlc3NBY3Rp
b25zRW5hYmxlZCA9IFlFUzsKICNlbmRpZgogICAgIF9zeXN0ZW1QcmV2aWV3RW5hYmxlZCA9IE5P
OworICAgIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyA9
IGRlZmF1bHRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygp
OwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBfbWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBXZWJDb3JlOjpTZXR0aW5nczo6ZGVmYXVsdE1l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCk7CkBAIC0yOTEsNiArMzAz
LDcgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogICAgIFtjb2Rl
ciBlbmNvZGVCb29sOnNlbGYuX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCBmb3JLZXk6
QCJ0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQiXTsKICAgICBbY29kZXIgZW5jb2RlQm9v
bDpzZWxmLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCBmb3JLZXk6QCJsb25nUHJlc3NBY3Rpb25z
RW5hYmxlZCJdOwogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX3N5c3RlbVByZXZpZXdFbmFi
bGVkIGZvcktleTpAInN5c3RlbVByZXZpZXdFbmFibGVkIl07CisgICAgW2NvZGVyIGVuY29kZUJv
b2w6c2VsZi5fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcg
Zm9yS2V5OkAic2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXci
XTsKICNlbHNlCiAgICAgW2NvZGVyIGVuY29kZUludGVnZXI6c2VsZi51c2VySW50ZXJmYWNlRGly
ZWN0aW9uUG9saWN5IGZvcktleTpAInVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kiXTsKICNl
bmRpZgpAQCAtMzI1LDYgKzMzOCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihO
U0NvZGVyICopY29kZXIKICAgICBzZWxmLl90ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQg
PSBbY29kZXIgZGVjb2RlQm9vbEZvcktleTpAInRleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxl
ZCJdOwogICAgIHNlbGYuX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkID0gW2NvZGVyIGRlY29kZUJv
b2xGb3JLZXk6QCJsb25nUHJlc3NBY3Rpb25zRW5hYmxlZCJdOwogICAgIHNlbGYuX3N5c3RlbVBy
ZXZpZXdFbmFibGVkID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJzeXN0ZW1QcmV2aWV3RW5h
YmxlZCJdOworICAgIHNlbGYuX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3ID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJzaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyJdOwogI2Vsc2UKICAgICBhdXRvIHVzZXJJbnRl
cmZhY2VEaXJlY3Rpb25Qb2xpY3lDYW5kaWRhdGUgPSBzdGF0aWNfY2FzdDxXS1VzZXJJbnRlcmZh
Y2VEaXJlY3Rpb25Qb2xpY3k+KFtjb2RlciBkZWNvZGVJbnRlZ2VyRm9yS2V5OkAidXNlckludGVy
ZmFjZURpcmVjdGlvblBvbGljeSJdKTsKICAgICBpZiAodXNlckludGVyZmFjZURpcmVjdGlvblBv
bGljeUNhbmRpZGF0ZSA9PSBXS1VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3lDb250ZW50IHx8
IHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3lDYW5kaWRhdGUgPT0gV0tVc2VySW50ZXJmYWNl
RGlyZWN0aW9uUG9saWN5U3lzdGVtKQpAQCAtMzgxLDYgKzM5NSw3IEBAIC0gKGlkKWNvcHlXaXRo
Wm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZpZ3VyYXRpb24tPl90ZXh0SW50ZXJhY3Rpb25H
ZXN0dXJlc0VuYWJsZWQgPSBzZWxmLT5fdGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkOwog
ICAgIGNvbmZpZ3VyYXRpb24tPl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCA9IHNlbGYtPl9sb25n
UHJlc3NBY3Rpb25zRW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fc3lzdGVtUHJldmlld0Vu
YWJsZWQgPSBzZWxmLT5fc3lzdGVtUHJldmlld0VuYWJsZWQ7CisgICAgY29uZmlndXJhdGlvbi0+
X3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3ID0gc2VsZi0+
X3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3OwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNvbmZpZ3VyYXRpb24tPl91c2VySW50ZXJmYWNlRGly
ZWN0aW9uUG9saWN5ID0gc2VsZi0+X3VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k7CkBAIC03
MzIsNiArNzQ3LDE2IEBAIC0gKHZvaWQpX3NldFN5c3RlbVByZXZpZXdFbmFibGVkOihCT09MKWVu
YWJsZWQKICAgICBfc3lzdGVtUHJldmlld0VuYWJsZWQgPSBlbmFibGVkOwogfQogCistIChCT09M
KV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldworeworICAg
IHJldHVybiBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc7
Cit9CisKKy0gKHZvaWQpX3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3OihCT09MKXNob3VsZERlY2lkZQoreworICAgIF9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyA9IHNob3VsZERlY2lkZTsKK30KKwogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKEJPT0wpX2ludmlzaWJsZUF1dG9wbGF5Tm90
UGVybWl0dGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IDhjMTZlMzk4
MGRkM2FhZmQ2YmU3NTgwYTI3MjkxNmUxYTU4MGI1YTMuLjc4MDI3ZmQ5ZjA3MjFkZmUxNDI3N2Yx
MTQxMzA2NzBkMTQ1YzM2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBA
IC04Miw2ICs4Miw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tEcmFnTGlmdERl
bGF5KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRUZXh0SW50ZXJhY3Rpb25H
ZXN0dXJlc0VuYWJsZWQ6KSBCT09MIF90ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0TG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQ6KSBCT09MIF9sb25nUHJlc3NBY3Rpb25zRW5hYmxl
ZCBXS19BUElfQVZBSUxBQkxFKGlvcygxMi4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRTeXN0ZW1QcmV2aWV3RW5hYmxlZDopIEJPT0wgX3N5c3RlbVByZXZpZXdFbmFibGVk
IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEyLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3Oikg
Qk9PTCBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcgV0tf
QVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogI2Vsc2UKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFNob3dzVVJMc0luVG9vbFRpcHM6KSBCT09MIF9zaG93c1VSTHNJblRv
b2xUaXBzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFNlcnZpY2VDb250cm9sc0VuYWJsZWQ6KSBCT09MIF9zZXJ2aWNlQ29u
dHJvbHNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaAppbmRleCAzYjM1MGJlMDBiMzk4
ZGQ5ZWY0ZWFjMThhMTUzNzQ5YTRiZTM1ZTEwLi5mNGQ0MjgxYWU1M2IxMWI1NzlmYjQ0YmI3NTcx
N2E2MjRhNWU5Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
ZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lv
bkNoZWNrcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fRklS
U1RfV0lUSF9QUk9DRVNTX1NXQVBfT05fQ1JPU1NfU0lURV9OQVZJR0FUSU9OIDAKICNkZWZpbmUg
RFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NOQVBTSE9UX0FGVEVSX1NDUkVFTl9VUERBVEVT
IDAKICNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSEVSRV9ET1dOTE9BRF9BVFRSSUJV
VEVfRE9FU19OT1RfT1ZFUlJJREVfTkFWSUdBVElPTl9ERUxFR0FURSAwCisjZGVmaW5lIERZTERf
SU9TX1ZFUlNJT05fRklSU1RfVEhBVF9ERUNJREVTX1BPTElDWV9CRUZPUkVfTE9BRElOR19RVUlD
S19MT09LX1BSRVZJRVcgMAogI2RlZmluZSBEWUxEX01BQ09TX1ZFUlNJT05fRklSU1RfV0lUSF9T
TkFQU0hPVF9BRlRFUl9TQ1JFRU5fVVBEQVRFUyAwCiAjZGVmaW5lIERZTERfTUFDT1NfVkVSU0lP
Tl9GSVJTVF9XSEVSRV9ET1dOTE9BRF9BVFRSSUJVVEVfRE9FU19OT1RfT1ZFUlJJREVfTkFWSUdB
VElPTl9ERUxFR0FURSAwCiAjZW5kaWYKQEAgLTYxLDYgKzYyLDcgQEAgZW51bSBjbGFzcyBTREtW
ZXJzaW9uIDogdWludDMyX3QgewogICAgIEZpcnN0V2l0aFNuYXBzaG90QWZ0ZXJTY3JlZW5VcGRh
dGVzID0gRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NOQVBTSE9UX0FGVEVSX1NDUkVFTl9V
UERBVEVTLAogICAgIEZpcnN0V2hlcmVEb3dubG9hZEF0dHJpYnV0ZURvZXNOb3RPdmVycmlkZU5h
dmlnYXRpb25EZWxlZ2F0ZSA9IERZTERfSU9TX1ZFUlNJT05fRklSU1RfV0hFUkVfRE9XTkxPQURf
QVRUUklCVVRFX0RPRVNfTk9UX09WRVJSSURFX05BVklHQVRJT05fREVMRUdBVEUsCiAgICAgRmly
c3RXaXRoRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uQVBJID0gRFlMRF9JT1Nf
VkVSU0lPTl9GSVJTVF9XSVRIX0RFVklDRV9PUklFTlRBVElPTl9BTkRfTU9USU9OX1BFUk1JU1NJ
T05fQVBJLAorICAgIEZpcnN0VGhhdERlY2lkZXNQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlldyA9IERZTERfSU9TX1ZFUlNJT05fRklSU1RfVEhBVF9ERUNJREVTX1BPTElDWV9CRUZP
UkVfTE9BRElOR19RVUlDS19MT09LX1BSRVZJRVcsCiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAg
Rmlyc3RXaXRoTmV0d29ya0NhY2hlID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMSwKICAgICBG
aXJzdFdpdGhFeGNlcHRpb25zRm9yRHVwbGljYXRlQ29tcGxldGlvbkhhbmRsZXJDYWxscyA9IERZ
TERfTUFDT1NYX1ZFUlNJT05fMTBfMTMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcAppbmRleCBiMmE5MjQxOGNlZDg2NmZlOTMzZDU4OWNlYWU4ZGQ2ZTAzOGE3YWQz
Li5lMWU5M2E2ZGUzNDY3ZWYxNDA5NDUzNDZkOGRiNGZkZDI3Mzg2NzAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHIKICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsg
cGFnZUlEIH0KIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
bV9maWxlTmFtZSwgbV91dGkpLCBtX3BhZ2VJRCk7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkKQEAgLTU5LDYgKzU4LDkgQEAgV2ViUHJldmll
d0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKQogCiB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkp
CiB7CisgICAgaWYgKG1fZGF0YS5pc0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1lLCBtX3V0aSksIG1fcGFnZUlEKTsKKwog
ICAgIENGQXJyYXlBcHBseUZ1bmN0aW9uKGRhdGFBcnJheSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJh
eUdldENvdW50KGRhdGFBcnJheSkpLCBbXShjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4
dCkgewogICAgICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodmFsdWUpID09IENGRGF0YUdldFR5cGVJ
RCgpKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8UXVpY2tMb29rRG9jdW1lbnREYXRhKj4oY29udGV4
dCktPmFwcGVuZCgoQ0ZEYXRhUmVmKXZhbHVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZTY5ZjI4YmRmZjdhOTA4ZmUxMzMzMTRmYmM3MzQ0
NWFmYzdiZWUyLi5iNDEyZDQ2MmQ4YTJiMmE1ZmNiY2EyNGNlODMzMTZmYWYxNTA5YzBlIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTMgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0aGUgbmF2aWdhdGlvbiByZXNwb25zZSBw
b2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcgYSBRdWlja0xvb2sgZG9jdW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjQzMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRW5oYW5jZWQgQVBJIHRlc3QgY292ZXJhZ2UgdG8gaW5j
bHVkZSBhbGwgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25zIGluIGJvdGgKKyAg
ICAgICAgbGlua2VkLWJlZm9yZSBhbmQgbGlua2VkLW9uLW9yLWFmdGVyIG1vZGVzLiBBbHNvIGFk
ZGVkIG5ldyBleHBlY3RhdGlvbnMgZm9yIGFsbCB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0NvbnZlcnRlci5jcHA6IFJl
bmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdM
b2FkZXIuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06CisgICAgICAgIChyZWFk
RmlsZSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIGluaXRXaXRoRXhwZWN0ZWRGaWxl
VVJMOnJlc3BvbnNlUG9saWN5Ol0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBpbml0
V2l0aEV4cGVjdGVkRmlsZVVSTDpwcmV2aWV3TUlNRVR5cGU6cmVzcG9uc2VQb2xpY3k6XSk6Cisg
ICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVs
ZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZVdpdGhGaWxlTmFtZTp1dGk6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF93ZWJW
aWV3OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOl0pOgorICAg
ICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfd2ViVmll
d1dlYlByb2Nlc3NEaWRDcmFzaDpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgX2Rv
d25sb2FkRGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF9kb3dubG9h
ZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF9k
b3dubG9hZDpkaWRSZWNlaXZlRGF0YTpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUg
X2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfZG93bmxvYWREaWRG
aW5pc2g6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWls
V2l0aEVycm9yOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfZG93bmxvYWREaWRD
YW5jZWw6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIHZlcmlmeURvd25sb2FkXSk6
CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5n
KToKKyAgICAgICAgKHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcpOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtRdWlj
a0xvb2tQYXNzd29yZERlbGVnYXRlIF93ZWJWaWV3RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQ6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0ZyYW1lTG9hZERlbGVnYXRlIHdl
YlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tOYXZp
Z2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1aWNr
TG9va05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rTmF2
aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtRdWlja0xvb2tBc3luY05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOnV0
aTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdh
dGUgX3dlYlZpZXc6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRl
IHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVp
Y2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlj
a0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb246d2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tEZWNpZGVQ
b2xpY3lEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bUXVpY2tMb29rUGFzc3dvcmROYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXdEaWRS
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDpdKTogRGVsZXRlZC4KKwogMjAxOS0w
My0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaCBjYW4gcmV0
dXJuIE5VTEwgd2l0aG91dCBzZXR0aW5nIGVycm9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDM4MTg1OTM4YmU4MmU0NTU4MzZlMmM0OGMyY2JmYjY4M2M1MDk1NDAuLjBmOTNjMjY1OWU3ZjQw
NThhZjVlNTc3YjFmNjg2MjZhOTEwZTE1N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03
MTYsNyArNzE2LDcgQEAKIAkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5l
bC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODBD
MEY5MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi87IH07CiAJCUExQzRGQjcz
MUJBQ0QxQ0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyog
cGFnZXMucGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNS
ZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzLm1tICovOyB9OwotCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJl
dmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi87IH07
CisJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVydGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUMxMTg3MUY0MjU0
MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVydGVyLmNwcCAqLzsgfTsKIAkJQTMxMDgyNzIyMUYy
OTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0
ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYgLyogUGFnZVZpc2liaWxp
dHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBh
Z2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovOyB9OwogCQlBNTdENTRG
MzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8q
IE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKQEAgLTE5ODcsNyArMTk4Nyw3IEBACiAJCUExQzRG
QjZDMUJBQ0NFNTAwMDM3NDJEMCAvKiBRdWlja0xvb2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBRdWlja0xvb2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBwYWdl
cy5wYWdlczsgcGF0aCA9IGlvcy9wYWdlcy5wYWdlczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx3YXlz
UmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
MUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcmV2aWV3TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8qIFByZXZpZXdDb252ZXJ0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJldmlld0NvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExRkRGRDJFMTlDMjg4QkIwMDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNy
YXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVh
dGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzEwODI3
MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMwODUsNyArMzA4NSw3IEBACiAJCUExRUMxMTg1MUY0MjUzRDkwMEQw
MTQ2RSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCUExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLywKKwkJ
CQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0NvbnZlcnRlci5jcHAgKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00Mjcz
LDcgKzQyNzMsNyBAQAogCQkJCTdDMUFGNzk1MUU4RENCQUIwMDI2NDVCOSAvKiBQcmVwYXJlRm9y
TW92ZVRvV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEIxQTQxMUFFNjAwNDQ3
QzRDIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0YyQzFBNDExQjEwMDA0NDdDNEMgLyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcu
bW0gaW4gU291cmNlcyAqLywKLQkJCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmll
d0xvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUg
LyogUHJldmlld0NvbnZlcnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQzFBNDEx
QUU2MDA0NDdDNEMgLyogUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDY0N0IxMjYxRUJBM0I4NTAwNDFEN0VGIC8qIFByb2Nl
c3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4ODJGMDMyMTAxMEMwRDAw
MkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3Q29udmVy
dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NzIxYmRiNWEwODIwN2E3NjhhOGY1OTdmMGI2ODQwNGJjNDg0
ZTRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2lvcy9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBV
U0UoUVVJQ0tfTE9PSykKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0NvbnZlcnRlci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFF1aWNrTG9vaywgU2hvdWxk
Q3JlYXRlRm9yTUlNRVR5cGUpCit7CisgICAgLy8gRklYTUU6IEV4cGFuZCB0aGlzIHRvIGNvdmVy
IGFsbCB0aGUgTUlNRSB0eXBlcyB3ZSBleHBlY3QgdG8gc3VwcG9ydC4KKyAgICBFWFBFQ1RfRkFM
U0UoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShTdHJpbmcoKSkpOworICAgIEVY
UEVDVF9GQUxTRShQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKGVtcHR5U3RyaW5n
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBl
KCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyIl9zKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3TG9hZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xvYWRlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDRmMWVhZGQ4Yzg2MGRmOWI4MDAzYjhkMmQ2MzJiMmE2ZGFiMGExOTEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3TG9hZGVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0UoUVVJQ0tfTE9PSykKLQotI2luY2x1ZGUg
PFdlYkNvcmUvUHJldmlld0xvYWRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewotCi1URVNUKFF1aWNrTG9vaywgU2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUpCi17Ci0gICAgLy8g
RklYTUU6IEV4cGFuZCB0aGlzIHRvIGNvdmVyIGFsbCB0aGUgTUlNRSB0eXBlcyB3ZSBleHBlY3Qg
dG8gc3VwcG9ydC4KLSAgICBFWFBFQ1RfRkFMU0UoUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRl
Rm9yTUlNRVR5cGUoU3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UoUHJldmlld0xvYWRlcjo6
c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoZW1wdHlTdHJpbmcoKSkpOwotICAgIEVYUEVDVF9UUlVF
KFByZXZpZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBlKCJhcHBsaWNhdGlvbi92bmQu
bXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyIl9zKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFVTRShR
VUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1F1aWNrTG9vay5tbQppbmRleCA5M2QwN2ZhOWFhNTYwZTZkMmY1MTE2ZDE0YjAzMjZlMDk1ZjVk
ZGJiLi5kMDZmM2EzZmNhMWIwNDkzZWM2YjIwMDRlZDk5NGUxZDBiN2RhNDJhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDQyICsyOSwxMDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRlc3QuaCIKKyNpbXBvcnQgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YkRhdGFTb3VyY2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlL
aXRTdXBwb3J0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9fV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CiAKIHN0YXRpYyBib29sIGlzRG9uZTsKLXN0YXRpYyBib29sIGRpZFN0YXJ0UXVpY2tMb29rTG9h
ZDsKLXN0YXRpYyBib29sIGRpZEZpbmlzaFF1aWNrTG9va0xvYWQ7CitzdGF0aWMgYm9vbCBkb3du
bG9hZElzRG9uZTsKIAotc3RhdGljIGNvbnN0IE5TVUludGVnZXIgZXhwZWN0ZWRGaWxlU2l6ZSA9
IDI3NDE0MzsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGV4cGVjdGVkRmlsZU5hbWUgPSBAInBh
Z2VzLnBhZ2VzIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGV4cGVjdGVkVVRJID0gQCJjb20u
YXBwbGUuaXdvcmsucGFnZXMuc2ZmcGFnZXMiOwotc3RhdGljIE5TVVJMUmVxdWVzdCAqIGNvbnN0
IHBhZ2VzRG9jdW1lbnRSZXF1ZXN0ID0gW1tOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9u
OkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIHJldGFp
bl07CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBl
ID0gQCJhcHBsaWNhdGlvbi9wZGYiOworc3RhdGljIE5TVVJMICogY29uc3QgcGFnZXNEb2N1bWVu
dFVSTCA9IFtbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRo
RXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il0gcmV0YWluXTsKKworQGludGVyZmFjZSBRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUsIF9XS0Rvd25sb2FkRGVsZWdhdGU+CistIChpbnN0
YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4
cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHJlc3BvbnNlUG9saWN5OihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeSlyZXNwb25zZVBvbGljeTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHByZXZpZXdNSU1FVHlwZTooTlNTdHJp
bmcgKiltaW1lVHlwZSByZXNwb25zZVBvbGljeTooV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kp
cmVzcG9uc2VQb2xpY3k7CistICh2b2lkKXZlcmlmeURvd25sb2FkOworCitAcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBkaWRTdGFydFF1aWNrTG9va0xvYWQ7CitAcHJvcGVydHkgKG5vbmF0b21p
YykgQk9PTCBkaWRGaW5pc2hRdWlja0xvb2tMb2FkOwogCi1AaW50ZXJmYWNlIFF1aWNrTG9va05h
dmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUKK0Bp
bXBsZW1lbnRhdGlvbiBRdWlja0xvb2tEZWxlZ2F0ZSB7CitAcHJvdGVjdGVkCisgICAgTlNVSW50
ZWdlciBfZG93bmxvYWRGaWxlU2l6ZTsKKyAgICBOU1VJbnRlZ2VyIF9leHBlY3RlZEZpbGVTaXpl
OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2V4cGVjdGVkRmlsZU5hbWU7CisgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBfZXhwZWN0ZWRGaWxlVHlwZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IF9leHBlY3RlZE1JTUVUeXBlOworICAgIFJldGFpblB0cjxOU1VSTD4gX2Rvd25sb2FkRGVzdGlu
YXRpb25VUkw7CisgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX3Jlc3BvbnNlUG9saWN5
OworfQorCitzdGF0aWMgdm9pZCByZWFkRmlsZShOU1VSTCAqZmlsZVVSTCwgTlNVSW50ZWdlciYg
ZmlsZVNpemUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZpbGVOYW1lLCBSZXRhaW5QdHI8TlNTdHJp
bmc+JiBmaWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5nPiYgbWltZVR5cGUpCit7CisgICAgaWYg
KE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2Vy
IGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVVSTC5wYXRoIGVycm9yOm5pbF0pCisgICAgICAg
IGZpbGVTaXplID0gW2F0dHJpYnV0ZXNbTlNGaWxlU2l6ZV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVd
OworCisgICAgZmlsZU5hbWUgPSBmaWxlVVJMLmxhc3RQYXRoQ29tcG9uZW50OworCisgICAgTlNT
dHJpbmcgKnR5cGVJZGVudGlmaWVyID0gbmlsOworICAgIGlmIChbZmlsZVVSTCBnZXRSZXNvdXJj
ZVZhbHVlOiZ0eXBlSWRlbnRpZmllciBmb3JLZXk6TlNVUkxUeXBlSWRlbnRpZmllcktleSBlcnJv
cjpuaWxdKQorICAgICAgICBmaWxlVHlwZSA9IHR5cGVJZGVudGlmaWVyOworCisgICAgbWltZVR5
cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3MoKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXR5cGVJZGVudGlmaWVyLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHJl
c3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSlyZXNwb25zZVBvbGljeQor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgcmVhZEZpbGUoZmlsZVVSTCwgX2V4cGVjdGVkRmlsZVNpemUsIF9leHBlY3RlZEZpbGVO
YW1lLCBfZXhwZWN0ZWRGaWxlVHlwZSwgX2V4cGVjdGVkTUlNRVR5cGUpOworCisgICAgX3Jlc3Bv
bnNlUG9saWN5ID0gcmVzcG9uc2VQb2xpY3k7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHByZXZp
ZXdNSU1FVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSByZXNwb25zZVBvbGljeTooV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3kpcmVzcG9uc2VQb2xpY3kKK3sKKyAgICBpZiAoIShzZWxmID0gW3Nl
bGYgaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6ZmlsZVVSTCByZXNwb25zZVBvbGljeTpyZXNwb25z
ZVBvbGljeV0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIF9leHBlY3RlZE1JTUVU
eXBlID0gbWltZVR5cGU7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdL
TmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgorewor
ICAgIEVYUEVDVF9UUlVFKG5hdmlnYXRpb25SZXNwb25zZS5jYW5TaG93TUlNRVR5cGUpOworICAg
IEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgbmF2aWdhdGlvblJlc3Bv
bnNlLnJlc3BvbnNlLlVSTC5sYXN0UGF0aENvbXBvbmVudCk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KF9leHBlY3RlZE1JTUVUeXBlLmdldCgpLCBuYXZpZ2F0aW9uUmVzcG9uc2UucmVzcG9uc2UuTUlN
RVR5cGUpOworICAgIGRlY2lzaW9uSGFuZGxlcihfcmVzcG9uc2VQb2xpY3kpOworfQogCiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZU5hbWUgdXRp
OihOU1N0cmluZyAqKXV0aQogewotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZEZpbGVOYW1l
LCBmaWxlTmFtZSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkVVRJLCB1dGkpOwotICAg
IGRpZFN0YXJ0UXVpY2tMb29rTG9hZCA9IHRydWU7CisgICAgRVhQRUNUX0ZBTFNFKF9kaWRGaW5p
c2hRdWlja0xvb2tMb2FkKTsKKyAgICBFWFBFQ1RfRkFMU0UoX2RpZFN0YXJ0UXVpY2tMb29rTG9h
ZCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVOYW1lLmdldCgpLCBmaWxlTmFt
ZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVUeXBlLmdldCgpLCB1dGkpOwor
ICAgIF9kaWRTdGFydFF1aWNrTG9va0xvYWQgPSBZRVM7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWU6KE5TRGF0YSAqKWRvY3VtZW50RGF0YQogewotICAgIEVYUEVDVF9FUShleHBlY3Rl
ZEZpbGVTaXplLCBkb2N1bWVudERhdGEubGVuZ3RoKTsKLSAgICBkaWRGaW5pc2hRdWlja0xvb2tM
b2FkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfRVEoX2V4cGVjdGVkRmlsZVNpemUsIGRvY3VtZW50RGF0
YS5sZW5ndGgpOworICAgIEVYUEVDVF9GQUxTRShfZGlkRmluaXNoUXVpY2tMb29rTG9hZCk7Cisg
ICAgRVhQRUNUX1RSVUUoX2RpZFN0YXJ0UXVpY2tMb29rTG9hZCk7CisgICAgX2RpZEZpbmlzaFF1
aWNrTG9va0xvYWQgPSBZRVM7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCkBAIC03
MiwxMjggKzEzOSwyMjcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXQKICAgICBpc0RvbmUgPSB0
cnVlOwogfQogCi1AZW5kCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIGlzRG9uZSA9IHRydWU7Cit9CiAKLUBpbnRl
cmZhY2UgUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPgotQGVuZAorLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NE
aWRDcmFzaDooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tBc3luY05hdmlnYXRpb25E
ZWxlZ2F0ZQorLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZAoreworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgZG93bmxv
YWQucmVxdWVzdC5VUkwubGFzdFBhdGhDb21wb25lbnQpOworfQogCi0tICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihX
S05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKKy0g
KHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25z
ZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCiB7Ci0gICAgaW50NjRfdCBkZWZlcnJlZFdhaXRU
aW1lID0gMTAwICogTlNFQ19QRVJfTVNFQzsKLSAgICBkaXNwYXRjaF90aW1lX3Qgd2hlbiA9IGRp
c3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlZmVycmVkV2FpdFRpbWUpOworICAgIEVY
UEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgcmVzcG9uc2UuVVJMLmxhc3RQ
YXRoQ29tcG9uZW50KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5cGUuZ2V0
KCksIHJlc3BvbnNlLk1JTUVUeXBlKTsKK30KIAotICAgIGRpc3BhdGNoX2FmdGVyKHdoZW4sIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKLSAgICB9KTsKKy0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGgK
K3sKKyAgICBfZG93bmxvYWRGaWxlU2l6ZSArPSBsZW5ndGg7CiB9CiAKLS0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZVdpdGhGaWxlTmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSB1dGk6KE5TU3RyaW5n
ICopdXRpCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRGaWxlTmFtZSwgZmlsZU5hbWUpOwot
ICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFVUSSwgdXRpKTsKLSAgICBkaWRTdGFydFF1aWNr
TG9va0xvYWQgPSB0cnVlOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5n
ZXQoKSwgZmlsZW5hbWUpOworICAgIAorICAgIE5TVVJMICp0ZW1wRGlyZWN0b3J5VVJMID0gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CisgICAgX2Rvd25sb2FkRGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OmZpbGVuYW1lIHJlbGF0aXZlVG9VUkw6dGVtcERpcmVjdG9yeVVSTF07CisgICAgY29tcGxldGlv
bkhhbmRsZXIoWUVTLCBbX2Rvd25sb2FkRGVzdGluYXRpb25VUkwgcGF0aF0pOwogfQogCi0tICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lOihOU0RhdGEgKilkb2N1bWVudERhdGEKKy0gKHZvaWQpX2Rv
d25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgRVhQRUNUX0VR
KGV4cGVjdGVkRmlsZVNpemUsIGRvY3VtZW50RGF0YS5sZW5ndGgpOwotICAgIGRpZEZpbmlzaFF1
aWNrTG9va0xvYWQgPSB0cnVlOworICAgIEVYUEVDVF9FUShfZXhwZWN0ZWRGaWxlU2l6ZSwgX2Rv
d25sb2FkRmlsZVNpemUpOworICAgIGRvd25sb2FkSXNEb25lID0gdHJ1ZTsKIH0KIAotLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2
aWdhdGlvbiAqKW5hdmlnYXRpb24KKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgogewotICAgIGlzRG9uZSA9
IHRydWU7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAodm9pZClf
ZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCistICh2b2lkKXZlcmlmeURvd25sb2FkCit7Cisg
ICAgRVhQRUNUX1RSVUUoW05TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0
UGF0aDpbX2Rvd25sb2FkRGVzdGluYXRpb25VUkwgcGF0aF1dKTsKKworICAgIE5TVUludGVnZXIg
ZG93bmxvYWRGaWxlU2l6ZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRvd25sb2FkRmlsZU5h
bWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBkb3dubG9hZEZpbGVUeXBlOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gZG93bmxvYWRNSU1FVHlwZTsKKyAgICByZWFkRmlsZShfZG93bmxvYWRE
ZXN0aW5hdGlvblVSTC5nZXQoKSwgZG93bmxvYWRGaWxlU2l6ZSwgZG93bmxvYWRGaWxlTmFtZSwg
ZG93bmxvYWRGaWxlVHlwZSwgZG93bmxvYWRNSU1FVHlwZSk7CisKKyAgICBFWFBFQ1RfRVEoX2V4
cGVjdGVkRmlsZVNpemUsIGRvd25sb2FkRmlsZVNpemUpOworICAgIEVYUEVDVF9XS19TVFJFUShf
ZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgZG93bmxvYWRGaWxlTmFtZS5nZXQoKSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVUeXBlLmdldCgpLCBkb3dubG9hZEZpbGVUeXBlLmdl
dCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5cGUuZ2V0KCksIGRvd25s
b2FkTUlNRVR5cGUuZ2V0KCkpOwogfQogCiBAZW5kCiAKLXN0YXRpYyB2b2lkIHJ1blRlc3QoQ2xh
c3MgbmF2aWdhdGlvbkRlbGVnYXRlQ2xhc3MsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKK3N0YXRp
YyB2b2lkIHJ1blRlc3QoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXRlLCBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QsIEJPT0wgc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZykKIHsKLSAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbbmF2aWdhdGlvbkRlbGVnYXRlQ2xhc3Mg
YWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdKTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2Fk
RGVsZWdhdGU6ZGVsZWdhdGVdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBfc2V0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6c2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ107CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJv
Y2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKICAg
ICBpc0RvbmUgPSBmYWxzZTsKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLVRFU1QoUXVp
Y2tMb29rLCBOYXZpZ2F0aW9uRGVsZWdhdGUpCitzdGF0aWMgdm9pZCBydW5UZXN0RGVjaWRlQmVm
b3JlTG9hZGluZyhRdWlja0xvb2tEZWxlZ2F0ZSAqZGVsZWdhdGUsIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCkKIHsKLSAgICBydW5UZXN0KFtRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUgY2xhc3Nd
LCBwYWdlc0RvY3VtZW50UmVxdWVzdCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkU3RhcnRRdWlja0xv
b2tMb2FkKTsKLSAgICBFWFBFQ1RfVFJVRShkaWRGaW5pc2hRdWlja0xvb2tMb2FkKTsKKyAgICBy
dW5UZXN0KGRlbGVnYXRlLCByZXF1ZXN0LCBZRVMpOwogfQogCi1URVNUKFF1aWNrTG9vaywgQXN5
bmNOYXZpZ2F0aW9uRGVsZWdhdGUpCitzdGF0aWMgdm9pZCBydW5UZXN0RGVjaWRlQWZ0ZXJMb2Fk
aW5nKFF1aWNrTG9va0RlbGVnYXRlICpkZWxlZ2F0ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQog
ewotICAgIHJ1blRlc3QoW1F1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIGNsYXNzXSwg
cGFnZXNEb2N1bWVudFJlcXVlc3QpOwotICAgIEVYUEVDVF9UUlVFKGRpZFN0YXJ0UXVpY2tMb29r
TG9hZCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkRmluaXNoUXVpY2tMb29rTG9hZCk7CisgICAgcnVu
VGVzdChkZWxlZ2F0ZSwgcmVxdWVzdCwgTk8pOwogfQogCi1AaW50ZXJmYWNlIFF1aWNrTG9va0Rl
Y2lkZVBvbGljeURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorVEVT
VChRdWlja0xvb2ssIEFsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKK3sKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGlu
ZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3Vt
ZW50VVJMXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9h
ZF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7
Cit9CisKK1RFU1QoUXVpY2tMb29rLCBBbGxvd1Jlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykK
K3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlw
ZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRl
bGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRV
UkxdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7
CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKK30K
KworQGludGVyZmFjZSBRdWlja0xvb2tBc3luY0RlbGVnYXRlIDogUXVpY2tMb29rRGVsZWdhdGUK
IEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFF1aWNrTG9va0RlY2lkZVBvbGljeURlbGVnYXRlCitA
aW1wbGVtZW50YXRpb24gUXVpY2tMb29rQXN5bmNEZWxlZ2F0ZQogCiAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihX
S05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsK
LSAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWwpOwor
ICAgIGludDY0X3QgZGVmZXJyZWRXYWl0VGltZSA9IDEwMCAqIE5TRUNfUEVSX01TRUM7CisgICAg
ZGlzcGF0Y2hfdGltZV90IHdoZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBk
ZWZlcnJlZFdhaXRUaW1lKTsKKworICAgIGRpc3BhdGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfcmVzcG9uc2VQb2xp
Y3kpOworICAgIH0pOwogfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3
aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgorQGVuZAorCitURVNUKFF1aWNrTG9vaywgQXN5bmNB
bGxvd1Jlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgaXNEb25lID0gdHJ1ZTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xp
Y3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVC
ZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkU3RhcnRR
dWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNr
TG9va0xvYWRdKTsKIH0KIAotLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDooV0tX
ZWJWaWV3ICopd2ViVmlldworVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUFmdGVy
TG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBl
OnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVs
ZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVS
TF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsK
KyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwogfQog
Ci1AZW5kCitURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmll
dykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9s
aWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAgcnVuVGVzdERlY2lk
ZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkU3Rh
cnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hR
dWlja0xvb2tMb2FkXSk7Cit9CiAKLUBpbnRlcmZhY2UgUXVpY2tMb29rRnJhbWVMb2FkRGVsZWdh
dGUgOiBOU09iamVjdCA8V2ViRnJhbWVMb2FkRGVsZWdhdGU+Ci1AZW5kCitURVNUKFF1aWNrTG9v
aywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQoreworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRG
aWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2
aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5j
ZWxdKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1Rf
VFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUo
W2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKK30KIAotQGltcGxlbWVudGF0aW9u
IFF1aWNrTG9va0ZyYW1lTG9hZERlbGVnYXRlCitURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNw
b25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2Vz
RG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWRdKTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5n
ZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsKKyAgICBF
WFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKIAotLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJh
bWUgKilmcmFtZQorICAgIFV0aWw6OnJ1bigmZG93bmxvYWRJc0RvbmUpOworICAgIFtkZWxlZ2F0
ZSB2ZXJpZnlEb3dubG9hZF07Cit9CisKK1RFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNl
QWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBpc0RvbmUgPSB0cnVlOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQ
cmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWRdKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRl
LmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsK
KyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAg
RVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKIH0KIAorQGlu
dGVyZmFjZSBRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlIDogUXVpY2tMb29rRGVsZWdhdGUKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGRpZFJlcXVlc3RQYXNzd29yZDsKIEBlbmQKIAotVEVT
VChRdWlja0xvb2ssIENhbmNlbE5hdmlnYXRpb25BZnRlclJlc3BvbnNlKQorQGltcGxlbWVudGF0
aW9uIFF1aWNrTG9va1Bhc3N3b3JkRGVsZWdhdGUKKworLSAodm9pZClfd2ViVmlld0RpZFJlcXVl
c3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0g
ICAgcnVuVGVzdChbUXVpY2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgY2xhc3NdLCBwYWdlc0Rv
Y3VtZW50UmVxdWVzdCk7CisgICAgX2RpZFJlcXVlc3RQYXNzd29yZCA9IFlFUzsKKyAgICBpc0Rv
bmUgPSB0cnVlOwogfQogCi1AaW50ZXJmYWNlIFF1aWNrTG9va1Bhc3N3b3JkTmF2aWdhdGlvbkRl
bGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4KIEBlbmQKIAot
QGltcGxlbWVudGF0aW9uIFF1aWNrTG9va1Bhc3N3b3JkTmF2aWdhdGlvbkRlbGVnYXRlCitURVNU
KFF1aWNrTG9vaywgUmVxdWVzdFBhc3N3b3JkQmVmb3JlTG9hZGluZ1ByZXZpZXcpCit7CisgICAg
TlNVUkwgKnBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRVUkwgPSBbTlNCdW5kbGUubWFpbkJ1bmRs
ZSBVUkxGb3JSZXNvdXJjZTpAInBhc3N3b3JkLXByb3RlY3RlZCIgd2l0aEV4dGVuc2lvbjpAInBh
Z2VzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rUGFzc3dvcmREZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFVSTCByZXNwb25z
ZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVuVGVzdERl
Y2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6cGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9UUlVFKFtk
ZWxlZ2F0ZSBkaWRSZXF1ZXN0UGFzc3dvcmRdKTsKK30KIAotLSAodm9pZClfd2ViVmlld0RpZFJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50OihXS1dlYlZpZXcgKil3ZWJWaWV3CitU
RVNUKFF1aWNrTG9vaywgUmVxdWVzdFBhc3N3b3JkQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAg
ICBpc0RvbmUgPSB0cnVlOworICAgIE5TVVJMICpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50VVJM
ID0gW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJwYXNzd29yZC1wcm90ZWN0
ZWQiIHdpdGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va1Bhc3N3
b3JkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhc3N3b3JkUHJvdGVj
dGVkRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5
cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAg
IHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFVSTF0pOworICAgIEVYUEVD
VF9UUlVFKFtkZWxlZ2F0ZSBkaWRSZXF1ZXN0UGFzc3dvcmRdKTsKIH0KIAorQGludGVyZmFjZSBR
dWlja0xvb2tGcmFtZUxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXZWJGcmFtZUxvYWREZWxlZ2F0
ZT4KIEBlbmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MAorQGltcGxlbWVudGF0aW9uIFF1aWNrTG9va0ZyYW1lTG9hZERlbGVnYXRlCiAKLVRFU1QoUXVp
Y2tMb29rLCBEaWRSZXF1ZXN0UGFzc3dvcmROYXZpZ2F0aW9uRGVsZWdhdGUpCistICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCiB7Ci0gICAgTlNVUkxSZXF1ZXN0ICpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50UmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInBhc3N3b3JkLXByb3RlY3RlZCIgd2l0aEV4dGVuc2lvbjpAInBh
Z2VzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBydW5U
ZXN0KFtRdWlja0xvb2tQYXNzd29yZE5hdmlnYXRpb25EZWxlZ2F0ZSBjbGFzc10sIHBhc3N3b3Jk
UHJvdGVjdGVkRG9jdW1lbnRSZXF1ZXN0KTsKKyAgICBpc0RvbmUgPSB0cnVlOwogfQogCi0jZW5k
aWYKK0BlbmQKIAogVEVTVChRdWlja0xvb2ssIExlZ2FjeVF1aWNrTG9va0NvbnRlbnQpCiB7CkBA
IC0yMTEsMTggKzM3NywyMyBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5UXVpY2tMb29rQ29udGVu
dCkKIAogICAgIFdlYkZyYW1lICptYWluRnJhbWUgPSBbd2ViVmlldyBtYWluRnJhbWVdOwogCi0g
ICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpwYWdlc0RvY3Vt
ZW50UmVxdWVzdF07CisgICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdXTsKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7
CiAgICAgV2ViVGhyZWFkTG9jaygpOwogCisgICAgTlNVSW50ZWdlciBleHBlY3RlZEZpbGVTaXpl
OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxlTmFtZTsKKyAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IGV4cGVjdGVkRmlsZVR5cGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBl
eHBlY3RlZE1JTUVUeXBlOworICAgIHJlYWRGaWxlKHBhZ2VzRG9jdW1lbnRVUkwsIGV4cGVjdGVk
RmlsZVNpemUsIGV4cGVjdGVkRmlsZU5hbWUsIGV4cGVjdGVkRmlsZVR5cGUsIGV4cGVjdGVkTUlN
RVR5cGUpOworCiAgICAgTlNEaWN0aW9uYXJ5ICpxdWlja0xvb2tDb250ZW50ID0gbWFpbkZyYW1l
LmRhdGFTb3VyY2UuX3F1aWNrTG9va0NvbnRlbnQ7CiAgICAgTlNTdHJpbmcgKmZpbGVQYXRoID0g
cXVpY2tMb29rQ29udGVudFtXZWJRdWlja0xvb2tGaWxlTmFtZUtleV07Ci0gICAgRVhQRUNUX1RS
VUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVQ
YXRoXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRmlsZU5hbWUsIGZpbGVQYXRoLmxh
c3RQYXRoQ29tcG9uZW50KTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRVVEksIHF1aWNr
TG9va0NvbnRlbnRbV2ViUXVpY2tMb29rVVRJS2V5XSk7CisgICAgRVhQRUNUX1RSVUUoW05TRmls
ZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpmaWxlUGF0aF0pOworICAg
IEVYUEVDVF9XS19TVFJFUShleHBlY3RlZEZpbGVOYW1lLmdldCgpLCBmaWxlUGF0aC5sYXN0UGF0
aENvbXBvbmVudCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRmlsZVR5cGUuZ2V0KCks
IHF1aWNrTG9va0NvbnRlbnRbV2ViUXVpY2tMb29rVVRJS2V5XSk7CiAKLSAgICBOU0RpY3Rpb25h
cnkgKmZpbGVBdHRyaWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRy
aWJ1dGVzT2ZJdGVtQXRQYXRoOmZpbGVQYXRoIGVycm9yOm5pbF07CisgICAgTlNEaWN0aW9uYXJ5
ICpmaWxlQXR0cmlidXRlcyA9IFtOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyIGF0dHJpYnV0
ZXNPZkl0ZW1BdFBhdGg6ZmlsZVBhdGggZXJyb3I6bmlsXTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWRGaWxlU2l6ZSwgW2ZpbGVBdHRyaWJ1dGVzW05TRmlsZVNpemVdIHVuc2lnbmVkSW50ZWdlclZh
bHVlXSk7CiAKICAgICBpc0RvbmUgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366377</attachid>
            <date>2019-03-31 09:57:53 -0700</date>
            <delta_ts>2019-03-31 10:37:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196433-20190331095753.patch</filename>
            <type>text/plain</type>
            <size>65745</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjNTc3ZWI1ZDQxNDQ2NTUwZDExNDRi
YTkyMDBjOGRmODkxZWQ2ZmQuLjQyZWMwM2QzMWYxNTE0NmZiOGNmMTQwMjNlYjk2MzZiN2MxMDM4
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDMtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdCBzaG91bGQgY29uc3VsdCB0aGUgbmF2
aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVsZWdhdGUgYmVmb3JlIHByZXZpZXdpbmcgYSBRdWlj
a0xvb2sgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjQzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDkyOTMzMDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oOgorICAgICAgICAoV1RGOjpOZXZlckRlc3Ryb3llZDo6b3BlcmF0b3ItPik6CisgICAgICAg
IChXVEY6Ok5ldmVyRGVzdHJveWVkOjpvcGVyYXRvci0+IGNvbnN0KToKKwogMjAxOS0wMy0yOCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbi1maXgg
dGhlIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY0MjUwMmIzOGYzOTIzYzU2Y2I2MmU0YzgxMTYxZTg2
OGRiYzc1MC4uNGIyZWU5ZjEwOWNjN2M1YWZiOWRhMDI2MThhNWFkYTYxZjE4OGZjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTAzLTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXZWJLaXQgc2hvdWxkIGNvbnN1bHQgdGhlIG5hdmln
YXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlIGJlZm9yZSBwcmV2aWV3aW5nIGEgUXVpY2tM
b29rIGRvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTY0MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MjkzMzA1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2hlbiBSZXNvdXJjZUxvYWRlciB3
b3VsZCBlbmNvdW50ZXIgYSByZXNwb25zZSB3aXRoIGEgTUlNRSB0eXBlIHRoYXQgUXVpY2tMb29r
IHN1cHBvcnRzLCB0aGUKKyAgICAgICAgcmVzcG9uc2Ugd291bGQgYmUgaW1wbGljaXRseSBhbGxv
d2VkIGFuZCBhIFF1aWNrTG9vayBwcmV2aWV3IHdvdWxkIGJlIGdlbmVyYXRlZC4gQWZ0ZXIKKyAg
ICAgICAgZ2VuZXJhdGluZywgdGhlIGNsaWVudCdzIG5hdmlnYXRpb24gcmVzcG9uc2UgcG9saWN5
IGRlbGVnYXRlIHdvdWxkIGJlIG5vdGlmaWVkIG9mIHRoZQorICAgICAgICBwcmV2aWV3IHJlc3Bv
bnNlLCBidXQgbm90IHRoZSB1bmRlcmx5aW5nIHJlc3BvbnNlLiBOb3RhYmx5LCB0aGUgcHJldmll
dyByZXNwb25zZSBoYXMgYSBVUkwKKyAgICAgICAgc2NoZW1lIG9mICJ4LWFwcGxlLXFsLWlkIiwg
ZG9lcyBub3QgaW5jbHVkZSBhbnkgdW5kZXJseWluZyBIVFRQIGhlYWRlcnMsIGFuZCB1c3VhbGx5
IGhhcyBhCisgICAgICAgIE1JTUUgdHlwZSBvZiAidGV4dC9odG1sIiBvciAiYXBwbGljYXRpb24v
cGRmIiByYXRoZXIgdGhhbiB0aGUgdW5kZXJseWluZyByZXNwb25zZSBNSU1FIHR5cGUuCisKKyAg
ICAgICAgVG8gYWxsb3cgY2xpZW50cyB0byBtYWtlIGJldHRlciBuYXZpZ2F0aW9uIHJlc3BvbnNl
IHBvbGljeSBkZWNpc2lvbnMsIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUKKyAgICAgICAgYWJvdmUg
YmVoYXZpb3IgZm9yIFdLV2ViVmlldyBjbGllbnRzIHRoYXQgaGF2ZSBsaW5rZWQgYWdhaW5zdCBh
IHZlcnNpb24gb2YgV2ViS2l0IHRoYXQKKyAgICAgICAgaW5jbHVkZXMgdGhpcyBjaGFuZ2UuIFJh
dGhlciB0aGFuIG5vdGlmeWluZyB0aGUgY2xpZW50J3MgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xp
Y3kgZGVsZWdhdGUKKyAgICAgICAgb2YgdGhlIHByZXZpZXcgcmVzcG9uc2UsIHdlIG5vdGlmeSB0
aGUgY2xpZW50IG9mIHRoZSB1bmRlcmx5aW5nIHJlc3BvbnNlLiBPbmx5IGlmIHRoZSBjbGllbnQK
KyAgICAgICAgcmVzcG9uZHMgd2l0aCBhIHBvbGljeSBvZiAiYWxsb3ciIHdpbGwgdGhlIFF1aWNr
TG9vayBwcmV2aWV3IHJlc3BvbnNlIGJlIGxvYWRlZCAod2l0aG91dAorICAgICAgICBhbm90aGVy
IGNhbGwgdG8gdGhlIG5hdmlnYXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlKS4KKworICAg
ICAgICBOb24tV0tXZWJWaWV3IGNsaWVudHMgYW5kIGNsaWVudHMgdGhhdCBoYXZlIGxpbmtlZCBh
Z2FpbnN0IGEgdmVyc2lvbiBvZiBXZWJLaXQgdGhhdCBkb2VzIG5vdAorICAgICAgICBpbmNsdWRl
IHRoaXMgY2hhbmdlIHdpbGwgcmV0YWluIHRoZSBvcmlnaW5hbCBiZWhhdmlvci4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGxheW91dCB0ZXN0cyBhbmQgbmV3IGFuZCBleGlzdGluZyBB
UEkgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpzaG91bGRDcmVhdGVQcmV2aWV3TG9hZGVyRm9yUmVzcG9u
c2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3
TG9hZGVyIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6cmVzb3VyY2VSZXNwb25zZTpdKToKKyAgICAg
ICAgKC1bV2ViUHJldmlld0xvYWRlciBfbG9hZFByZXZpZXdJZk5lZWRlZF0pOgorICAgICAgICAo
LVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2
ZWQ6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgY29ubmVjdGlvbkRpZEZpbmlzaExv
YWRpbmc6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgY29ubmVjdGlvbjpkaWRGYWls
V2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0xvYWRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgX3NlbmREaWRSZWNlaXZlUmVzcG9uc2VJZk5lY2Vz
c2FyeV0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0xvYWRlcjo6c2hvdWxk
Q3JlYXRlRm9yTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFt
bDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2
aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKToKKwogMjAxOS0wMy0yOCAgSnVzdGluIEZh
biAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgR1BVXSBQcm90b3R5cGUg
Y29tcHV0ZSBwaXBlbGluZSB3aXRoIE1TTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MzgyMGRhZGYzMzdhZmY0NDBh
ODE2NzkxYTlhNDljNDU0MzlhZDRmLi45NDFhYzM3OThjODU4NzZmNDYwYjU2NjViYmQyMTU5NzBl
OTM2MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTAzLTMwICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXZWJLaXQgc2hvdWxkIGNvbnN1
bHQgdGhlIG5hdmlnYXRpb24gcmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlIGJlZm9yZSBwcmV2aWV3
aW5nIGEgUXVpY2tMb29rIGRvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTY0MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MjkzMzA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkZWQgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBTUEkgZm9yIHNldHRpbmcgdGhlIFF1aWNrTG9vayBuYXZpZ2F0
aW9uIHJlc3BvbnNlIHBvbGljeQorICAgICAgICBkZWNpc2lvbiBiZWhhdmlvci4gVGhlIGNvbmZp
Z3VyYXRpb24gc2V0dGluZyBkZWZhdWx0cyB0byBZRVMgZm9yIGNsaWVudHMgbGlua2VkIG9uIG9y
IGFmdGVyCisgICAgICAgIHRoaXMgV2ViS2l0IGNoYW5nZSBhbmQgTk8gb3RoZXJ3aXNlLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9y
Q1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvbnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFNoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnRE
YXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhOjppc0VtcHR5
IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgIChkZWZh
dWx0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcpOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGluaXRdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3XSk6
CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldFNob3VsZERlY2lkZVBvbGlj
eUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YUFycmF5KToKKwogMjAxOS0w
My0yOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gQXV0b21hdGljIGZvY3VzIG9mIGlucHV0IGZpZWxkIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0
cm95ZWQuaAppbmRleCBlN2U4YTdlYTAzOTg5Y2JhNDA0ZWFiYjgyNTM1MDBkNWMzZjdmNTUzLi5l
MGU0Njc3NTYxYzdiZmJkOWU1NTY4NGM1MjQ1ZGNhNWUyYjNjYjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL05ldmVyRGVz
dHJveWVkLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02MCw5ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgVCYoKSB7
IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQogICAgIFQmIGdldCgpIHsgcmV0dXJuICpzdG9y
YWdlUG9pbnRlcigpOyB9CiAKKyAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gc3RvcmFnZVBv
aW50ZXIoKTsgfQorCiAgICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IHJldHVybiAqc3Rv
cmFnZVBvaW50ZXIoKTsgfQogICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpzdG9y
YWdlUG9pbnRlcigpOyB9CiAKKyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gc3RvcmFnZVBvaW50ZXIoKTsgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIFBvaW50ZXJUeXBl
ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUqOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzlkYjM0YTRj
ZGViMWVkNDc4NjkxYzU1YzhlZDVmMjY5NGM2ZGU4ZC4uYzQwMTgwNDQyNDIwZDllMTQyMWI4NTJk
Yzg0MDJkNzYwZjMzMWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzAyMyw3ICszMDIzLDcgQEAKIAkJQTFCQjg1QjkyMTU5
QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QjUyMTU5QjM4QTAwNjdFMDdEIC8qIEpT
TW9ja1BheW1lbnRFcnJvci5oICovOyB9OwogCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyog
TW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVy
LmNwcCAqLzsgfTsKIAkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJG
NkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKLQkJQTFD
MTUwN0ExRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzE1MDc4MUUzRjJCM0UwMDMyQzk4
QyAvKiBQcmV2aWV3Q29udmVydGVyLmggKi87IH07CisJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4
QyAvKiBQcmV2aWV3Q29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUMxNTA3ODFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEx
Q0JFRjY0MUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQkVGNjMxRjlGMTEyOTAwMjhE
RTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggKi87IH07CiAJCUExQ0M1NjY3MUY0NjE0N0EwMEE0
NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2NTFGNDYxNDY4MDBBNDU1NUIgLyogSlNQYXltZW50QWRk
cmVzcy5oICovOyB9OwogCQlBMUNDNTY2OTFGNDYxNDgwMDBBNDU1NUIgLyogSlNQYXltZW50Q29t
cGxldGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
Q0M1NjRFMUY0NjE0NTIwMEE0NTU1QiAvKiBKU1BheW1lbnRDb21wbGV0ZS5oICovOyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDgzZWNkM2Mx
M2Q2MWU2OWEzNThlYjgxY2NhNmUzNjRjYzQ1MjAwOS4uMjNkZTE1NDQ5YTA1ZWMxNDkzMjkyMmNj
YmMzNzQ0M2Q0NzAzZDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjMsNiArNjMsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKKyNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyLmgiCiAjaW5jbHVkZSAiUHJldmlld0xvYWRl
ci5oIgogI2VuZGlmCiAKQEAgLTMwNCw3ICszMDUsNyBAQCBib29sIFN1YnJlc291cmNlTG9hZGVy
OjpzaG91bGRDcmVhdGVQcmV2aWV3TG9hZGVyRm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
bwogICAgIGlmIChtX3ByZXZpZXdMb2FkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHJldHVybiBQcmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShyZXNwb25zZS5t
aW1lVHlwZSgpKTsKKyAgICByZXR1cm4gUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlw
ZShyZXNwb25zZS5taW1lVHlwZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0zMTksNyArMzIwLDggQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBDb20KICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoc2hv
dWxkQ3JlYXRlUHJldmlld0xvYWRlckZvclJlc3BvbnNlKHJlc3BvbnNlKSkgewogICAgICAgICBt
X3ByZXZpZXdMb2FkZXIgPSBQcmV2aWV3TG9hZGVyOjpjcmVhdGUoKnRoaXMsIHJlc3BvbnNlKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV9wcmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvUHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2
aWV3TG9hZGVyLmgKaW5kZXggYTYzMDk3NDY2YjVmZWIzYjQzZWYyMjE0OGE0MWRmZTU2YTY1NzU2
YS4uNjE4ZTk0Mjk1MDE3ZGMzYjgzMDM2NWMxMTY3NjE1MzhiMWRiNjIzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxMCArNDEsMTAgQEAgY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUHJldmlld0xvYWRlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUHJldmlld0xvYWRlcik7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXIm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgflByZXZpZXdMb2FkZXIoKTsKIAorICAg
IGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBi
b29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wg
ZGlkRmluaXNoTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9h
ZGVyLm1tCmluZGV4IDcyNTFkNzBiMDUxNzA2ZTI2YjUwZmFlNTIyMGYzMjU2YTM2ZjUxOTUuLmY2
YjgyMjE3OTE2Y2FkOTViZmU5NjBiYjNlMzc4NGEyNzBhOWJhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCisjaW1wb3J0ICJGcmFt
ZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW1wb3J0ICJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJRdWlja0xvb2suaCIKICNpbXBvcnQgIlJlc291
cmNlTG9hZGVyLmgiCisjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCA8cGFsL3NwaS9pb3Mv
UXVpY2tMb29rU1BJLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDcs
NyArNDksNyBAQCBAaW50ZXJmYWNlIFdlYlByZXZpZXdMb2FkZXIgOiBOU09iamVjdCB7CiAgICAg
UmVmUHRyPFByZXZpZXdMb2FkZXJDbGllbnQ+IF9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFByZXZpZXdDb252ZXJ0ZXI+IF9jb252ZXJ0ZXI7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfYnVmZmVyZWREYXRhQXJyYXk7Ci0gICAgQk9PTCBfaGFzU2VudERpZFJlY2VpdmVSZXNw
b25zZTsKKyAgICBCT09MIF9oYXNMb2FkZWRQcmV2aWV3OwogICAgIEJPT0wgX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IF9idWZmZXJlZERhdGE7CiAgICAg
bG9uZyBsb25nIF9sZW5ndGhSZWNlaXZlZDsKQEAgLTU5LDYgKzYxLDggQEAgLSAodm9pZClhcHBl
bmREYXRhQXJyYXk6KE5TQXJyYXk8TlNEYXRhICo+ICopZGF0YUFycmF5OwogLSAodm9pZClmaW5p
c2hlZEFwcGVuZGluZzsKIC0gKHZvaWQpZmFpbGVkOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKKwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViUHJldmlld0xvYWRlcgpAQCAtNzcsMTQgKzgxLDE0IEBAIHN0
YXRpYyBQcmV2aWV3TG9hZGVyQ2xpZW50JiBlbXB0eUNsaWVudCgpCiAKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFJlc291cmNlTG9hZGVyOihSZXNvdXJjZUxvYWRlciYpcmVzb3VyY2VMb2FkZXIg
cmVzb3VyY2VSZXNwb25zZTooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzb3VyY2VSZXNwb25z
ZQogewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQorICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX3Jlc291
cmNlTG9hZGVyID0gbWFrZVdlYWtQdHIocmVzb3VyY2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9
IHJlc291cmNlUmVzcG9uc2U7CiAgICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJl
dmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdz
KCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIAog
ICAgIGlmICh0ZXN0aW5nQ2xpZW50KCkpCiAgICAgICAgIF9jbGllbnQgPSB0ZXN0aW5nQ2xpZW50
KCk7CkBAIC0xMTksMTUgKzEyMywxNiBAQCAtICh2b2lkKWZhaWxlZAogICAgIF9jbGllbnQtPmRp
ZEZhaWwoKTsKIH0KIAotLSAodm9pZClfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNzYXJ5
CistICh2b2lkKV9sb2FkUHJldmlld0lmTmVlZGVkCiB7CiAgICAgaWYgKCFfcmVzb3VyY2VMb2Fk
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghX3Jlc291cmNlTG9hZGVyLT5yZWFj
aGVkVGVybWluYWxTdGF0ZSgpKTsKLSAgICBpZiAoX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2Up
CisgICAgaWYgKF9oYXNMb2FkZWRQcmV2aWV3KQogICAgICAgICByZXR1cm47CiAKKyAgICBfaGFz
TG9hZGVkUHJldmlldyA9IFlFUzsKICAgICBbX2J1ZmZlcmVkRGF0YUFycmF5IHJlbW92ZUFsbE9i
amVjdHNdOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IF9jb252ZXJ0ZXItPnBy
ZXZpZXdSZXNwb25zZSgpIH07CkBAIC0xMzYsNyArMTQxLDEyIEBAIC0gKHZvaWQpX3NlbmREaWRS
ZWNlaXZlUmVzcG9uc2VJZk5lY2Vzc2FyeQogCiAgICAgX3Jlc291cmNlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUoX2NvbnZlcnRlcikpOwogCi0g
ICAgX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2UgPSBZRVM7CisgICAgaWYgKF9zaG91bGREZWNp
ZGVQb2xpY3lCZWZvcmVMb2FkaW5nKSB7CisgICAgICAgIF9oYXNQcm9jZXNzZWRSZXNwb25zZSA9
IFlFUzsKKyAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRSZXNw
b25zZShyZXNwb25zZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBfaGFzUHJvY2Vz
c2VkUmVzcG9uc2UgPSBOTzsKICAgICBfcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAg
ICAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBZRVM7CkBAIC0xNzAsOCArMTgwLDggQEAgLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVE
YXRhOihOU0RhdGEgKilkYXRhIGwKICAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25u
ZWN0aW9uKTsKICAgICBpZiAoX3Jlc291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgW3NlbGYgX3NlbmREaWRSZWNlaXZlUmVzcG9u
c2VJZk5lY2Vzc2FyeV07CisKKyAgICBbc2VsZiBfbG9hZFByZXZpZXdJZk5lZWRlZF07CiAKICAg
ICBhdXRvIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDsKIApAQCAtMjAxLDcgKzIxMSw3IEBAIC0g
KHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24KICAgICBpZiAoX3Jlc291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgQVNTRVJUKF9oYXNTZW50RGlkUmVjZWl2ZVJlc3Bv
bnNlKTsKKyAgICBBU1NFUlQoX2hhc0xvYWRlZFByZXZpZXcpOwogCiAgICAgaWYgKCFfaGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpIHsKICAgICAgICAgX25lZWRzVG9DYWxsRGlkRmluaXNoTG9hZGluZyA9
IFlFUzsKQEAgLTIyNiw3ICsyMzYsNiBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycgogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIWlzUXVpY2tMb29rUGFzc3dvcmRFcnJvcihlcnJvcikpIHsK
LSAgICAgICAgW3NlbGYgX3NlbmREaWRSZWNlaXZlUmVzcG9uc2VJZk5lY2Vzc2FyeV07CiAgICAg
ICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkRmFpbChlcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yNTYsMjggKzI2NSwxNSBAQCBQcmV2aWV3TG9hZGVyOjp+UHJldmlld0xvYWRlcigp
CiB7CiB9CiAKLWJvb2wgUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBQcmV2
aWV3TG9hZGVyOjpjcmVhdGUoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZE1J
TUVUeXBlczsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBmb3Ig
KE5TU3RyaW5nICptaW1lVHlwZSBpbiBRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQo
KSkKLSAgICAgICAgICAgIHN1cHBvcnRlZE1JTUVUeXBlcy5nZXQoKS5hZGQobWltZVR5cGUpOwot
ICAgIH0pOwotCi0gICAgaWYgKG1pbWVUeXBlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gc3VwcG9ydGVkTUlNRVR5cGVzLmdldCgpLmNvbnRhaW5zKG1pbWVU
eXBlKTsKKyAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNw
b25zZS5taW1lVHlwZSgpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0xv
YWRlcj4obG9hZGVyLCByZXNwb25zZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9h
ZGVyPiBQcmV2aWV3TG9hZGVyOjpjcmVhdGUoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitib29sIFByZXZpZXdMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKLSAgICBBU1NFUlQoc2hvdWxk
Q3JlYXRlRm9yTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFByZXZpZXdMb2FkZXI+KGxvYWRlciwgcmVzcG9uc2UpOworICAgIHJldHVy
biAhW21fcHJldmlld0xvYWRlciBzaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nXTsKIH0K
IAogYm9vbCBQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggZDdkNTI4Mzcx
NzU2YmZkYzFlMDU4YjJiYzU2ZjAwN2Q2MzU1NDI4My4uNzIwNWQxZmQzODMwOWI3NmUyYjQ1NGIw
YjEwMjM2ZWUwNWUwYzliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtODIzLDYg
KzgyMyw5IEBAIGFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ6CiBibG9ja2luZ09mU21hbGxQbHVn
aW5zRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogCitzaG91bGREZWNpZGVQb2xpY3lCZWZvcmVM
b2FkaW5nUXVpY2tMb29rUHJldmlldzoKKyAgaW5pdGlhbDogZmFsc2UKKwogIyBEZXByZWNhdGVk
CiAKIGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IGY5ZWFiYjVmYjkwZjI5NDNiNDg4YTg4NjVm
ZTc1MmE0YzE0OGJiYzMuLjZjYWUxNGFhNGJjZmNkYTUwNTNkOGU2NzhhNDkwNGIwNzdkODM4YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTMsNiArNTMsMTAgQEAKICNpbmNsdWRlICJJbWFn
ZURlY29kZXJBVkZPYmpDLmgiCiAjZW5kaWYKIAorI2lmIFVTRShRVUlDS19MT09LKQorI2luY2x1
ZGUgIlByZXZpZXdDb252ZXJ0ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlw
ZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCkBAIC02NDMsNiArNjQ3LDExIEBA
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgaWYgKGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8
fCBpc1N1cHBvcnRlZEpTT05NSU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgaWYgKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBv
cnRzTUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAg
ICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0
LyIpKQogICAgICAgICByZXR1cm4gIWlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUobWltZVR5cGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2
aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2
aWV3Q29udmVydGVyLmgKaW5kZXggMDFjN2QyNTU5NjM2MWU5ZGFhZjYxY2EyNTBjMmJmYjcxMTFk
MjlmNS4uNWEwNmYyZWY4OWVmNWMyMWJlMTU3YzcxZGExNDE5ZWM4NDgwOWVmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0
ZXIuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAgICAgUHJldmlld0NvbnZlcnRlcihpZCBk
ZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQg
PSB7IH0pOwogICAgIFByZXZpZXdDb252ZXJ0ZXIoTlNEYXRhICosIGNvbnN0IFN0cmluZyYgdXRp
LCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkID0geyB9KTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKICAg
ICBRTFByZXZpZXdDb252ZXJ0ZXIgKnBsYXRmb3JtQ29udmVydGVyKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybUNvbnZlcnRlci5nZXQoKTsgfQogICAgIFJlc291cmNlUmVxdWVzdCBzYWZlUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cHJldmlld1JlcXVlc3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLm1tCmluZGV4IDQ4MmFhYWI3NTg5ZGUx
M2RhOGVlNTcwNjc3OTA3NjE0Nzc1MmJhN2MuLmI1Y2QyODM1NmYyNjlmOWQ2MTYzMTM3ZDUxYTNh
NGMyODhiYjQ5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1ByZXZpZXdDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKIAorI2ltcG9ydCAiUXVpY2tMb29rLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbXBvcnQgPHBhbC9pb3MvUXVp
Y2tMb29rU29mdExpbmsuaD4KQEAgLTUzLDYgKzU0LDI0IEBAIFByZXZpZXdDb252ZXJ0ZXI6OlBy
ZXZpZXdDb252ZXJ0ZXIoTlNEYXRhICpkYXRhLCBjb25zdCBTdHJpbmcmIHV0aSwgY29uc3QgU3Ry
aW5nCiB7CiB9CiAKK2Jvb2wgUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidGV4dC9wbGFpbiIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRN
SU1FVHlwZXM7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgZm9y
IChOU1N0cmluZyAqbWltZVR5cGUgaW4gUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0
KCkpCisgICAgICAgICAgICBzdXBwb3J0ZWRNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7CisgICAg
fSk7CisKKyAgICBpZiAobWltZVR5cGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBzdXBwb3J0ZWRNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKK30K
KwogUmVzb3VyY2VSZXF1ZXN0IFByZXZpZXdDb252ZXJ0ZXI6OnNhZmVSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICByZXR1cm4gW21fcGxhdGZvcm1D
b252ZXJ0ZXIgc2FmZVJlcXVlc3RGb3JSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
Y2ZhOTliMTc1ZjM1MzlhZDM2NGZlYjkxNDljNzc5Yzk1ZmJmYmQxZS4uZjhlNDY0MjM5Nzk5Y2U2
NDY2NWEwYWY3ZTFiYzZmM2VhYTI0ZWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTUsNyArNTUsNyBA
QAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSNpbmNs
dWRlIDxXZWJDb3JlL1ByZXZpZXdMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdD
b252ZXJ0ZXIuaD4KICNlbmRpZgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3Jr
LCAiJXAgLSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19f
KQpAQCAtMzg2LDcgKzM4Niw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAgICAgQVNTRVJU
KGlzTWFpblJlc291cmNlKCkpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgaWYgKFByZXZp
ZXdMb2FkZXI6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKQor
ICAgIGlmIChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVU
eXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggNjA5ZDMxZjJmYTAxNWU0ZGJkZGFjYzNiNTRk
NWIzMjM2NGE3OGVmMC4uMzIwMjE1ZGRkZjdmNzQ5NjZkZDA4NmFhNzNjZDY4NzcyMzViOGQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMTkyLDYgKzEx
OTIsMTAgQEAgRWRpdGFibGVJbWFnZXNFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRW
YWx1ZTogZmFsc2UKIAorU2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1By
ZXZpZXc6CisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgdHlwZTogYm9vbAorCiAjIEZvciBleHBl
cmltZW50YWwgZmVhdHVyZXM6CiAjIFRoZSB0eXBlIHNob3VsZCBiZSBib29sZWFuLgogIyBZb3Ug
bXVzdCBwcm92aWRlIGEgaHVtYW5SZWFkYWJsZU5hbWUgYW5kIGh1bWFuUmVhZGFibGVEZXNjcmlw
dGlvbiBmb3IgYWxsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4gVGhleQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcAppbmRleCAwZjg1OTE5
YjA0NjNhM2RlY2ZkZDI4ZjUzY2ZmNTlkNzAyZmVlOGZjLi44YmJkYTU5NzUxNWY0NmI2ZWNkNTA0
ODBkNmU0OTg4MGMxODRkYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
UXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
UXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcApAQCAtNDYsNiArNDYsMTEgQEAgQ0ZEYXRhUmVmIFF1
aWNrTG9va0RvY3VtZW50RGF0YTo6ZGVjb2RlZERhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2Rh
dGFbMF0uZ2V0KCk7CiB9CiAKK2Jvb2wgUXVpY2tMb29rRG9jdW1lbnREYXRhOjppc0VtcHR5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhLmlzRW1wdHkoKTsKK30KKwogdm9pZCBRdWlja0xv
b2tEb2N1bWVudERhdGE6OmNsZWFyKCkKIHsKICAgICBtX2RhdGEuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaAppbmRleCAxZjI1
NWI1Zjg2ZTU1MTdjZmFlZWFhZmUwMzUxYWVhNmFhMjAwZmVhLi43MDE2ZjQxNzAyZTZjMzU4MTIx
ZDBlMzFlNTQ3M2FkZjlhOTdmMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L1F1aWNrTG9va0RvY3VtZW50RGF0YS5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFF1aWNrTG9v
a0RvY3VtZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKICAg
ICBDRkRhdGFSZWYgZGVjb2RlZERhdGEoKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29u
c3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFF1aWNrTG9va0RvY3Vt
ZW50RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KaW5kZXggZWM2Y2M3ZmVjYzE4YzMzZWYwY2Y1MGZlNTRkMGM4NDFiZWYxNjdlMC4uZDhl
OTQzNmY5MTUwMWIzOWU4ZTgzZmNhZTQ1NWQwMTBiZGFjMmRkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC02MjYsNiArNjI2LDcgQEAg
LSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0
aW9uICopY29uZmlndXJhdGlvbgogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnVzZXJJbnRlcmZhY2VEaXJlY3Rp
b25Qb2xpY3lLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeTo6Q29u
dGVudCkpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1MYXlvdXREaXJlY3Rpb25LZXkoKSwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2Vi
Q29yZTo6VGV4dERpcmVjdGlvbjo6TFRSKSkpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVm
ZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93U2V0dGlu
Z0FueVhIUkhlYWRlckZyb21GaWxlVVJMc0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKHNob3VsZEFsbG93U2V0dGluZ0FueVhIUkhlYWRlckZyb21GaWxlVVJMcygpKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9v
a1ByZXZpZXdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29u
ZmlndXJhdGlvbiBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXddKSk7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbVBy
ZXZpZXdFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX3N5c3RlbVByZXZpZXdFbmFibGVkXSkpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCmluZGV4IDc3YjE5ZGQ4NmRhNTU2MTUyYmE3ZDY0OWNiNjMxZTE0YmQ3ZGUx
YmYuLmQ2MDJhYWY0ZjIwMTQ5MjUzNThkZTU1YjNjNTcxMGVjZjk5OTk5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCkBAIC05OSw2ICs5OSwxNiBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0
b0RyYWdMaWZ0RGVsYXkoTlNVSW50ZWdlciB2YWx1ZSkKICAgICByZXR1cm4gX1dLRHJhZ0xpZnRE
ZWxheVNob3J0OwogfQogCitzdGF0aWMgYm9vbCBkZWZhdWx0U2hvdWxkRGVjaWRlUG9saWN5QmVm
b3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKQoreworI2lmIFVTRShRVUlDS19MT09LKQorICAg
IHN0YXRpYyBib29sIHNob3VsZERlY2lkZSA9IGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1Zl
cnNpb246OkZpcnN0VGhhdERlY2lkZXNQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmll
dyk7CisgICAgcmV0dXJuIHNob3VsZERlY2lkZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCit9CisKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiB7CkBAIC0xMjksNiArMTM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gewogICAgIEJPT0wgX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZDsKICAg
ICBCT09MIF9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZDsKICAgICBCT09MIF9zeXN0ZW1QcmV2aWV3
RW5hYmxlZDsKKyAgICBCT09MIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tM
b29rUHJldmlldzsKICNlbmRpZgogCiAgICAgQk9PTCBfaW52aXNpYmxlQXV0b3BsYXlOb3RQZXJt
aXR0ZWQ7CkBAIC0yMzYsNiArMjQ3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICBfbG9u
Z1ByZXNzQWN0aW9uc0VuYWJsZWQgPSBZRVM7CiAjZW5kaWYKICAgICBfc3lzdGVtUHJldmlld0Vu
YWJsZWQgPSBOTzsKKyAgICBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9v
a1ByZXZpZXcgPSBkZWZhdWx0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9v
a1ByZXZpZXcoKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAgICAgX21lZGlh
Q29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gV2ViQ29yZTo6U2V0dGluZ3M6
OmRlZmF1bHRNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpOwpAQCAt
MjkxLDYgKzMwMyw3IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIK
ICAgICBbY29kZXIgZW5jb2RlQm9vbDpzZWxmLl90ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJs
ZWQgZm9yS2V5OkAidGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkIl07CiAgICAgW2NvZGVy
IGVuY29kZUJvb2w6c2VsZi5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQgZm9yS2V5OkAibG9uZ1By
ZXNzQWN0aW9uc0VuYWJsZWQiXTsKICAgICBbY29kZXIgZW5jb2RlQm9vbDpzZWxmLl9zeXN0ZW1Q
cmV2aWV3RW5hYmxlZCBmb3JLZXk6QCJzeXN0ZW1QcmV2aWV3RW5hYmxlZCJdOworICAgIFtjb2Rl
ciBlbmNvZGVCb29sOnNlbGYuX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3IGZvcktleTpAInNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3Il07CiAjZWxzZQogICAgIFtjb2RlciBlbmNvZGVJbnRlZ2VyOnNlbGYudXNlcklu
dGVyZmFjZURpcmVjdGlvblBvbGljeSBmb3JLZXk6QCJ1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9s
aWN5Il07CiAjZW5kaWYKQEAgLTMyNSw2ICszMzgsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgc2VsZi5fdGV4dEludGVyYWN0aW9uR2VzdHVy
ZXNFbmFibGVkID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJ0ZXh0SW50ZXJhY3Rpb25HZXN0
dXJlc0VuYWJsZWQiXTsKICAgICBzZWxmLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCA9IFtjb2Rl
ciBkZWNvZGVCb29sRm9yS2V5OkAibG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQiXTsKICAgICBzZWxm
Ll9zeXN0ZW1QcmV2aWV3RW5hYmxlZCA9IFtjb2RlciBkZWNvZGVCb29sRm9yS2V5OkAic3lzdGVt
UHJldmlld0VuYWJsZWQiXTsKKyAgICBzZWxmLl9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldyA9IFtjb2RlciBkZWNvZGVCb29sRm9yS2V5OkAic2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXciXTsKICNlbHNlCiAgICAgYXV0
byB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5Q2FuZGlkYXRlID0gc3RhdGljX2Nhc3Q8V0tV
c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5PihbY29kZXIgZGVjb2RlSW50ZWdlckZvcktleTpA
InVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kiXSk7CiAgICAgaWYgKHVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3lDYW5kaWRhdGUgPT0gV0tVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5
Q29udGVudCB8fCB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5Q2FuZGlkYXRlID09IFdLVXNl
ckludGVyZmFjZURpcmVjdGlvblBvbGljeVN5c3RlbSkKQEAgLTM4MSw2ICszOTUsNyBAQCAtIChp
ZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLT5fdGV4dElu
dGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkID0gc2VsZi0+X3RleHRJbnRlcmFjdGlvbkdlc3R1cmVz
RW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQgPSBz
ZWxmLT5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X3N5c3Rl
bVByZXZpZXdFbmFibGVkID0gc2VsZi0+X3N5c3RlbVByZXZpZXdFbmFibGVkOworICAgIGNvbmZp
Z3VyYXRpb24tPl9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmll
dyA9IHNlbGYtPl9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmll
dzsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb25maWd1cmF0aW9uLT5fdXNlcklu
dGVyZmFjZURpcmVjdGlvblBvbGljeSA9IHNlbGYtPl91c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9s
aWN5OwpAQCAtNzMyLDYgKzc0NywxNiBAQCAtICh2b2lkKV9zZXRTeXN0ZW1QcmV2aWV3RW5hYmxl
ZDooQk9PTCllbmFibGVkCiAgICAgX3N5c3RlbVByZXZpZXdFbmFibGVkID0gZW5hYmxlZDsKIH0K
IAorLSAoQk9PTClfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXcKK3sKKyAgICByZXR1cm4gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3OworfQorCistICh2b2lkKV9zZXRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldzooQk9PTClzaG91bGREZWNpZGUKK3sKKyAgICBfc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcgPSBzaG91bGREZWNpZGU7Cit9
CisKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChCT09MKV9pbnZpc2libGVB
dXRvcGxheU5vdFBlcm1pdHRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAppbmRl
eCA4YzE2ZTM5ODBkZDNhYWZkNmJlNzU4MGEyNzI5MTZlMWE1ODBiNWEzLi43ODAyN2ZkOWYwNzIx
ZGZlMTQyNzdmMTE0MTMwNjcwZDE0NWMzNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaApAQCAtODIsNiArODIsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dL
RHJhZ0xpZnREZWxheSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VGV4dElu
dGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkOikgQk9PTCBfdGV4dEludGVyYWN0aW9uR2VzdHVyZXNF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEyLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldExvbmdQcmVzc0FjdGlvbnNFbmFibGVkOikgQk9PTCBfbG9uZ1ByZXNzQWN0
aW9uc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0U3lzdGVtUHJldmlld0VuYWJsZWQ6KSBCT09MIF9zeXN0ZW1QcmV2
aWV3RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKGlvcygxMi4wKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlldzopIEJPT0wgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQ
cmV2aWV3IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKICNlbHNlCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaG93c1VSTHNJblRvb2xUaXBzOikgQk9PTCBfc2hv
d3NVUkxzSW5Ub29sVGlwcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlQ29udHJvbHNFbmFibGVkOikgQk9PTCBf
c2VydmljZUNvbnRyb2xzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKaW5kZXggM2Iz
NTBiZTAwYjM5OGRkOWVmNGVhYzE4YTE1Mzc0OWE0YmUzNWUxMC4uZjRkNDI4MWFlNTNiMTFiNTc5
ZmI0NGJiNzU3MTdhNjI0YTVlOWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZlcnNpb25DaGVja3MuaApAQCAtMzQsNiArMzQsNyBAQAogI2RlZmluZSBEWUxEX0lPU19W
RVJTSU9OX0ZJUlNUX1dJVEhfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJVEVfTkFWSUdBVElPTiAw
CiAjZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fRklSU1RfV0lUSF9TTkFQU0hPVF9BRlRFUl9TQ1JF
RU5fVVBEQVRFUyAwCiAjZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fRklSU1RfV0hFUkVfRE9XTkxP
QURfQVRUUklCVVRFX0RPRVNfTk9UX09WRVJSSURFX05BVklHQVRJT05fREVMRUdBVEUgMAorI2Rl
ZmluZSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNUX1RIQVRfREVDSURFU19QT0xJQ1lfQkVGT1JFX0xP
QURJTkdfUVVJQ0tfTE9PS19QUkVWSUVXIDAKICNkZWZpbmUgRFlMRF9NQUNPU19WRVJTSU9OX0ZJ
UlNUX1dJVEhfU05BUFNIT1RfQUZURVJfU0NSRUVOX1VQREFURVMgMAogI2RlZmluZSBEWUxEX01B
Q09TX1ZFUlNJT05fRklSU1RfV0hFUkVfRE9XTkxPQURfQVRUUklCVVRFX0RPRVNfTk9UX09WRVJS
SURFX05BVklHQVRJT05fREVMRUdBVEUgMAogI2VuZGlmCkBAIC02MSw2ICs2Miw3IEBAIGVudW0g
Y2xhc3MgU0RLVmVyc2lvbiA6IHVpbnQzMl90IHsKICAgICBGaXJzdFdpdGhTbmFwc2hvdEFmdGVy
U2NyZWVuVXBkYXRlcyA9IERZTERfSU9TX1ZFUlNJT05fRklSU1RfV0lUSF9TTkFQU0hPVF9BRlRF
Ul9TQ1JFRU5fVVBEQVRFUywKICAgICBGaXJzdFdoZXJlRG93bmxvYWRBdHRyaWJ1dGVEb2VzTm90
T3ZlcnJpZGVOYXZpZ2F0aW9uRGVsZWdhdGUgPSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNUX1dIRVJF
X0RPV05MT0FEX0FUVFJJQlVURV9ET0VTX05PVF9PVkVSUklERV9OQVZJR0FUSU9OX0RFTEVHQVRF
LAogICAgIEZpcnN0V2l0aERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkFQSSA9
IERZTERfSU9TX1ZFUlNJT05fRklSU1RfV0lUSF9ERVZJQ0VfT1JJRU5UQVRJT05fQU5EX01PVElP
Tl9QRVJNSVNTSU9OX0FQSSwKKyAgICBGaXJzdFRoYXREZWNpZGVzUG9saWN5QmVmb3JlTG9hZGlu
Z1F1aWNrTG9va1ByZXZpZXcgPSBEWUxEX0lPU19WRVJTSU9OX0ZJUlNUX1RIQVRfREVDSURFU19Q
T0xJQ1lfQkVGT1JFX0xPQURJTkdfUVVJQ0tfTE9PS19QUkVWSUVXLAogI2VsaWYgUExBVEZPUk0o
TUFDKQogICAgIEZpcnN0V2l0aE5ldHdvcmtDYWNoZSA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBf
MTEsCiAgICAgRmlyc3RXaXRoRXhjZXB0aW9uc0ZvckR1cGxpY2F0ZUNvbXBsZXRpb25IYW5kbGVy
Q2FsbHMgPSBEWUxEX01BQ09TWF9WRVJTSU9OXzEwXzEzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYjJhOTI0MThjZWQ4NjZmZTkzM2Q1ODljZWFlOGRk
NmUwMzhhN2FkMy4uZTFlOTNhNmRlMzQ2N2VmMTQwOTQ1MzQ2ZDhkYjRmZGQyNzM4NjcwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00OSw3ICs0OSw2
IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBt
X3BhZ2VJRCB7IHBhZ2VJRCB9CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKG1fZmlsZU5hbWUsIG1fdXRpKSwgbV9wYWdlSUQpOwogfQogCiBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpCkBAIC01OSw2ICs1OCw5IEBA
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkKIAogdm9p
ZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYg
ZGF0YUFycmF5KQogeworICAgIGlmIChtX2RhdGEuaXNFbXB0eSgpKQorICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91dGkpLCBtX3Bh
Z2VJRCk7CisKICAgICBDRkFycmF5QXBwbHlGdW5jdGlvbihkYXRhQXJyYXksIENGUmFuZ2VNYWtl
KDAsIENGQXJyYXlHZXRDb3VudChkYXRhQXJyYXkpKSwgW10oY29uc3Qgdm9pZCogdmFsdWUsIHZv
aWQqIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKENGR2V0VHlwZUlEKHZhbHVlKSA9PSBDRkRh
dGFHZXRUeXBlSUQoKSk7CiAgICAgICAgIHN0YXRpY19jYXN0PFF1aWNrTG9va0RvY3VtZW50RGF0
YSo+KGNvbnRleHQpLT5hcHBlbmQoKENGRGF0YVJlZil2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGU2OWYyOGJkZmY3YTkwOGZlMTMz
MzE0ZmJjNzM0NDVhZmM3YmVlMi4uZjdhNzM4ZWM3ODA3NDkyMGQxYWQ3ZWVlYTA1YWZhMDcwNjc1
MGUwOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUzIEBACisyMDE5LTAzLTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBbaU9TXSBXZWJLaXQgc2hvdWxkIGNvbnN1bHQgdGhlIG5hdmlnYXRpb24g
cmVzcG9uc2UgcG9saWN5IGRlbGVnYXRlIGJlZm9yZSBwcmV2aWV3aW5nIGEgUXVpY2tMb29rIGRv
Y3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTY0MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MjkzMzA1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgRW5oYW5jZWQgQVBJIHRlc3QgY292ZXJhZ2Ug
dG8gaW5jbHVkZSBhbGwgbmF2aWdhdGlvbiByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25zIGluIGJv
dGgKKyAgICAgICAgbGlua2VkLWJlZm9yZSBhbmQgbGlua2VkLW9uLW9yLWFmdGVyIG1vZGVzLiBB
bHNvIGFkZGVkIG5ldyBleHBlY3RhdGlvbnMgZm9yIGFsbCB0ZXN0cy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0NvbnZlcnRlci5j
cHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1By
ZXZpZXdMb2FkZXIuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06CisgICAgICAg
IChyZWFkRmlsZSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnJlc3BvbnNlUG9saWN5Ol0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0
ZSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwcmV2aWV3TUlNRVR5cGU6cmVzcG9uc2VQb2xpY3k6
XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bUXVpY2tM
b29rRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRl
IF93ZWJWaWV3OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOl0p
OgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBf
d2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdh
dGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF9k
b3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVn
YXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlRGF0YTpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVs
ZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfZG93bmxv
YWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIF9kb3dubG9hZDpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBfZG93bmxv
YWREaWRDYW5jZWw6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIHZlcmlmeURvd25s
b2FkXSk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHJ1blRlc3REZWNpZGVCZWZvcmVM
b2FkaW5nKToKKyAgICAgICAgKHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcpOgorICAgICAgICAo
VEVTVCk6CisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlIF93ZWJWaWV3RGlkUmVxdWVzdFBhc3N3b3JkRm9y
UXVpY2tMb29rRG9jdW1lbnQ6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0ZyYW1lTG9hZERlbGVn
YXRlIHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtRdWlja0xv
b2tOYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1F1aWNrTG9va05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tM
b29rTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tBc3luY05hdmlnYXRpb25EZWxlZ2F0ZSBfd2Vi
VmlldzpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVO
YW1lOnV0aTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9u
RGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRl
bGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bUXVpY2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtRdWlja0xvb2tEZWNpZGVQb2xpY3lEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb246d2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtRdWlja0xvb2tE
ZWNpZGVQb2xpY3lEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bUXVpY2tMb29rUGFzc3dvcmROYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZp
ZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDpdKTogRGVsZXRlZC4KKwog
MjAxOS0wMy0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dQRV1bR1RLXSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaCBj
YW4gcmV0dXJuIE5VTEwgd2l0aG91dCBzZXR0aW5nIGVycm9yCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDM4MTg1OTM4YmU4MmU0NTU4MzZlMmM0OGMyY2JmYjY4M2M1MDk1NDAuLjBmOTNjMjY1
OWU3ZjQwNThhZjVlNTc3YjFmNjg2MjZhOTEwZTE1N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03MTYsNyArNzE2LDcgQEAKIAkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9w
ZW5QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExODBDMEY5MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi87IH07CiAJCUEx
QzRGQjczMUJBQ0QxQ0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQy
RDAgLyogcGFnZXMucGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBB
bHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2
YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovOyB9OwotCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUg
LyogUHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAg
Ki87IH07CisJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVydGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUMxMTg3
MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3Q29udmVydGVyLmNwcCAqLzsgfTsKIAkJQTMxMDgy
NzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZp
bGVTeXN0ZW0uY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFG
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovOyB9OwogCQlB
NTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjIxRjMzOEMzNjAwQTk3
QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKQEAgLTE5ODcsNyArMTk4Nyw3IEBACiAJ
CUExQzRGQjZDMUJBQ0NFNTAwMDM3NDJEMCAvKiBRdWlja0xvb2subW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWlja0xvb2subW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUg
PSBwYWdlcy5wYWdlczsgcGF0aCA9IGlvcy9wYWdlcy5wYWdlczsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQcmV2aWV3TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTFFQzExODcxRjQyNTQxMjAwRDAxNDZFIC8qIFByZXZpZXdDb252ZXJ0ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJldmlld0NvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExRkRGRDJFMTlDMjg4QkIwMDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJ
bWFnZUNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1h
Z2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwODUsNyArMzA4NSw3IEBACiAJCUExRUMxMTg1MUY0MjUz
RDkwMEQwMTQ2RSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAq
LywKKwkJCQlBMUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0NvbnZlcnRlci5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC00MjczLDcgKzQyNzMsNyBAQAogCQkJCTdDMUFGNzk1MUU4RENCQUIwMDI2NDVCOSAvKiBQcmVw
YXJlRm9yTW92ZVRvV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEIxQTQxMUFF
NjAwNDQ3QzRDIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YyQzFBNDExQjEwMDA0NDdDNEMgLyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVz
aXppbmcubW0gaW4gU291cmNlcyAqLywKLQkJCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyog
UHJldmlld0xvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUVDMTE4ODFGNDI1NDEyMDBE
MDE0NkUgLyogUHJldmlld0NvbnZlcnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0Yw
QzFBNDExQUU2MDA0NDdDNEMgLyogUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDY0N0IxMjYxRUJBM0I4NTAwNDFEN0VGIC8q
IFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4ODJGMDMyMTAx
MEMwRDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3
Q29udmVydGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGM1Y2ViYjYwYTNkOTI5NzVlY2QyOTBhNjcwNDAz
ZWUxYjdlMzBiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2lvcy9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBVU0UoUVVJQ0tfTE9PSykKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0NvbnZlcnRl
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFF1aWNrTG9vaywg
U3VwcG9ydHNNSU1FVHlwZSkKK3sKKyAgICAvLyBGSVhNRTogRXhwYW5kIHRoaXMgdG8gY292ZXIg
YWxsIHRoZSBNSU1FIHR5cGVzIHdlIGV4cGVjdCB0byBzdXBwb3J0LgorICAgIEVYUEVDVF9GQUxT
RShQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKFN0cmluZygpKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUoZW1wdHlTdHJpbmco
KSkpOworICAgIEVYUEVDVF9GQUxTRShQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBl
KCJ0ZXh0L2h0bWwiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoUHJldmlld0NvbnZlcnRlcjo6c3Vw
cG9ydHNNSU1FVHlwZSgidGV4dC9wbGFpbiJfcykpOworICAgIEVYUEVDVF9UUlVFKFByZXZpZXdD
b252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUoImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVl
dC5tYWNyb0VuYWJsZWQuMTIiX3MpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFFVSUNLX0xPT0spCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdM
b2FkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2lvcy9QcmV2aWV3
TG9hZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYxZWFkZDhjODYwZGY5
YjgwMDNiOGQyZDYzMmIyYTZkYWIwYTE5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1By
ZXZpZXdMb2FkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFVT
RShRVUlDS19MT09LKQotCi0jaW5jbHVkZSA8V2ViQ29yZS9QcmV2aWV3TG9hZGVyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1QoUXVpY2tMb29rLCBTaG91bGRDcmVh
dGVGb3JNSU1FVHlwZSkKLXsKLSAgICAvLyBGSVhNRTogRXhwYW5kIHRoaXMgdG8gY292ZXIgYWxs
IHRoZSBNSU1FIHR5cGVzIHdlIGV4cGVjdCB0byBzdXBwb3J0LgotICAgIEVYUEVDVF9GQUxTRShQ
cmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShTdHJpbmcoKSkpOwotICAgIEVY
UEVDVF9GQUxTRShQcmV2aWV3TG9hZGVyOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShlbXB0eVN0
cmluZygpKSk7Ci0gICAgRVhQRUNUX1RSVUUoUHJldmlld0xvYWRlcjo6c2hvdWxkQ3JlYXRlRm9y
TUlNRVR5cGUoImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQuMTIi
X3MpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4IDkzZDA3ZmE5YWE1
NjBlNmQyZjUxMTZkMTRiMDMyNmUwOTVmNWRkYmIuLmM0NzdkZjNlYmY0MzAwN2M2M2Q2YTY0MGU0
NjI4Mjc5MGYxNjk5ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNDIgKzI5LDEwNyBAQAogCiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8Q29yZVNlcnZp
Y2VzL0NvcmVTZXJ2aWNlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlLaXRTdXBwb3J0Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3du
bG9hZC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKIHN0
YXRpYyBib29sIGlzRG9uZTsKLXN0YXRpYyBib29sIGRpZFN0YXJ0UXVpY2tMb29rTG9hZDsKLXN0
YXRpYyBib29sIGRpZEZpbmlzaFF1aWNrTG9va0xvYWQ7CitzdGF0aWMgYm9vbCBkb3dubG9hZElz
RG9uZTsKIAotc3RhdGljIGNvbnN0IE5TVUludGVnZXIgZXhwZWN0ZWRGaWxlU2l6ZSA9IDI3NDE0
MzsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGV4cGVjdGVkRmlsZU5hbWUgPSBAInBhZ2VzLnBh
Z2VzIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGV4cGVjdGVkVVRJID0gQCJjb20uYXBwbGUu
aXdvcmsucGFnZXMuc2ZmcGFnZXMiOwotc3RhdGljIE5TVVJMUmVxdWVzdCAqIGNvbnN0IHBhZ2Vz
RG9jdW1lbnRSZXF1ZXN0ID0gW1tOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9uOkAicGFn
ZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIHJldGFpbl07Citz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlID0gQCJh
cHBsaWNhdGlvbi9wZGYiOworc3RhdGljIE5TVVJMICogY29uc3QgcGFnZXNEb2N1bWVudFVSTCA9
IFtbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5z
aW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl0gcmV0
YWluXTsKKworQGludGVyZmFjZSBRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGUsIF9XS0Rvd25sb2FkRGVsZWdhdGU+CistIChpbnN0YW5jZXR5
cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVk
RmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHJlc3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeSlyZXNwb25zZVBvbGljeTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVj
dGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHByZXZpZXdNSU1FVHlwZTooTlNTdHJpbmcgKilt
aW1lVHlwZSByZXNwb25zZVBvbGljeTooV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpcmVzcG9u
c2VQb2xpY3k7CistICh2b2lkKXZlcmlmeURvd25sb2FkOworCitAcHJvcGVydHkgKG5vbmF0b21p
YykgQk9PTCBkaWRTdGFydFF1aWNrTG9va0xvYWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBkaWRGaW5pc2hRdWlja0xvb2tMb2FkOwogCi1AaW50ZXJmYWNlIFF1aWNrTG9va05hdmlnYXRp
b25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+CiBAZW5k
CiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUKK0BpbXBsZW1l
bnRhdGlvbiBRdWlja0xvb2tEZWxlZ2F0ZSB7CitAcHJvdGVjdGVkCisgICAgTlNVSW50ZWdlciBf
ZG93bmxvYWRGaWxlU2l6ZTsKKyAgICBOU1VJbnRlZ2VyIF9leHBlY3RlZEZpbGVTaXplOworICAg
IFJldGFpblB0cjxOU1N0cmluZz4gX2V4cGVjdGVkRmlsZU5hbWU7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBfZXhwZWN0ZWRGaWxlVHlwZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9leHBl
Y3RlZE1JTUVUeXBlOworICAgIFJldGFpblB0cjxOU1VSTD4gX2Rvd25sb2FkRGVzdGluYXRpb25V
Ukw7CisgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX3Jlc3BvbnNlUG9saWN5OworfQor
CitzdGF0aWMgdm9pZCByZWFkRmlsZShOU1VSTCAqZmlsZVVSTCwgTlNVSW50ZWdlciYgZmlsZVNp
emUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZpbGVOYW1lLCBSZXRhaW5QdHI8TlNTdHJpbmc+JiBm
aWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5nPiYgbWltZVR5cGUpCit7CisgICAgaWYgKE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyIGF0dHJp
YnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVVSTC5wYXRoIGVycm9yOm5pbF0pCisgICAgICAgIGZpbGVT
aXplID0gW2F0dHJpYnV0ZXNbTlNGaWxlU2l6ZV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworCisg
ICAgZmlsZU5hbWUgPSBmaWxlVVJMLmxhc3RQYXRoQ29tcG9uZW50OworCisgICAgTlNTdHJpbmcg
KnR5cGVJZGVudGlmaWVyID0gbmlsOworICAgIGlmIChbZmlsZVVSTCBnZXRSZXNvdXJjZVZhbHVl
OiZ0eXBlSWRlbnRpZmllciBmb3JLZXk6TlNVUkxUeXBlSWRlbnRpZmllcktleSBlcnJvcjpuaWxd
KQorICAgICAgICBmaWxlVHlwZSA9IHR5cGVJZGVudGlmaWVyOworCisgICAgbWltZVR5cGUgPSBh
ZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3MoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXR5cGVJZGVudGlmaWVyLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Cit9CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHJlc3BvbnNl
UG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSlyZXNwb25zZVBvbGljeQoreworICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmVhZEZpbGUoZmlsZVVSTCwgX2V4cGVjdGVkRmlsZVNpemUsIF9leHBlY3RlZEZpbGVOYW1lLCBf
ZXhwZWN0ZWRGaWxlVHlwZSwgX2V4cGVjdGVkTUlNRVR5cGUpOworCisgICAgX3Jlc3BvbnNlUG9s
aWN5ID0gcmVzcG9uc2VQb2xpY3k7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxlVVJMIHByZXZpZXdNSU1F
VHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSByZXNwb25zZVBvbGljeTooV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3kpcmVzcG9uc2VQb2xpY3kKK3sKKyAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5p
dFdpdGhFeHBlY3RlZEZpbGVVUkw6ZmlsZVVSTCByZXNwb25zZVBvbGljeTpyZXNwb25zZVBvbGlj
eV0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIF9leHBlY3RlZE1JTUVUeXBlID0g
bWltZVR5cGU7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdh
dGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIEVY
UEVDVF9UUlVFKG5hdmlnYXRpb25SZXNwb25zZS5jYW5TaG93TUlNRVR5cGUpOworICAgIEVYUEVD
VF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgbmF2aWdhdGlvblJlc3BvbnNlLnJl
c3BvbnNlLlVSTC5sYXN0UGF0aENvbXBvbmVudCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBl
Y3RlZE1JTUVUeXBlLmdldCgpLCBuYXZpZ2F0aW9uUmVzcG9uc2UucmVzcG9uc2UuTUlNRVR5cGUp
OworICAgIGRlY2lzaW9uSGFuZGxlcihfcmVzcG9uc2VQb2xpY3kpOworfQogCiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0
cmluZyAqKXV0aQogewotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZEZpbGVOYW1lLCBmaWxl
TmFtZSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkVVRJLCB1dGkpOwotICAgIGRpZFN0
YXJ0UXVpY2tMb29rTG9hZCA9IHRydWU7CisgICAgRVhQRUNUX0ZBTFNFKF9kaWRGaW5pc2hRdWlj
a0xvb2tMb2FkKTsKKyAgICBFWFBFQ1RfRkFMU0UoX2RpZFN0YXJ0UXVpY2tMb29rTG9hZCk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVOYW1lLmdldCgpLCBmaWxlTmFtZSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVUeXBlLmdldCgpLCB1dGkpOworICAgIF9k
aWRTdGFydFF1aWNrTG9va0xvYWQgPSBZRVM7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWU6KE5TRGF0YSAqKWRvY3VtZW50RGF0YQogewotICAgIEVYUEVDVF9FUShleHBlY3RlZEZpbGVT
aXplLCBkb2N1bWVudERhdGEubGVuZ3RoKTsKLSAgICBkaWRGaW5pc2hRdWlja0xvb2tMb2FkID0g
dHJ1ZTsKKyAgICBFWFBFQ1RfRVEoX2V4cGVjdGVkRmlsZVNpemUsIGRvY3VtZW50RGF0YS5sZW5n
dGgpOworICAgIEVYUEVDVF9GQUxTRShfZGlkRmluaXNoUXVpY2tMb29rTG9hZCk7CisgICAgRVhQ
RUNUX1RSVUUoX2RpZFN0YXJ0UXVpY2tMb29rTG9hZCk7CisgICAgX2RpZEZpbmlzaFF1aWNrTG9v
a0xvYWQgPSBZRVM7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCkBAIC03MiwxMjgg
KzEzNywyMjcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlz
aE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXQKICAgICBpc0RvbmUgPSB0cnVlOwog
fQogCi1AZW5kCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6
KE5TRXJyb3IgKillcnJvcgoreworICAgIGlzRG9uZSA9IHRydWU7Cit9CiAKLUBpbnRlcmZhY2Ug
UXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPgotQGVuZAorLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFz
aDooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CiAKLUBpbXBsZW1lbnRhdGlvbiBRdWlja0xvb2tBc3luY05hdmlnYXRpb25EZWxlZ2F0
ZQorLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAorewor
ICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgZG93bmxvYWQucmVx
dWVzdC5VUkwubGFzdFBhdGhDb21wb25lbnQpOworfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmln
YXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlc3BvbnNlCiB7Ci0gICAgaW50NjRfdCBkZWZlcnJlZFdhaXRUaW1lID0g
MTAwICogTlNFQ19QRVJfTVNFQzsKLSAgICBkaXNwYXRjaF90aW1lX3Qgd2hlbiA9IGRpc3BhdGNo
X3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlZmVycmVkV2FpdFRpbWUpOworICAgIEVYUEVDVF9X
S19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgcmVzcG9uc2UuVVJMLmxhc3RQYXRoQ29t
cG9uZW50KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5cGUuZ2V0KCksIHJl
c3BvbnNlLk1JTUVUeXBlKTsKK30KIAotICAgIGRpc3BhdGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93KTsKLSAgICB9KTsKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGgKK3sKKyAg
ICBfZG93bmxvYWRGaWxlU2l6ZSArPSBsZW5ndGg7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZVdpdGhGaWxlTmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSB1dGk6KE5TU3RyaW5nICopdXRp
CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRGaWxlTmFtZSwgZmlsZU5hbWUpOwotICAgIEVY
UEVDVF9XS19TVFJFUShleHBlY3RlZFVUSSwgdXRpKTsKLSAgICBkaWRTdGFydFF1aWNrTG9va0xv
YWQgPSB0cnVlOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwg
ZmlsZW5hbWUpOworICAgIAorICAgIE5TVVJMICp0ZW1wRGlyZWN0b3J5VVJMID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgX2Rvd25sb2FkRGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVu
YW1lIHJlbGF0aXZlVG9VUkw6dGVtcERpcmVjdG9yeVVSTF07CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoWUVTLCBbX2Rvd25sb2FkRGVzdGluYXRpb25VUkwgcGF0aF0pOwogfQogCi0tICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lOihOU0RhdGEgKilkb2N1bWVudERhdGEKKy0gKHZvaWQpX2Rvd25sb2Fk
RGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgRVhQRUNUX0VRKGV4cGVj
dGVkRmlsZVNpemUsIGRvY3VtZW50RGF0YS5sZW5ndGgpOwotICAgIGRpZEZpbmlzaFF1aWNrTG9v
a0xvYWQgPSB0cnVlOworICAgIEVYUEVDVF9FUShfZXhwZWN0ZWRGaWxlU2l6ZSwgX2Rvd25sb2Fk
RmlsZVNpemUpOworICAgIGRvd25sb2FkSXNEb25lID0gdHJ1ZTsKIH0KIAotLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb24KKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2Fk
IGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgogewotICAgIGlzRG9uZSA9IHRydWU7
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAodm9pZClfZG93bmxv
YWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCistICh2b2lkKXZlcmlmeURvd25sb2FkCit7CisgICAgRVhQ
RUNUX1RSVUUoW05TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpb
X2Rvd25sb2FkRGVzdGluYXRpb25VUkwgcGF0aF1dKTsKKworICAgIE5TVUludGVnZXIgZG93bmxv
YWRGaWxlU2l6ZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRvd25sb2FkRmlsZU5hbWU7Cisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBkb3dubG9hZEZpbGVUeXBlOworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gZG93bmxvYWRNSU1FVHlwZTsKKyAgICByZWFkRmlsZShfZG93bmxvYWREZXN0aW5h
dGlvblVSTC5nZXQoKSwgZG93bmxvYWRGaWxlU2l6ZSwgZG93bmxvYWRGaWxlTmFtZSwgZG93bmxv
YWRGaWxlVHlwZSwgZG93bmxvYWRNSU1FVHlwZSk7CisKKyAgICBFWFBFQ1RfRVEoX2V4cGVjdGVk
RmlsZVNpemUsIGRvd25sb2FkRmlsZVNpemUpOworICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0
ZWRGaWxlTmFtZS5nZXQoKSwgZG93bmxvYWRGaWxlTmFtZS5nZXQoKSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKF9leHBlY3RlZEZpbGVUeXBlLmdldCgpLCBkb3dubG9hZEZpbGVUeXBlLmdldCgpKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5cGUuZ2V0KCksIGRvd25sb2FkTUlN
RVR5cGUuZ2V0KCkpOwogfQogCiBAZW5kCiAKLXN0YXRpYyB2b2lkIHJ1blRlc3QoQ2xhc3MgbmF2
aWdhdGlvbkRlbGVnYXRlQ2xhc3MsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKK3N0YXRpYyB2b2lk
IHJ1blRlc3QoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXRlLCBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QsIEJPT0wgc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZykKIHsKLSAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBuYXZp
Z2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbbmF2aWdhdGlvbkRlbGVnYXRlQ2xhc3MgYWxsb2Nd
IGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIGluaXRdKTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdh
dGU6ZGVsZWdhdGVdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0
U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6c2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ107CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bv
b2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLVRFU1QoUXVpY2tMb29r
LCBOYXZpZ2F0aW9uRGVsZWdhdGUpCitzdGF0aWMgdm9pZCBydW5UZXN0RGVjaWRlQmVmb3JlTG9h
ZGluZyhRdWlja0xvb2tEZWxlZ2F0ZSAqZGVsZWdhdGUsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkK
IHsKLSAgICBydW5UZXN0KFtRdWlja0xvb2tOYXZpZ2F0aW9uRGVsZWdhdGUgY2xhc3NdLCBwYWdl
c0RvY3VtZW50UmVxdWVzdCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkU3RhcnRRdWlja0xvb2tMb2Fk
KTsKLSAgICBFWFBFQ1RfVFJVRShkaWRGaW5pc2hRdWlja0xvb2tMb2FkKTsKKyAgICBydW5UZXN0
KGRlbGVnYXRlLCByZXF1ZXN0LCBZRVMpOwogfQogCi1URVNUKFF1aWNrTG9vaywgQXN5bmNOYXZp
Z2F0aW9uRGVsZWdhdGUpCitzdGF0aWMgdm9pZCBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKFF1
aWNrTG9va0RlbGVnYXRlICpkZWxlZ2F0ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAg
IHJ1blRlc3QoW1F1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIGNsYXNzXSwgcGFnZXNE
b2N1bWVudFJlcXVlc3QpOwotICAgIEVYUEVDVF9UUlVFKGRpZFN0YXJ0UXVpY2tMb29rTG9hZCk7
Ci0gICAgRVhQRUNUX1RSVUUoZGlkRmluaXNoUXVpY2tMb29rTG9hZCk7CisgICAgcnVuVGVzdChk
ZWxlZ2F0ZSwgcmVxdWVzdCwgTk8pOwogfQogCi1AaW50ZXJmYWNlIFF1aWNrTG9va0RlY2lkZVBv
bGljeURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorVEVTVChRdWlj
a0xvb2ssIEFsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKK3sKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVj
dGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxl
Z2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJM
XSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZFN0YXJ0UXVpY2tMb29rTG9hZF0pOwor
ICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7Cit9CisK
K1RFU1QoUXVpY2tMb29rLCBBbGxvd1Jlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKK3sKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdl
c0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRl
LmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsK
KyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAg
RVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKK30KKworQGlu
dGVyZmFjZSBRdWlja0xvb2tBc3luY0RlbGVnYXRlIDogUXVpY2tMb29rRGVsZWdhdGUKIEBlbmQK
IAotQGltcGxlbWVudGF0aW9uIFF1aWNrTG9va0RlY2lkZVBvbGljeURlbGVnYXRlCitAaW1wbGVt
ZW50YXRpb24gUXVpY2tMb29rQXN5bmNEZWxlZ2F0ZQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmln
YXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWwpOworICAgIGlu
dDY0X3QgZGVmZXJyZWRXYWl0VGltZSA9IDEwMCAqIE5TRUNfUEVSX01TRUM7CisgICAgZGlzcGF0
Y2hfdGltZV90IHdoZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZlcnJl
ZFdhaXRUaW1lKTsKKworICAgIGRpc3BhdGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfcmVzcG9uc2VQb2xpY3kpOwor
ICAgIH0pOwogfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJy
b3I6KE5TRXJyb3IgKillcnJvcgorQGVuZAorCitURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jl
c3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgaXNEb25lID0gdHJ1ZTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVM
b2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2Vz
RG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xv
b2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xv
YWRdKTsKIH0KIAotLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDooV0tXZWJWaWV3
ICopd2ViVmlldworVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUFmdGVyTG9hZGlu
Z1ByZXZpZXcpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2Vz
RG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUu
Z2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwor
ICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsKKyAgICBF
WFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwogfQogCi1AZW5k
CitURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKK3sK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAgcnVuVGVzdERlY2lkZUJlZm9y
ZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFn
ZXNEb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlj
a0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xv
b2tMb2FkXSk7Cit9CiAKLUBpbnRlcmZhY2UgUXVpY2tMb29rRnJhbWVMb2FkRGVsZWdhdGUgOiBO
U09iamVjdCA8V2ViRnJhbWVMb2FkRGVsZWdhdGU+Ci1AZW5kCitURVNUKFF1aWNrTG9vaywgQ2Fu
Y2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJM
OnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlN
RVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsK
KyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBFWFBFQ1RfVFJVRShb
ZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNUX1RSVUUoW2RlbGVn
YXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKK30KIAotQGltcGxlbWVudGF0aW9uIFF1aWNr
TG9va0ZyYW1lTG9hZERlbGVnYXRlCitURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJl
Zm9yZUxvYWRpbmdQcmV2aWV3KQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVp
Y2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1l
bnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93
bmxvYWRdKTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwg
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgRVhQ
RUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRTdGFydFF1aWNrTG9va0xvYWRdKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKIAotLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilm
cmFtZQorICAgIFV0aWw6OnJ1bigmZG93bmxvYWRJc0RvbmUpOworICAgIFtkZWxlZ2F0ZSB2ZXJp
ZnlEb3dubG9hZF07Cit9CisKK1RFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQWZ0ZXJM
b2FkaW5nUHJldmlldykKIHsKLSAgICBpc0RvbmUgPSB0cnVlOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxl
VVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3
TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWRdKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgp
LCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBF
WFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkU3RhcnRRdWlja0xvb2tMb2FkXSk7CisgICAgRVhQRUNU
X1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKIH0KIAorQGludGVyZmFj
ZSBRdWlja0xvb2tQYXNzd29yZERlbGVnYXRlIDogUXVpY2tMb29rRGVsZWdhdGUKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIGRpZFJlcXVlc3RQYXNzd29yZDsKIEBlbmQKIAotVEVTVChRdWlj
a0xvb2ssIENhbmNlbE5hdmlnYXRpb25BZnRlclJlc3BvbnNlKQorQGltcGxlbWVudGF0aW9uIFF1
aWNrTG9va1Bhc3N3b3JkRGVsZWdhdGUKKworLSAodm9pZClfd2ViVmlld0RpZFJlcXVlc3RQYXNz
d29yZEZvclF1aWNrTG9va0RvY3VtZW50OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcnVu
VGVzdChbUXVpY2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgY2xhc3NdLCBwYWdlc0RvY3VtZW50
UmVxdWVzdCk7CisgICAgX2RpZFJlcXVlc3RQYXNzd29yZCA9IFlFUzsKKyAgICBpc0RvbmUgPSB0
cnVlOwogfQogCi1AaW50ZXJmYWNlIFF1aWNrTG9va1Bhc3N3b3JkTmF2aWdhdGlvbkRlbGVnYXRl
IDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4KIEBlbmQKIAotQGltcGxl
bWVudGF0aW9uIFF1aWNrTG9va1Bhc3N3b3JkTmF2aWdhdGlvbkRlbGVnYXRlCitURVNUKFF1aWNr
TG9vaywgUmVxdWVzdFBhc3N3b3JkQmVmb3JlTG9hZGluZ1ByZXZpZXcpCit7CisgICAgTlNVUkwg
KnBhc3N3b3JkUHJvdGVjdGVkRG9jdW1lbnRVUkwgPSBbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxG
b3JSZXNvdXJjZTpAInBhc3N3b3JkLXByb3RlY3RlZCIgd2l0aEV4dGVuc2lvbjpAInBhZ2VzIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rUGFzc3dvcmREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhF
eHBlY3RlZEZpbGVVUkw6cGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFVSTCByZXNwb25zZVBvbGlj
eTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVuVGVzdERlY2lkZUJl
Zm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
cGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0
ZSBkaWRSZXF1ZXN0UGFzc3dvcmRdKTsKK30KIAotLSAodm9pZClfd2ViVmlld0RpZFJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50OihXS1dlYlZpZXcgKil3ZWJWaWV3CitURVNUKFF1
aWNrTG9vaywgUmVxdWVzdFBhc3N3b3JkQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBpc0Rv
bmUgPSB0cnVlOworICAgIE5TVVJMICpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50VVJMID0gW05T
QnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJwYXNzd29yZC1wcm90ZWN0ZWQiIHdp
dGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va1Bhc3N3b3JkRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhc3N3b3JkUHJvdGVjdGVkRG9j
dW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVz
cG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRl
c3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6cGFzc3dvcmRQcm90ZWN0ZWREb2N1bWVudFVSTF0pOworICAgIEVYUEVDVF9UUlVF
KFtkZWxlZ2F0ZSBkaWRSZXF1ZXN0UGFzc3dvcmRdKTsKIH0KIAorQGludGVyZmFjZSBRdWlja0xv
b2tGcmFtZUxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4KIEBl
bmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorQGlt
cGxlbWVudGF0aW9uIFF1aWNrTG9va0ZyYW1lTG9hZERlbGVnYXRlCiAKLVRFU1QoUXVpY2tMb29r
LCBEaWRSZXF1ZXN0UGFzc3dvcmROYXZpZ2F0aW9uRGVsZWdhdGUpCistICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1l
CiB7Ci0gICAgTlNVUkxSZXF1ZXN0ICpwYXNzd29yZFByb3RlY3RlZERvY3VtZW50UmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInBhc3N3b3JkLXByb3RlY3RlZCIgd2l0aEV4dGVuc2lvbjpAInBhZ2VzIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBydW5UZXN0KFtR
dWlja0xvb2tQYXNzd29yZE5hdmlnYXRpb25EZWxlZ2F0ZSBjbGFzc10sIHBhc3N3b3JkUHJvdGVj
dGVkRG9jdW1lbnRSZXF1ZXN0KTsKKyAgICBpc0RvbmUgPSB0cnVlOwogfQogCi0jZW5kaWYKK0Bl
bmQKIAogVEVTVChRdWlja0xvb2ssIExlZ2FjeVF1aWNrTG9va0NvbnRlbnQpCiB7CkBAIC0yMTEs
MTggKzM3NSwyMyBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5UXVpY2tMb29rQ29udGVudCkKIAog
ICAgIFdlYkZyYW1lICptYWluRnJhbWUgPSBbd2ViVmlldyBtYWluRnJhbWVdOwogCi0gICAgaXNE
b25lID0gZmFsc2U7Ci0gICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpwYWdlc0RvY3VtZW50UmVx
dWVzdF07CisgICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdXTsKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAg
V2ViVGhyZWFkTG9jaygpOwogCisgICAgTlNVSW50ZWdlciBleHBlY3RlZEZpbGVTaXplOworICAg
IFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxlTmFtZTsKKyAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IGV4cGVjdGVkRmlsZVR5cGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBleHBlY3Rl
ZE1JTUVUeXBlOworICAgIHJlYWRGaWxlKHBhZ2VzRG9jdW1lbnRVUkwsIGV4cGVjdGVkRmlsZVNp
emUsIGV4cGVjdGVkRmlsZU5hbWUsIGV4cGVjdGVkRmlsZVR5cGUsIGV4cGVjdGVkTUlNRVR5cGUp
OworCiAgICAgTlNEaWN0aW9uYXJ5ICpxdWlja0xvb2tDb250ZW50ID0gbWFpbkZyYW1lLmRhdGFT
b3VyY2UuX3F1aWNrTG9va0NvbnRlbnQ7CiAgICAgTlNTdHJpbmcgKmZpbGVQYXRoID0gcXVpY2tM
b29rQ29udGVudFtXZWJRdWlja0xvb2tGaWxlTmFtZUtleV07Ci0gICAgRVhQRUNUX1RSVUUoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVQYXRoXSk7
Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRmlsZU5hbWUsIGZpbGVQYXRoLmxhc3RQYXRo
Q29tcG9uZW50KTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRVVEksIHF1aWNrTG9va0Nv
bnRlbnRbV2ViUXVpY2tMb29rVVRJS2V5XSk7CisgICAgRVhQRUNUX1RSVUUoW05TRmlsZU1hbmFn
ZXIuZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpmaWxlUGF0aF0pOworICAgIEVYUEVD
VF9XS19TVFJFUShleHBlY3RlZEZpbGVOYW1lLmdldCgpLCBmaWxlUGF0aC5sYXN0UGF0aENvbXBv
bmVudCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRmlsZVR5cGUuZ2V0KCksIHF1aWNr
TG9va0NvbnRlbnRbV2ViUXVpY2tMb29rVVRJS2V5XSk7CiAKLSAgICBOU0RpY3Rpb25hcnkgKmZp
bGVBdHRyaWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVz
T2ZJdGVtQXRQYXRoOmZpbGVQYXRoIGVycm9yOm5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICpmaWxl
QXR0cmlidXRlcyA9IFtOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyIGF0dHJpYnV0ZXNPZkl0
ZW1BdFBhdGg6ZmlsZVBhdGggZXJyb3I6bmlsXTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRGaWxl
U2l6ZSwgW2ZpbGVBdHRyaWJ1dGVzW05TRmlsZVNpemVdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7
CiAKICAgICBpc0RvbmUgPSBmYWxzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>