<?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>188827</bug_id>
          
          <creation_ts>2018-08-21 16:33:34 -0700</creation_ts>
          <short_desc>Translate 4 tests using WKPageLoaderClient to ObjC</short_desc>
          <delta_ts>2018-08-27 12:38:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>don.olmstead</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1452392</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-21 16:33:34 -0700</bug_when>
    <thetext>Translate 4 tests using WKPageLoaderClient to ObjC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452396</commentid>
    <comment_count>1</comment_count>
      <attachid>347725</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-21 16:38:44 -0700</bug_when>
    <thetext>Created attachment 347725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452413</commentid>
    <comment_count>2</comment_count>
      <attachid>347730</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-21 16:57:40 -0700</bug_when>
    <thetext>Created attachment 347730
patch that applies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452438</commentid>
    <comment_count>3</comment_count>
      <attachid>347739</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-21 17:20:19 -0700</bug_when>
    <thetext>Created attachment 347739
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452441</commentid>
    <comment_count>4</comment_count>
      <attachid>347739</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-21 17:32:34 -0700</bug_when>
    <thetext>Comment on attachment 347739
patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453892</commentid>
    <comment_count>5</comment_count>
      <attachid>348145</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 09:02:37 -0700</bug_when>
    <thetext>Created attachment 348145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453896</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 09:08:39 -0700</bug_when>
    <thetext>I don&apos;t know why it&apos;s having such a hard time applying the patch.
http://trac.webkit.org/r235367</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453897</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-27 09:09:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/43756020&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453907</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-27 09:23:23 -0700</bug_when>
    <thetext>This broke the CMake builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453911</commentid>
    <comment_count>9</comment_count>
      <attachid>348150</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-27 09:28:10 -0700</bug_when>
    <thetext>Created attachment 348150
Build fix

Files didn&apos;t get removed from CMake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453916</commentid>
    <comment_count>10</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-27 09:30:34 -0700</bug_when>
    <thetext>Alex beat me to the fix. Marking as resolved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453977</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 11:13:30 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453978</commentid>
    <comment_count>12</comment_count>
      <attachid>348168</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 11:13:30 -0700</bug_when>
    <thetext>Created attachment 348168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453979</commentid>
    <comment_count>13</comment_count>
      <attachid>348169</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 11:14:25 -0700</bug_when>
    <thetext>Created attachment 348169
patch with updated title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454035</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 12:38:45 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/235391/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347725</attachid>
            <date>2018-08-21 16:38:44 -0700</date>
            <delta_ts>2018-08-21 16:57:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188827-20180821163843.patch</filename>
            <type>text/plain</type>
            <size>76158</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNTE0NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE4LTA4LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVHJhbnNsYXRlIDQgdGVzdHMgdXNpbmcgV0tQYWdlTG9hZGVy
Q2xpZW50IHRvIE9iakMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXkgdXNlIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUsIGRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdCwgb3Igd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLgorICAgICAgICBS
YXRoZXIgdGhhbiBpbnRyb2R1Y2UgdGhlc2UgdG8gV0tQYWdlTmF2aWdhdGlvbkNsaWVudCwgSSBq
dXN0IHRyYW5zbGF0ZWQgdGhlIHRlc3RzIHRvIHVzZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSwgd2hp
Y2ggYWxyZWFkeSBoYXZlIGVxdWl2YWxlbnQgY2FsbGJhY2tzLgorICAgICAgICB3aWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gaGFkIHVzZXJEYXRhIGZyb20gdGhlIEluamVjdGVkQnVuZGxlLCBi
dXQgbm9ib2R5IHdhcyB1c2luZyBpdCBzbyBJIGRpZCBub3QgYWRkIHRoYXQgdG8gdGhlIE9iakMg
U1BJLCBzbyBJIGRvbid0IHRlc3QgdGhhdCB1bnVzZWQKKyAgICAgICAgYnVuZGxlIGZ1bmN0aW9u
YWxpdHkgYW55IG1vcmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0
b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbTog
Q29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHAuCisgICAgICAgICgtW1Jlc3BvbnNpdmVuZXNzVGltZXJEZWxlZ2F0ZSB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1Jlc3BvbnNpdmVuZXNzVGlt
ZXJEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOiBEZWxldGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwLgor
ICAgICAgICAoLVtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdh
dGlvbjpdKToKKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZSBfd2ViVmlld1dlYlBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1t
OiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vz
c2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwLgorICAgICAgICAoLVtTZXNzaW9uU3RhdGVE
ZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1Nlc3Np
b25TdGF0ZURlbGVnYXRlIF93ZWJWaWV3OmJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDpyZW1vdmVk
Ol0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlU2Vzc2lvblN0YXRlRGF0YSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
bW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcC4KKyAgICAgICAgKC1bQmFja0ZvcndhcmRDbGllbnQg
d2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtCYWNrRm9yd2FyZENs
aWVudCBfd2ViVmlldzp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06aW5QYWdlQ2FjaGU6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisKIDIwMTgtMDgtMjEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xd
IENhbGwgZXhwcmVzc2lvbnMgc2hvdWxkbid0IGhhdmUgdHlwZSBhcmd1bWVudHMKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzUxNDApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjIzLDcgKzIyMyw2IEBACiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2Nh
bFN0b3JhZ2VDbGVhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTZBODkyMUQyRjFCRUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAq
LzsgfTsKIAkJNTFFNkE4OTYxRDJGMUNBNzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFNkE4OTUxRDJGMUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi87IH07
CiAJCTUxRUIxMjk0MUZERjA1MjUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVCMTI5MzFGREYw
NTA1MDBBNUExQkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1tICovOyB9OwotCQk1MUZDRjdBMTE1
MzRCMkEwMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk3
MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUu
Y3BwICovOyB9OwogCQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIw
QkNGNEExNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJ
NTI0QkJDOUUxOURGNzJDMDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQzlCMTlE
RjM3MTQwMDJGMUFGMSAvKiBmaWxlLXdpdGgtdmlkZW8uaHRtbCAqLzsgfTsKIAkJNTI0QkJDQTEx
OUUzMEM3NzAwMkYxQUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQ0EwMTlFMzBDNjMwMDJGMUFGMSAvKiB0ZXN0
Lm1wNCAqLzsgfTsKQEAgLTI5MCw2ICsyODksMTAgQEAKIAkJNUNCM0NFMzkxRkExNjk3RjAwQzNB
MkQ2IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzQ0UzODFGQTE2OTE3MDBDM0EyRDYgLyogV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbSAqLzsgfTsKIAkJNUNCNDBCNEUxRjRCOThEMzAwN0RDN0I5IC8q
IFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
NUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjVCM0JEMUZG
QzUxN0UwMEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi87IH07CisJCTVD
REMzMDU5MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
QzMwNTUyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkubW0gKi87IH07CisJCTVDREMzMDVBMjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXNwb25zaXZlbmVz
c1RpbWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNEQzMwNTYyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07
CisJCTVDREMzMDVCMjEyQ0Q0REQwMDIxRkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
REMzMDU3MjEyQ0Q0REQwMDIxRkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5t
bSAqLzsgfTsKKwkJNUNEQzMwNUMyMTJDRDRERDAwMjFGQjY2IC8qIFJlc3RvcmVTZXNzaW9uU3Rh
dGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDREMzMDU4MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gKi87IH07CiAJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUz
QiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSAqLzsgfTsKIAkJNUNFQUI1RTExRkE5MzlGNDAwQTc3RkFBIC8q
IF9XS0lucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5t
bSAqLzsgfTsKIAkJNUU0QjFEMkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0
QjFEMkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tICovOyB9OwpA
QCAtNTI5LDEwICs1MzIsOCBAQAogCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2Fk
UGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEEzQUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNo
LmNwcCAqLzsgfTsKIAkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQ
YWdpbmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5h
dGVkV2ViVmlldy5jcHAgKi87IH07CiAJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNp
emVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcCAqLzsgfTsKLQkJN0NDRTdGMTAxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovOyB9OwogCQk3Q0NFN0YxMTFBNDExQUU2
MDA0NDdDNEMgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4MjEyRkNB
NkFBMDBEMkMxMjkgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAg
Ki87IH07CiAJCTdDQ0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZp
b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NjQwQjU0MTc4NzVERkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLzsg
fTsKLQkJN0NDRTdGMTMxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRkNGNzk4MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAgKi87IH07CiAJCTdDQ0U3RjE1MUE0MTFBRTYwMDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9s
bGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovOyB9Owog
CQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVybWluYXRlVHdpY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNzJGNDcxNzNFQjIxNDAw
NjM2MkYwIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCAqLzsgfTsKIAkJN0NDRTdGMTcxQTQxMUFFNjAw
NDQ3QzRDIC8qIFVzZXJNZWRpYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEY0QjE5QUY3QkQ2MDAyRUJBQjUgLyogVXNlck1lZGlhLmNwcCAq
LzsgfTsKQEAgLTU2OSw3ICs1NzAsNiBAQAogCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyog
QXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi87IH07CiAJCTgzNDlEM0MyMURCOTZE
REUwMDRBOUY2NSAvKiBDb250ZXh0TWVudURvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzExREI5NkREQTAwNEE5RjY1IC8qIENv
bnRleHRNZW51RG93bmxvYWQubW0gKi87IH07CiAJCTgzNDlEM0M0MURCOTcyOEUwMDRBOUY2NSAv
KiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzMxREI5NzI0RjAwNEE5RjY1
IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRtbCAqLzsgfTsKLQkJODM1Q0Y5Njcx
RDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzVDRjk2
NjFEMjVGQ0Q2MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
LmNwcCAqLzsgfTsKIAkJODM2MUYxNzgxRTYxMEI0RTAwNzU5QjI1IC8qIGxpbmstd2l0aC1kb3du
bG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MUYxNzcxRTYxMEIyMTAwNzU5QjI1IC8q
IGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgKi87IH07CiAJ
CTgzNzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3JlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NzlDMzcxRjgyRkVCMDAw
N0NEQThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTgzN0EzNUYxMUQ5QTFFN0Qw
MDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTM1RjAxRDlBMUU2NDAwNjYz
QzU3IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLzsgfTsKQEAgLTU3Nyw3ICs1Nzcs
NiBAQAogCQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNC
QUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLzsg
fTsKIAkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQkM1QUJGMjBFNkMwRDMwMEY1ODc5RiAvKiBTdGFydExvYWRJbkRpZEZhaWxQcm92aXNp
b25hbExvYWQubW0gKi87IH07CiAJCTgzREI3OTY5MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RC
Nzk2NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovOyB9OwotCQk4M0RFMTM0RDFF
RjFDNTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RFMTM0QzFFRjFDNEZFMDBDMUIzNTUg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07CiAJCTgzRjIyQzY0MjBCMzU1RjgwMDM0
Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyMkM2MzIwQjM1NUVCMDAzNDI3N0UgLyogTm9Q
b2xpY3lEZWxlZ2F0ZVJlc3BvbnNlLm1tICovOyB9OwogCQk4QzEwQUY5ODIwNjQ2NzkyMDAxOEZE
OTAgLyogbG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk3MjA2NDY3ODMw
MDE4RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi87IH07CiAJ
CThDMTBBRjk5MjA2NDY3QTkwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk2MjA2
NDY3NzcwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSAqLzsgfTsKQEAgLTE1
MDQsOCArMTUwMyw2IEBACiAJCTUxRTkzMDE2MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRT
Y2FsZUZhY3Rvck5vdFplcm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJC
YXNpYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQkJCNEMxNTEzRDRFOTAw
ODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVVSTC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTFGQ0Y3OTcxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MUZDRjc5ODE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjBCQ0Y0QTE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXJjaGl2ZV9C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjBCQ0Y0QjE0MUVCMDlF
MDA5MzdFQTggLyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0
QkJDOUIxOURGMzcxNDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImZpbGUtd2l0aC12aWRlby5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1NzgsNiArMTU3NSwxMCBAQAogCQk1Q0IzQ0UzODFGQTE2OTE3MDBD
M0EyRDYgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlEZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCNUIzQkQxRkZDNTE3RTAwQzI3QkIw
IC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZy
YW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNEQzMwNTUyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25z
aXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0RDMzA1NjIxMkNENERDMDAyMUZCNjYgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGlt
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDREMzMDU3MjEyQ0Q0REQwMDIx
RkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0RDMzA1ODIxMkNENEREMDAyMUZCNjYg
LyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0UzNTREODFFNzBEOUMz
MDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lu
cHV0RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tJbnB1dERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTRCMUQy
QzFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgcGF0
aCA9IC4uL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2NzUsNyArMTY3Niw2IEBACiAJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAv
KiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ5RDNDMTFEQjk2RERBMDA0QTlGNjUg
LyogQ29udGV4dE1lbnVEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IENvbnRleHRNZW51RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNDlEM0MzMURCOTcyNEYwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0
cmlidXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRoLWRvd25s
b2FkLWF0dHJpYnV0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1Q0Y5
NjYxRDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0
ZS13aXRoLXNsYXNoZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLXdp
dGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM3NzlDMzcxRjgyRkVCMDAwN0NEQThBIC8qIFZpc2l0ZWRMaW5rU3Rv
cmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpdGVkTGlu
a1N0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBMzVGMDFEOUExRTY0
MDA2NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY4NCw3ICsxNjg0LDYgQEAKIAkJODNCQUVFOEMxRUY0NjI1NTAwRERF
ODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQzVBQkYyMEU2QzBEMzAwRjU4NzlGIC8qIFN0YXJ0TG9h
ZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1
IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzRjIyQzYzMjBCMzU1RUIwMDM0Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9u
c2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb1BvbGljeURl
bGVnYXRlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkQxOTk3
MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTMsNyArMTg5Miw2
IEBACiAJCUMwQURCRTdCMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0VGVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkgLyogUmVzdG9yZVNl
c3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8q
IHNpbXBsZS1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWZv
cm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwQkQ2NjlDMTMxRDNDRjcw
MEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEJENjY5RTEzMUQz
Q0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NU
aW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2luZ1NjYWxl
RmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0NTk4QjZG
MDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzgwLDEyICsyMzc4LDE2IEBACiAJ
CQkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1By
b3RvY29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNl
ckFjdGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAorCQkJCTVDREMzMDU2MjEyQ0Q0REMwMDIx
RkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tICovLAorCQkJCTVDREMzMDU1MjEyQ0Q0REMw
MDIxRkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tICovLAorCQkJ
CTVDREMzMDU4MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5Q
YW5lbC5tbSAqLywKIAkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0QWZ0
ZXJEb2N1bWVudExvYWQubW0gKi8sCiAJCQkJNUNBOTg1NTEyMTEzQ0I4QzAwNTdFQjZCIC8qIFNh
ZmVCcm93c2luZy5tbSAqLywKIAkJCQlDRTA5NDczNjIwNjMyMjNCMDAzQzlCQTAgLyogU2NoZW1l
UmVnaXN0cnkubW0gKi8sCiAJCQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VX
b3JrZXJCYXNpYy5tbSAqLywKIAkJCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogU2V0TWF4
aW11bVByZXdhcm1lZFByb2Nlc3NDb3VudC5tbSAqLywKKwkJCQk1Q0RDMzA1NzIxMkNENEREMDAy
MUZCNjYgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8sCiAJCQkJMzdCQ0E2
MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0Fj
dGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0
Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1t
ICovLApAQCAtMjkyMywxNiArMjkyNSwxMSBAQAogCQkJCThBM0FGOTNBMTZDOUVEMjcwMEQyNDhD
MSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgKi8sCiAJCQkJMkREN0QzQTkxNzgyMDVEMDAw
MjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLywKIAkJCQk4QTJD
NzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8sCi0J
CQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICov
LAogCQkJCTUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jh
c2gubW0gKi8sCi0JCQkJQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovLAogCQkJCUMwQkQ2NjlFMTMxRDNDRkYwMEUxOEYy
QSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgKi8sCiAJ
CQkJODNCNkRFNkUxRUU3NTIwRjAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwICov
LAogCQkJCUMwQURCRTgyMTJGQ0E2QUEwMEQyQzEyOSAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlQ29u
dGFpbmluZ0Zvcm1EYXRhLmNwcCAqLywKLQkJCQk4MzVDRjk2NjFEMjVGQ0Q2MDAxQTY1RDQgLyog
UmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQkyRDY0MEI1
NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8sCi0JCQkJ
NTFGQ0Y3OTgxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCAqLywKLQkJCQk1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCAqLywKIAkJCQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJG
MEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovLAogCQkJCTc2NzM0OTk3MTkzMDE2REMwMEU0
NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWQuY3BwICovLAog
CQkJCTc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQ
cm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLywKQEAgLTM5MTQsMTIgKzM5MTEsMTIgQEAKIAkJ
CQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZp
ZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEYxQTQxMUFFNjAwNDQ3QzRDIC8qIFJl
c2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDOEUxQTUxRjI2
QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLywK
LQkJCQk4M0RFMTM0RDFFRjFDNTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1Q0RDMzA1QTIxMkNENEREMDAyMUZCNjYgLyogUmVzcG9uc2l2
ZW5lc3NUaW1lci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkM0QzlFMjBFQUE0MEQwMDQ5NDVF
QSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKLQkJCQk3Q0NF
N0YxMDFBNDExQUU2MDA0NDdDNEMgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0RDMzA1OTIxMkNENEREMDAyMUZCNjYgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgz
QjZERTZGMUVFNzUyMjEwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RjExMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNUNGOTY3MUQy
NUZDRDYwMDFBNjVENCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUNEQzMwNUMyMTJDRDRERDAwMjFGQjY2IC8qIFJlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2RTgx
NkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBSZXN0b3JlU3RhdGVBZnRlclRlcm1pbmF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJFMTUxRjcxQjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRSZWN0
VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8q
IFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzkzOSw3ICszOTM2LDcgQEAKIAkJ
CQk3QzgzRTA1MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNzk5MTg4MUUxQzk5NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBMTc5OTE4QjFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVy
VGVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0NFN0YxMzFBNDExQUU2MDA0NDdDNEMgLyog
U2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNE
QzMwNUIyMTJDRDRERDAwMjFGQjY2IC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCQ0E2MUMxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzRTBDNTFEMEE2NTQ2MDBGRUJDRjMgLyogU2hyaW5rVG9GaXQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VDRDFBNDExQTdFMDA0NDdDNEMgLyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291
cmNlcyAqLywKQEAgLTQxNDIsNyArNDEzOSw2IEBACiAJCQkJQkM1NzVCRTAxMjZGNTkwRDAwNkYw
RjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU1QUQx
RDUxNzlGM0IzMDAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMEJENjY5RjEzMUQzQ0ZGMDBFMThGMkEgLyog
UmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTFGQ0Y3QTExNTM0QjJBMDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NjczNDk5RDE5MzBDNUJC
MDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGODFCMTQzMUY2MDAyOEE3QzUgLyogVGV4
dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzIyRDMxOTE0REM2OEI5MDBGRkIxREQgLyogVXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9u
c2l2ZW5lc3NUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZhbHNlIH07Ci1zdGF0aWMgYm9v
bCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBwcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKikKLXsK
LSAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBzZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVu
dFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxv
YWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAg
bG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFt
ZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0KLVRFU1QoV2ViS2l0LCBSZXNwb25zaXZl
bmVzc1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCi17Ci0gICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICAv
LyBUaGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNz
LgotICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgp
LCAxKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKLSAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2Fk
VVJMKHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgi
c2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7
Ci0KLSAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKLQotICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xp
ZW50KHdlYlZpZXcyLnBhZ2UoKSk7Ci0KLSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0gICAg
V0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9y
UmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaExvYWQpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Ci0K
LSAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkgb24gdGhlIGZpcnN0IHBhZ2Ug
aW4gcXVpY2sgc3VjY2Vzc2lvbi4KLSAgICBXS1BhZ2VTdG9wTG9hZGluZyh3ZWJWaWV3MS5wYWdl
KCkpOwotICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICAvLyBXZSBuZWVk
IHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNzIHRv
IGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgotICAgIFV0aWw6OnNsZWVwKDQpOwotCi0g
ICAgLy8gV2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhlIHNlY29uZCBwYWdlIHNoYXJpbmcgdGhlIHNh
bWUgcHJvY2VzcyBhcyB1bnJlc3BvbnNpdmUuCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVu
cmVzcG9uc2l2ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlm
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1Rp
bWVyRG9lc250RmlyZUVhcmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcAkocmV2
aXNpb24gMjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9u
c2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVf
Q19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIGJvb2wg
ZGlkRmluaXNoTG9hZDsKLXN0YXRpYyBib29sIGRpZEJlY29tZVVucmVzcG9uc2l2ZTsKLXN0YXRp
YyBib29sIGRpZEJyaWVmbHlQYXVzZTsKLQotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBkaWRCcmllZmx5UGF1c2UgPSB0cnVlOwot
ICAgIEVYUEVDVF9XS19TVFJFUSgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUpOwotfQot
Ci1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwot
fQotCi1zdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwg
Y29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsKLX0KLQot
c3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNs
aWVudDsKLSAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0
ZWRCdW5kbGVDbGllbnQpKTsKLQotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UudmVyc2lv
biA9IDA7Ci0gICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLQotICAg
IFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRs
ZUNsaWVudC5iYXNlKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0g
ICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAg
IGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50
LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlOwotCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50
LmJhc2UpOwotfQotCi1URVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVF
YXJseSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdL
KFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHlUZXN0IikpOwotICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KGNvbnRleHQuZ2V0KCkpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5n
ZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7Ci0KLSAgICBX
S1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJl
c291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2hMb2FkKTsKLQotICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250
ZXh0LmdldCgpLCBVdGlsOjp0b1dLKCJCcmllZmx5UGF1c2UiKS5nZXQoKSwgMCk7Ci0KLSAgICAv
LyBQcmVzc2luZyBhIGtleSBvbiB0aGUga2V5Ym9hcmQgc2hvdWxkIHN0YXJ0IHRoZSByZXNwb25z
aXZlbmVzcyB0aW1lci4gU2luY2UgdGhlIHdlYiBwcm9jZXNzCi0gICAgLy8gaXMgZ29pbmcgdG8g
cGF1c2UgYmVmb3JlIGl0IHJlY2VpdmVzIHRoaXMga2V5cHJlc3MsIGl0IHNob3VsZCB0YWtlIGEg
bGl0dGxlIHdoaWxlIHRvIHJlc3BvbmQKLSAgICAvLyAoYnV0IG5vdCBzbyBsb25nIHRoYXQgdGhl
IHJlc3BvbnNpdmVuZXNzIHRpbWVyIGZpcmVzKS4KLSAgICB3ZWJWaWV3LnNpbXVsYXRlU3BhY2Vi
YXJLZXlQcmVzcygpOwotCi0gICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOwotCi0gICAg
RVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5
LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0
aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzdG9y
ZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcAkocmV2aXNpb24gMjM1MTM4KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhv
dXROYXZpZ2F0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgV0tfSEFWRV9DX1NQSQotCi0jaW5jbHVk
ZSAiSmF2YVNjcmlwdFRlc3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgIlRlc3QuaCIKLSNpbmNsdWRlIDxX
ZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Nlc3Npb25TdGF0ZVJl
Zi5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGRpZEZpbmlz
aExvYWQ7Ci1zdGF0aWMgYm9vbCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7Ci0KLXN0YXRpYyB2
b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJl
ZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Ci19Ci0KLXN0YXRp
YyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UoV0tQYWdlUmVmLCBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkKikKLXsK
LSAgICBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBz
ZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNs
aWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0g
ICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JG
cmFtZTsKLSAgICBsb2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0Rm9yUGFnZTsKLQotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKLX0KLQotc3RhdGljIFdLUmV0YWluUHRyPFdL
RGF0YVJlZj4gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCkKLXsK
LSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKLSAgICBzZXRQYWdlTG9hZGVy
Q2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdl
KCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikp
LmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwotICAgIGRpZEZpbmlzaExv
YWQgPSBmYWxzZTsKLQotICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhzdGF0aWNfY2Fz
dDxXS1Nlc3Npb25TdGF0ZVJlZj4oV0tQYWdlQ29weVNlc3Npb25TdGF0ZSh3ZWJWaWV3LnBhZ2Uo
KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSksIG51bGxwdHIpKSk7Ci0gICAgcmV0dXJuIGFk
b3B0V0soV0tTZXNzaW9uU3RhdGVDb3B5RGF0YShzZXNzaW9uU3RhdGUuZ2V0KCkpKTsKLX0KLQot
VEVTVChXZWJLaXQsIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbikKLXsKLSAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3Jl
YXRlKCkpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7Ci0g
ICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7Ci0KLSAgICBXS1JldGFpblB0
cjxXS0RhdGFSZWY+IGRhdGEgPSBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKGNvbnRleHQuZ2V0KCkp
OwotICAgIEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKLQotICAgIGF1dG8gc2Vzc2lvblN0YXRlID0g
YWRvcHRXSyhXS1Nlc3Npb25TdGF0ZUNyZWF0ZUZyb21EYXRhKGRhdGEuZ2V0KCkpKTsKLSAgICBX
S1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKHdlYlZpZXcucGFn
ZSgpLCBzZXNzaW9uU3RhdGUuZ2V0KCkpOwotCi0gICAgVXRpbDo6cnVuKCZkaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9
IGFkb3B0V0soV0tQYWdlQ29weUNvbW1pdHRlZFVSTCh3ZWJWaWV3LnBhZ2UoKSkpOwotICAgIEVY
UEVDVF9OVUxMKGNvbW1pdHRlZFVSTC5nZXQoKSk7Ci0KLSAgICBhdXRvIGJhY2tGb3J3YXJkTGlz
dCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlzdCh3ZWJWaWV3LnBhZ2UoKSk7Ci0gICAgYXV0byBj
dXJyZW50SXRlbSA9IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oYmFja0ZvcndhcmRM
aXN0KTsKLSAgICBhdXRvIGN1cnJlbnRJdGVtVVJMID0gYWRvcHRXSyhXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1Db3B5VVJMKGN1cnJlbnRJdGVtKSk7Ci0gICAgYXV0byBleHBlY3RlZFVSTCA9IGFkb3B0
V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpOwotICAgIEVY
UEVDVF9OT1RfTlVMTChleHBlY3RlZFVSTCk7Ci0gICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFs
KGN1cnJlbnRJdGVtVVJMLmdldCgpLCBleHBlY3RlZFVSTC5nZXQoKSkpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCShub25leGlz
dGVudCkKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSAiVGVzdC5oIgotCi0jaW5jbHVk
ZSA8V2ViS2l0L1dLU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3Rh
dGljIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLXN0YXRpYyBib29sIHJlY2VpdmVkUHJvcGVyQmFj
a0ZvcndhcmRDYWxsYmFja3MgPSBmYWxzZTsKLQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lk
KikKLXsKLSAgICAvLyBPbmx5IG1hcmsgZmluaXNoZWQgd2hlbiB0aGUgbWFpbiBmcmFtZSBsb2Fk
cwotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZmluaXNoZWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCB3aWxsR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0oV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopCi17Ci0gICAgaWYgKFdLR2V0VHlwZUlEKHVzZXJEYXRh
KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKChXS1N0cmluZ1JlZil1c2VyRGF0YSwgInNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtQ2FsbGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVkIikpCi0gICAgICAgICAgICByZWNl
aXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBmaW5p
c2hlZCA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdl
UmVmIHBhZ2UpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OwotICAg
IG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7Ci0KLSAgICBs
b2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKLSAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNo
TG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC53
aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07
Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFz
ZSk7Ci19Ci0KLVRFU1QoV2ViS2l0LCBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKLXsK
LSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtVGVzdCIpKTsKLSAgICAvLyBFbmFibGUgdGhlIHBhZ2UgY2FjaGUgc28gd2UgY2FuIHRl
c3QgdGhlIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUlzSW5QYWdlQ2FjaGUgQVBJCi0gICAg
V0tDb250ZXh0U2V0Q2FjaGVNb2RlbChjb250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1l
bnRCcm93c2VyKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkp
OwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwotCi0gICAgV0tQYWdl
TG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJj
ZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwotICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwot
ICAgIAotICAgIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBh
Z2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIs
ICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKLQotICAgIGZpbmlz
aGVkID0gZmFsc2U7Ci0gICAgV0tQYWdlR29CYWNrKHdlYlZpZXcucGFnZSgpKTsKLSAgICBVdGls
OjpydW4oJmZpbmlzaGVkKTsKLSAgICAKLSAgICBFWFBFQ1RfRVEocmVjZWl2ZWRQcm9wZXJCYWNr
Rm9yd2FyZENhbGxiYWNrcywgdHJ1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKLQotI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
X0J1bmRsZS5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotCi0jaWYgV0tfSEFWRV9DX1NQSQotCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0Lmgi
Ci0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgPFdlYktpdC9XS0J1
bmRsZVBhZ2UuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
Lmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3MgU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1UZXN0IDogcHVibGljIEluamVjdGVkQnVuZGxlVGVzdCB7Ci1wdWJsaWM6
Ci0gICAgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0KGNvbnN0IHN0ZDo6c3RyaW5n
JiBpZGVudGlmaWVyKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwotfTsKLQotc3RhdGljIEluamVjdGVk
QnVuZGxlVGVzdDo6UmVnaXN0ZXI8U2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0PiBy
ZWdpc3RyYXIoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCIpOwotCi1zdGF0aWMg
Ym9vbCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIFdLVHlwZVJlZiogdXNlckRh
dGEsIGNvbnN0IHZvaWQqKQotewotICAgIC8vIFRoZSBpdGVtIHNob3VsZCBiZSBpbiB0aGUgcGFn
ZSBjYWNoZQotICAgIGlmIChXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0luUGFnZUNhY2hl
KGl0ZW0pKQotICAgICAgICAqdXNlckRhdGEgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zygic2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayBjYWxsZWQgYXMgZXhwZWN0
ZWQiKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbVRlc3Q6OlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdChjb25zdCBzdGQ6OnN0
cmluZyYgaWRlbnRpZmllcikKLSAgICA6IEluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQot
ewotfQotCi12b2lkIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdDo6ZGlkQ3JlYXRl
UGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoteyAgICAKLSAg
ICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMSBwYWdlTG9hZGVyQ2xpZW50OwotICAgIG1lbXNl
dCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQpKTsKLSAgICAK
LSAgICBwYWdlTG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgcGFnZUxvYWRlckNs
aWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgIHBhZ2VMb2FkZXJDbGllbnQuc2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNh
bGxiYWNrOwotICAgIAotICAgIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwg
JnBhZ2VMb2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKLQotI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Jlc3BvbnNpdmVuZXNzVGltZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCShyZXZpc2lvbiAyMzUx
MzgpCShmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwOjIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQor
CisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZp
ZXcuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBkaWRGaW5p
c2hMb2FkIHsgZmFsc2UgfTsKK3N0YXRpYyBib29sIGRpZEJlY29tZVVucmVzcG9uc2l2ZSB7IGZh
bHNlIH07CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgZGlkRmluaXNoTG9hZCA9
IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV0tQ
YWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEJlY29tZVVucmVzcG9uc2l2ZSA9
IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBh
Z2UpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNl
dCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJD
bGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZv
ckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC5wcm9jZXNz
RGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsKKwor
ICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsK
K30KKworVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJTaG91bGROb3RGaXJlQWZ0ZXJU
ZWFyRG93bikKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRX
SywgV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIC8vIFRoZSB0d28gdmlld3MgbmVlZCB0byBzaGFy
ZSB0aGUgc2FtZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgV0tDb250ZXh0U2V0TWF4aW11bU51
bWJlck9mUHJvY2Vzc2VzKGNvbnRleHQuZ2V0KCksIDEpOworCisgICAgUGxhdGZvcm1XZWJWaWV3
IHdlYlZpZXcxKGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmll
dzEucGFnZSgpKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldzEucGFnZSgpLCBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Cisg
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKworICAgIEVYUEVDVF9GQUxTRShkaWRCZWNv
bWVVbnJlc3BvbnNpdmUpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcyKGNvbnRleHQu
Z2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldzIucGFnZSgpKTsKKworICAg
IGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcyLnBhZ2Uo
KSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSku
Z2V0KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisKKyAgICBFWFBFQ1RfRkFM
U0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKKworICAgIC8vIENhbGwgc3RvcExvYWRpbmcoKSBh
bmQgY2xvc2UoKSBvbiB0aGUgZmlyc3QgcGFnZSBpbiBxdWljayBzdWNjZXNzaW9uLgorICAgIFdL
UGFnZVN0b3BMb2FkaW5nKHdlYlZpZXcxLnBhZ2UoKSk7CisgICAgV0tQYWdlQ2xvc2Uod2ViVmll
dzEucGFnZSgpKTsKKworICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBoZXJlIGJlY2F1c2UgaXQgdGFr
ZXMgMyBzZWNvbmRzIGZvciBhIHByb2Nlc3MgdG8gYmUgcmVjb2duaXplZCBhcyB1bnJlc3BvbnNp
dmUuCisgICAgVXRpbDo6c2xlZXAoNCk7CisKKyAgICAvLyBXZSBzaG91bGQgbm90IHJlcG9ydCB0
aGUgc2Vjb25kIHBhZ2Ugc2hhcmluZyB0aGUgc2FtZSBwcm9jZXNzIGFzIHVucmVzcG9uc2l2ZS4K
KyAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIu
bW0JKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNjQgKzI1
LDY2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0hBVkVfQ19TUEkKKyNpZiBX
S19BUElfRU5BQkxFRAogCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2lt
cG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5p
c2hMb2FkIHsgZmFsc2UgfTsKIHN0YXRpYyBib29sIGRpZEJlY29tZVVucmVzcG9uc2l2ZSB7IGZh
bHNlIH07CiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCitAaW50ZXJmYWNlIFJlc3BvbnNpdmVu
ZXNzVGltZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQK
KyAgICAKK0BpbXBsZW1lbnRhdGlvbiBSZXNwb25zaXZlbmVzc1RpbWVyRGVsZWdhdGUKKworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKICAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKIH0K
IAotc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXS1BhZ2VSZWYgcGFn
ZSwgY29uc3Qgdm9pZCopCistICh2b2lkKV93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVz
cG9uc2l2ZTooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIGRpZEJlY29tZVVucmVzcG9uc2l2
ZSA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVm
IHBhZ2UpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50OwotICAgIG1l
bXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7Ci0KLSAgICBsb2Fk
ZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9h
ZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC5wcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsK
K0BlbmQKIAotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVu
dC5iYXNlKTsKLX0KK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXQsIFJl
c3BvbnNpdmVuZXNzVGltZXJTaG91bGROb3RGaXJlQWZ0ZXJUZWFyRG93bikKIHsKLSAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkp
OwotICAgIC8vIFRoZSB0d28gdmlld3MgbmVlZCB0byBzaGFyZSB0aGUgc2FtZSBXZWJDb250ZW50
IHByb2Nlc3MuCi0gICAgV0tDb250ZXh0U2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKGNvbnRl
eHQuZ2V0KCksIDEpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcxKGNvbnRleHQuZ2V0
KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldzEucGFnZSgpKTsKLQotICAgIFdL
UGFnZUxvYWRVUkwod2ViVmlldzEucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJl
c291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gbmV3XSk7
CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFtwcm9jZXNzUG9vbCBfc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzOjFdOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtSZXNwb25zaXZlbmVzc1RpbWVyRGVsZWdhdGUgbmV3XSk7
CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29s
LmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldzEgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAg
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIEVYUEVDVF9GQUxTRShkaWRCZWNv
bWVVbnJlc3BvbnNpdmUpOwogCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcyKGNvbnRleHQu
Z2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldzIucGFnZSgpKTsKKyAgICBh
dXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBbd2ViVmlldzIgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAogICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZp
ZXcyLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwg
Imh0bWwiKSkuZ2V0KCkpOworICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwogCiAgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29t
ZVVucmVzcG9uc2l2ZSk7CiAKICAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkg
b24gdGhlIGZpcnN0IHBhZ2UgaW4gcXVpY2sgc3VjY2Vzc2lvbi4KLSAgICBXS1BhZ2VTdG9wTG9h
ZGluZyh3ZWJWaWV3MS5wYWdlKCkpOwotICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7
CisgICAgW3dlYlZpZXcxIHN0b3BMb2FkaW5nXTsKKyAgICBbd2ViVmlldzEgX2Nsb3NlXTsKIAog
ICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBoZXJlIGJlY2F1c2UgaXQgdGFrZXMgMyBzZWNvbmRzIGZv
ciBhIHByb2Nlc3MgdG8gYmUgcmVjb2duaXplZCBhcyB1bnJlc3BvbnNpdmUuCiAgICAgVXRpbDo6
c2xlZXAoNCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
c3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250
RmlyZUVhcmx5Lm1tCShyZXZpc2lvbiAyMzUxMzgpCShmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwOjIzNTEz
OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5l
c3NUaW1lckRvZXNudEZpcmVFYXJseS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkK
KworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJW
aWV3LmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZGlkRmlu
aXNoTG9hZDsKK3N0YXRpYyBib29sIGRpZEJlY29tZVVucmVzcG9uc2l2ZTsKK3N0YXRpYyBib29s
IGRpZEJyaWVmbHlQYXVzZTsKKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBl
UmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRCcmllZmx5UGF1c2UgPSB0cnVlOworICAgIEVY
UEVDVF9XS19TVFJFUSgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUpOworfQorCitzdGF0
aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5
cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQorCitz
dGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwgY29uc3Qg
dm9pZCopCit7CisgICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsKK30KKworc3RhdGlj
IHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCit7Cisg
ICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudDsK
KyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0ZWRCdW5k
bGVDbGllbnQpKTsKKworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKworICAgIFdLQ29u
dGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRsZUNsaWVu
dC5iYXNlKTsKK30KKworc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYg
cGFnZSkKK3sKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKworICAgIGxvYWRl
ckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CisgICAgbG9hZGVyQ2xpZW50LnByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOwor
CisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2Up
OworfQorCitURVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseSkK
K3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6
OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlJlc3BvbnNpdmVuZXNzVGltZXJE
b2VzbnRGaXJlRWFybHlUZXN0IikpOworICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRl
eHQuZ2V0KCkpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1BhZ2VM
b2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNl
KCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2Fk
KTsKKworICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250ZXh0Lmdl
dCgpLCBVdGlsOjp0b1dLKCJCcmllZmx5UGF1c2UiKS5nZXQoKSwgMCk7CisKKyAgICAvLyBQcmVz
c2luZyBhIGtleSBvbiB0aGUga2V5Ym9hcmQgc2hvdWxkIHN0YXJ0IHRoZSByZXNwb25zaXZlbmVz
cyB0aW1lci4gU2luY2UgdGhlIHdlYiBwcm9jZXNzCisgICAgLy8gaXMgZ29pbmcgdG8gcGF1c2Ug
YmVmb3JlIGl0IHJlY2VpdmVzIHRoaXMga2V5cHJlc3MsIGl0IHNob3VsZCB0YWtlIGEgbGl0dGxl
IHdoaWxlIHRvIHJlc3BvbmQKKyAgICAvLyAoYnV0IG5vdCBzbyBsb25nIHRoYXQgdGhlIHJlc3Bv
bnNpdmVuZXNzIHRpbWVyIGZpcmVzKS4KKyAgICB3ZWJWaWV3LnNpbXVsYXRlU3BhY2ViYXJLZXlQ
cmVzcygpOworCisgICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOworCisgICAgRVhQRUNU
X0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25z
aXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCShyZXZpc2lvbiAyMzUxMzgpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMiBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgUExBVEZPUk0oTUFDKQog
CiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZp
ZXcuaCIKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworI2luY2x1ZGUgIlRlc3RXS1dlYlZp
ZXcuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlz
aExvYWQ7CiBzdGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmU7CkBAIC00MiwxNiArNDIs
NiBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlCiAgICAgRVhQRUNU
X1dLX1NUUkVRKCJEaWRCcmllZmx5UGF1c2UiLCBtZXNzYWdlTmFtZSk7CiB9CiAKLXN0YXRpYyB2
b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJl
ZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Ci19Ci0KLXN0YXRp
YyB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV0tQYWdlUmVmLCBjb25zdCB2b2lk
KikKLXsKLSAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwotfQotCiBzdGF0aWMgdm9p
ZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCkKIHsKICAgICBX
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYwIGluamVjdGVkQnVuZGxlQ2xpZW50OwpAQCAt
NjMsMjcgKzUzLDM3IEBAIHN0YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ28K
ICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LCAmaW5qZWN0ZWRC
dW5kbGVDbGllbnQuYmFzZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQo
V0tQYWdlUmVmIHBhZ2UpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50
OwotICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CitA
aW50ZXJmYWNlIFJlc3BvbnNpdmVuZXNzRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBSZXNwb25zaXZlbmVzc0RlbGVnYXRl
CiAKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBsb2FkZXJDbGllbnQu
ZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRl
ckNsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZTsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5p
c2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgZGlkRmluaXNo
TG9hZCA9IHRydWU7Cit9CiAKLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZs
b2FkZXJDbGllbnQuYmFzZSk7CistICh2b2lkKV93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZTooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGRpZEJlY29tZVVucmVzcG9u
c2l2ZSA9IHRydWU7CiB9CiAKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCiBU
RVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseSkKIHsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHlUZXN0IikpOwogICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCkp
OwogCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7Ci0gICAgc2V0
UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Jlc3BvbnNpdmVuZXNzRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0
aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0
aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAKICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSygiQnJpZWZseVBhdXNlIikuZ2V0
KCksIDApOwpAQCAtOTEsNyArOTEsNyBAQCBURVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1l
ckRvZXNudEZpCiAgICAgLy8gUHJlc3NpbmcgYSBrZXkgb24gdGhlIGtleWJvYXJkIHNob3VsZCBz
dGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNpbmNlIHRoZSB3ZWIgcHJvY2VzcwogICAg
IC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCByZWNlaXZlcyB0aGlzIGtleXByZXNzLCBp
dCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byByZXNwb25kCiAgICAgLy8gKGJ1dCBub3Qg
c28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBmaXJlcykuCi0gICAgd2ViVmll
dy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKKyAgICBbd2ViVmlldyB0eXBlQ2hhcmFjdGVy
OicgJ107CiAKICAgICBVdGlsOjpydW4oJmRpZEJyaWVmbHlQYXVzZSk7CiAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhv
dXROYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tCShyZXZp
c2lvbiAyMzUxMzgpCShmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3Rv
cmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHA6MjM1MTM4KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbmNsdWRlICJK
YXZhU2NyaXB0VGVzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPFdlYktp
dC9XS1BhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLU2Vzc2lvblN0YXRlUmVmLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9h
ZDsKK3N0YXRpYyBib29sIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdDsKKworc3RhdGljIHZvaWQg
ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkKikKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZv
aWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Rm9yUGFnZShXS1BhZ2VSZWYsIFdLQmFja0Zvcndh
cmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQqKQoreworICAg
IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBh
Z2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50
VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBs
b2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1l
OworICAgIGxvYWRlckNsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QgPSBkaWRDaGFuZ2VC
YWNrRm9yd2FyZExpc3RGb3JQYWdlOworCisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChw
YWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tEYXRh
UmVmPiBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAg
IFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQpOworICAgIHNldFBhZ2VMb2FkZXJDbGll
bnQod2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwg
YWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0
KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgZGlkRmluaXNoTG9hZCA9
IGZhbHNlOworCisgICAgYXV0byBzZXNzaW9uU3RhdGUgPSBhZG9wdFdLKHN0YXRpY19jYXN0PFdL
U2Vzc2lvblN0YXRlUmVmPihXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKHdlYlZpZXcucGFnZSgpLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigxKSwgbnVsbHB0cikpKTsKKyAgICByZXR1cm4gYWRvcHRX
SyhXS1Nlc3Npb25TdGF0ZUNvcHlEYXRhKHNlc3Npb25TdGF0ZS5nZXQoKSkpOworfQorCitURVNU
KFdlYktpdCwgUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKQoreworICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUo
KSk7CisKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKKyAgICBz
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
RGF0YVJlZj4gZGF0YSA9IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoY29udGV4dC5nZXQoKSk7Cisg
ICAgRVhQRUNUX05PVF9OVUxMKGRhdGEpOworCisgICAgYXV0byBzZXNzaW9uU3RhdGUgPSBhZG9w
dFdLKFdLU2Vzc2lvblN0YXRlQ3JlYXRlRnJvbURhdGEoZGF0YS5nZXQoKSkpOworICAgIFdLUGFn
ZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24od2ViVmlldy5wYWdlKCks
IHNlc3Npb25TdGF0ZS5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gY29tbWl0dGVkVVJMID0gYWRv
cHRXSyhXS1BhZ2VDb3B5Q29tbWl0dGVkVVJMKHdlYlZpZXcucGFnZSgpKSk7CisgICAgRVhQRUNU
X05VTEwoY29tbWl0dGVkVVJMLmdldCgpKTsKKworICAgIGF1dG8gYmFja0ZvcndhcmRMaXN0ID0g
V0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGN1cnJl
bnRJdGVtID0gV0tCYWNrRm9yd2FyZExpc3RHZXRDdXJyZW50SXRlbShiYWNrRm9yd2FyZExpc3Qp
OworICAgIGF1dG8gY3VycmVudEl0ZW1VUkwgPSBhZG9wdFdLKFdLQmFja0ZvcndhcmRMaXN0SXRl
bUNvcHlVUkwoY3VycmVudEl0ZW0pKTsKKyAgICBhdXRvIGV4cGVjdGVkVVJMID0gYWRvcHRXSyhV
dGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CisgICAgRVhQRUNU
X05PVF9OVUxMKGV4cGVjdGVkVVJMKTsKKyAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoY3Vy
cmVudEl0ZW1VUkwuZ2V0KCksIGV4cGVjdGVkVVJMLmdldCgpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3Rv
cmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjM1MTM4KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRl
V2l0aG91dE5hdmlnYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgV0tfSEFWRV9DX1NQSQorI2lmIFdLX0FQSV9FTkFC
TEVECiAKICNpbmNsdWRlICJKYXZhU2NyaXB0VGVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCkBAIC0zMyw2NiArMzMsNjMgQEAKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5jbHVk
ZSA8V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTZXNzaW9uU3Rh
dGVSZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworQGludGVyZmFj
ZSBXS1dlYlZpZXcgKCkKKy0gKFdLUGFnZVJlZilfcGFnZUZvclRlc3Rpbmc7CitAZW5kCiAKIHN0
YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CiBzdGF0aWMgYm9vbCBkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3Q7CisgICAgCitAaW50ZXJmYWNlIFNlc3Npb25TdGF0ZURlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2Vzc2lvblN0
YXRlRGVsZWdhdGUKIAotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKilu
YXZpZ2F0aW9uCiB7CiAgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk
IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkKikKKy0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYmFja0ZvcndhcmRMaXN0SXRlbUFkZGVkOihX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtQWRkZWQgcmVtb3ZlZDooTlNBcnJheTxXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0gKj4gKilpdGVtc1JlbW92ZWQKIHsKICAgICBkaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdL
UGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsK
LSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworQGVu
ZAogCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50
LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2Fk
ZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0Rm9yUGFnZTsKLQotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRl
ckNsaWVudC5iYXNlKTsKLX0KK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIFdL
UmV0YWluUHRyPFdLRGF0YVJlZj4gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShXS0NvbnRleHRSZWYg
Y29udGV4dCkKK3N0YXRpYyBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGNyZWF0ZVNlc3Npb25TdGF0
ZURhdGEoKQogewotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQpOwotICAgIHNl
dFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3
ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxl
IiwgImh0bWwiKSkuZ2V0KCkpOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtTZXNzaW9u
U3RhdGVEZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CisgICAgW3ZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
KyAgICBbdmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CiAgICAg
VXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CiAK
LSAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tTZXNzaW9uU3Rh
dGVSZWY+KFdLUGFnZUNvcHlTZXNzaW9uU3RhdGUod2ViVmlldy5wYWdlKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KDEpLCBudWxscHRyKSkpOwotICAgIHJldHVybiBhZG9wdFdLKFdLU2Vzc2lv
blN0YXRlQ29weURhdGEoc2Vzc2lvblN0YXRlLmdldCgpKSk7CisgICAgTlNEYXRhICpkYXRhID0g
W3ZpZXcgX3Nlc3Npb25TdGF0ZURhdGFdOworICAgIHJldHVybiBhZG9wdFdLKFdLRGF0YUNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YS5ieXRlcyksIGRhdGEubGVu
Z3RoKSk7CiB9CiAKIFRFU1QoV2ViS2l0LCBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmln
YXRpb24pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ss
IFdLQ29udGV4dENyZWF0ZSgpKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRl
eHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwotCi0g
ICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShj
b250ZXh0LmdldCgpKTsKKyAgICBhdXRvIGRhdGEgPSBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKCk7
CiAgICAgRVhQRUNUX05PVF9OVUxMKGRhdGEpOwogCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOwogICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhXS1Nl
c3Npb25TdGF0ZUNyZWF0ZUZyb21EYXRhKGRhdGEuZ2V0KCkpKTsKLSAgICBXS1BhZ2VSZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKHdlYlZpZXcucGFnZSgpLCBzZXNzaW9u
U3RhdGUuZ2V0KCkpOworICAgIFdLUGFnZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24oW3dlYlZpZXcgX3BhZ2VGb3JUZXN0aW5nXSwgc2Vzc2lvblN0YXRlLmdldCgpKTsK
IAogICAgIFV0aWw6OnJ1bigmZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KTsKIAotICAgIFdLUmV0
YWluUHRyPFdLVVJMUmVmPiBjb21taXR0ZWRVUkwgPSBhZG9wdFdLKFdLUGFnZUNvcHlDb21taXR0
ZWRVUkwod2ViVmlldy5wYWdlKCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gY29tbWl0
dGVkVVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5Q29tbWl0dGVkVVJMKFt3ZWJWaWV3IF9wYWdlRm9y
VGVzdGluZ10pKTsKICAgICBFWFBFQ1RfTlVMTChjb21taXR0ZWRVUkwuZ2V0KCkpOwogCi0gICAg
YXV0byBiYWNrRm9yd2FyZExpc3QgPSBXS1BhZ2VHZXRCYWNrRm9yd2FyZExpc3Qod2ViVmlldy5w
YWdlKCkpOworICAgIGF1dG8gYmFja0ZvcndhcmRMaXN0ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRM
aXN0KFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pOwogICAgIGF1dG8gY3VycmVudEl0ZW0gPSBX
S0JhY2tGb3J3YXJkTGlzdEdldEN1cnJlbnRJdGVtKGJhY2tGb3J3YXJkTGlzdCk7CiAgICAgYXV0
byBjdXJyZW50SXRlbVVSTCA9IGFkb3B0V0soV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTChj
dXJyZW50SXRlbSkpOwogICAgIGF1dG8gZXhwZWN0ZWRVUkwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0
ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbQkocmV2aXNpb24gMjM1MTM4KQkoZnJvbSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHA6MjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9D
X1NQSQorCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBmaW5pc2hl
ZCA9IGZhbHNlOworc3RhdGljIGJvb2wgcmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxiYWNr
cyA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIC8vIE9u
bHkgbWFyayBmaW5pc2hlZCB3aGVuIHRoZSBtYWluIGZyYW1lIGxvYWRzCisgICAgaWYgKCFXS0Zy
YW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBmaW5pc2hlZCA9
IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXS1Bh
Z2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKikKK3sKKyAgICBpZiAoV0tHZXRUeXBlSUQodXNlckRhdGEpID09IFdLU3RyaW5nR2V0
VHlwZUlEKCkpIHsKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoKFdL
U3RyaW5nUmVmKXVzZXJEYXRhLCAic2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFj
ayBjYWxsZWQgYXMgZXhwZWN0ZWQiKSkKKyAgICAgICAgICAgIHJlY2VpdmVkUHJvcGVyQmFja0Zv
cndhcmRDYWxsYmFja3MgPSB0cnVlOworICAgIH0KKworICAgIGZpbmlzaGVkID0gdHJ1ZTsKK30K
Kworc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKK3sKKyAg
ICBXS1BhZ2VMb2FkZXJDbGllbnRWMSBsb2FkZXJDbGllbnQ7CisgICAgbWVtc2V0KCZsb2FkZXJD
bGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKworICAgIGxvYWRlckNsaWVudC5iYXNl
LnZlcnNpb24gPSAxOworICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBk
aWRGaW5pc2hMb2FkRm9yRnJhbWU7CisgICAgbG9hZGVyQ2xpZW50LndpbGxHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbSA9IHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTsKKworICAgIFdLUGFnZVNl
dFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworVEVTVChX
ZWJLaXQsIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKQoreworICAgIFdLUmV0YWluUHRy
PFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvcklu
amVjdGVkQnVuZGxlVGVzdCgiU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0IikpOwor
ICAgIC8vIEVuYWJsZSB0aGUgcGFnZSBjYWNoZSBzbyB3ZSBjYW4gdGVzdCB0aGUgV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtSXNJblBhZ2VDYWNoZSBBUEkKKyAgICBXS0NvbnRleHRTZXRDYWNo
ZU1vZGVsKGNvbnRleHQuZ2V0KCksIGtXS0NhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIpOworCisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxv
YWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcu
cGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRt
bCIpKS5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgCisgICAgZmluaXNo
ZWQgPSBmYWxzZTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0
aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUtaWZyYW1lIiwgImh0bWwiKSkuZ2V0KCkp
OworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworCisgICAgZmluaXNoZWQgPSBmYWxzZTsKKyAg
ICBXS1BhZ2VHb0JhY2sod2ViVmlldy5wYWdlKCkpOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQp
OworICAgIAorICAgIEVYUEVDVF9FUShyZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tz
LCB0cnVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbQkocmV2aXNpb24g
MjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNzEgKzI1LDUx
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0hBVkVfQ19TUEkKKyNpZiBXS19B
UElfRU5BQkxFRAogCiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlICJUZXN0LmgiCi0KICNpbmNsdWRlIDxXZWJLaXQv
V0tTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogc3RhdGljIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLXN0YXRpYyBib29s
IHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MgPSBmYWxzZTsKIAotc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICAvLyBPbmx5IG1hcmsgZmluaXNoZWQgd2hlbiB0
aGUgbWFpbiBmcmFtZSBsb2FkcwotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkK
LSAgICAgICAgcmV0dXJuOworQGludGVyZmFjZSBCYWNrRm9yd2FyZENsaWVudCA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKIAotICAgIGZpbmlzaGVkID0gdHJ1ZTsKLX0K
K0BpbXBsZW1lbnRhdGlvbiBCYWNrRm9yd2FyZENsaWVudAogCi1zdGF0aWMgdm9pZCB3aWxsR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbgogewotICAgIGlmIChXS0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tTdHJpbmdHZXRUeXBl
SUQoKSkgewotICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZygoV0tTdHJp
bmdSZWYpdXNlckRhdGEsICJzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrIGNh
bGxlZCBhcyBleHBlY3RlZCIpKQotICAgICAgICAgICAgcmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2Fy
ZENhbGxiYWNrcyA9IHRydWU7Ci0gICAgfQotCiAgICAgZmluaXNoZWQgPSB0cnVlOwogfQogCi1z
dGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQorLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06
KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0gaW5QYWdlQ2FjaGU6KEJPT0wpaW5QYWdlQ2Fj
aGUKIHsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMSBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0
KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKyAgICBmaW5pc2hlZCA9
IHRydWU7Cit9CiAKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKLSAgICBsb2Fk
ZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwot
ICAgIGxvYWRlckNsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSB3aWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW07CitAZW5kCiAKLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIFRFU1QoV2ViS2l0LCBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKIHsKLSAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
VGVzdCIpKTsKLSAgICAvLyBFbmFibGUgdGhlIHBhZ2UgY2FjaGUgc28gd2UgY2FuIHRlc3QgdGhl
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUlzSW5QYWdlQ2FjaGUgQVBJCi0gICAgV0tDb250
ZXh0U2V0Q2FjaGVNb2RlbChjb250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93
c2VyKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAg
IHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtCYWNrRm9yd2FyZENsaWVudCBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCks
IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdl
dCgpKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XV07CiAgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CiAgICAgCiAgICAgZmluaXNoZWQgPSBmYWxz
ZTsKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0
ZVVSTEZvclJlc291cmNlKCJzaW1wbGUtaWZyYW1lIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZS1pZnJhbWUiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CiAg
ICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CiAKICAgICBmaW5pc2hlZCA9IGZhbHNlOwotICAgIFdL
UGFnZUdvQmFjayh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgW3dlYlZpZXcgZ29CYWNrXTsKICAgICBV
dGlsOjpydW4oJmZpbmlzaGVkKTsKLSAgICAKLSAgICBFWFBFQ1RfRVEocmVjZWl2ZWRQcm9wZXJC
YWNrRm9yd2FyZENhbGxiYWNrcywgdHJ1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347730</attachid>
            <date>2018-08-21 16:57:40 -0700</date>
            <delta_ts>2018-08-21 17:20:19 -0700</delta_ts>
            <desc>patch that applies</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>75682</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNTE0NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE4LTA4LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVHJhbnNsYXRlIDQgdGVzdHMgdXNpbmcgV0tQYWdlTG9hZGVy
Q2xpZW50IHRvIE9iakMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXkgdXNlIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUsIGRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdCwgb3Igd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLgorICAgICAgICBS
YXRoZXIgdGhhbiBpbnRyb2R1Y2UgdGhlc2UgdG8gV0tQYWdlTmF2aWdhdGlvbkNsaWVudCwgSSBq
dXN0IHRyYW5zbGF0ZWQgdGhlIHRlc3RzIHRvIHVzZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSwgd2hp
Y2ggYWxyZWFkeSBoYXZlIGVxdWl2YWxlbnQgY2FsbGJhY2tzLgorICAgICAgICB3aWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gaGFkIHVzZXJEYXRhIGZyb20gdGhlIEluamVjdGVkQnVuZGxlLCBi
dXQgbm9ib2R5IHdhcyB1c2luZyBpdCBzbyBJIGRpZCBub3QgYWRkIHRoYXQgdG8gdGhlIE9iakMg
U1BJLCBzbyBJIGRvbid0IHRlc3QgdGhhdCB1bnVzZWQKKyAgICAgICAgYnVuZGxlIGZ1bmN0aW9u
YWxpdHkgYW55IG1vcmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0
b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbTog
Q29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHAuCisgICAgICAgICgtW1Jlc3BvbnNpdmVuZXNzVGltZXJEZWxlZ2F0ZSB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1Jlc3BvbnNpdmVuZXNzVGlt
ZXJEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOiBEZWxldGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwLgor
ICAgICAgICAoLVtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdh
dGlvbjpdKToKKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZSBfd2ViVmlld1dlYlBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1t
OiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vz
c2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwLgorICAgICAgICAoLVtTZXNzaW9uU3RhdGVE
ZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1Nlc3Np
b25TdGF0ZURlbGVnYXRlIF93ZWJWaWV3OmJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDpyZW1vdmVk
Ol0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlU2Vzc2lvblN0YXRlRGF0YSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
bW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcC4KKyAgICAgICAgKC1bQmFja0ZvcndhcmRDbGllbnQg
d2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtCYWNrRm9yd2FyZENs
aWVudCBfd2ViVmlldzp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06aW5QYWdlQ2FjaGU6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisKIDIwMTgtMDgtMjEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xd
IENhbGwgZXhwcmVzc2lvbnMgc2hvdWxkbid0IGhhdmUgdHlwZSBhcmd1bWVudHMKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzUxNDApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjIzLDcgKzIyMyw2IEBACiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2Nh
bFN0b3JhZ2VDbGVhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTZBODkyMUQyRjFCRUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAq
LzsgfTsKIAkJNTFFNkE4OTYxRDJGMUNBNzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFNkE4OTUxRDJGMUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi87IH07
CiAJCTUxRUIxMjk0MUZERjA1MjUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVCMTI5MzFGREYw
NTA1MDBBNUExQkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1tICovOyB9OwotCQk1MUZDRjdBMTE1
MzRCMkEwMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk3
MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUu
Y3BwICovOyB9OwogCQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIw
QkNGNEExNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJ
NTI0QkJDOUUxOURGNzJDMDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQzlCMTlE
RjM3MTQwMDJGMUFGMSAvKiBmaWxlLXdpdGgtdmlkZW8uaHRtbCAqLzsgfTsKIAkJNTI0QkJDQTEx
OUUzMEM3NzAwMkYxQUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQ0EwMTlFMzBDNjMwMDJGMUFGMSAvKiB0ZXN0
Lm1wNCAqLzsgfTsKQEAgLTI5MCw2ICsyODksMTAgQEAKIAkJNUNCM0NFMzkxRkExNjk3RjAwQzNB
MkQ2IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzQ0UzODFGQTE2OTE3MDBDM0EyRDYgLyogV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbSAqLzsgfTsKIAkJNUNCNDBCNEUxRjRCOThEMzAwN0RDN0I5IC8q
IFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
NUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjVCM0JEMUZG
QzUxN0UwMEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi87IH07CisJCTVD
REMzMDU5MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
QzMwNTUyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkubW0gKi87IH07CisJCTVDREMzMDVBMjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXNwb25zaXZlbmVz
c1RpbWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNEQzMwNTYyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07
CisJCTVDREMzMDVCMjEyQ0Q0REQwMDIxRkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
REMzMDU3MjEyQ0Q0REQwMDIxRkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5t
bSAqLzsgfTsKKwkJNUNEQzMwNUMyMTJDRDRERDAwMjFGQjY2IC8qIFJlc3RvcmVTZXNzaW9uU3Rh
dGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDREMzMDU4MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gKi87IH07CiAJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUz
QiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSAqLzsgfTsKIAkJNUNFQUI1RTExRkE5MzlGNDAwQTc3RkFBIC8q
IF9XS0lucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5t
bSAqLzsgfTsKIAkJNUU0QjFEMkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0
QjFEMkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tICovOyB9OwpA
QCAtNTI5LDEwICs1MzIsOCBAQAogCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2Fk
UGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEEzQUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNo
LmNwcCAqLzsgfTsKIAkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQ
YWdpbmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5h
dGVkV2ViVmlldy5jcHAgKi87IH07CiAJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNp
emVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcCAqLzsgfTsKLQkJN0NDRTdGMTAxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovOyB9OwogCQk3Q0NFN0YxMTFBNDExQUU2
MDA0NDdDNEMgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4MjEyRkNB
NkFBMDBEMkMxMjkgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAg
Ki87IH07CiAJCTdDQ0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZp
b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NjQwQjU0MTc4NzVERkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLzsg
fTsKLQkJN0NDRTdGMTMxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRkNGNzk4MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAgKi87IH07CiAJCTdDQ0U3RjE1MUE0MTFBRTYwMDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9s
bGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovOyB9Owog
CQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVybWluYXRlVHdpY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNzJGNDcxNzNFQjIxNDAw
NjM2MkYwIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCAqLzsgfTsKIAkJN0NDRTdGMTcxQTQxMUFFNjAw
NDQ3QzRDIC8qIFVzZXJNZWRpYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEY0QjE5QUY3QkQ2MDAyRUJBQjUgLyogVXNlck1lZGlhLmNwcCAq
LzsgfTsKQEAgLTU2OSw3ICs1NzAsNiBAQAogCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyog
QXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi87IH07CiAJCTgzNDlEM0MyMURCOTZE
REUwMDRBOUY2NSAvKiBDb250ZXh0TWVudURvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzExREI5NkREQTAwNEE5RjY1IC8qIENv
bnRleHRNZW51RG93bmxvYWQubW0gKi87IH07CiAJCTgzNDlEM0M0MURCOTcyOEUwMDRBOUY2NSAv
KiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzMxREI5NzI0RjAwNEE5RjY1
IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRtbCAqLzsgfTsKLQkJODM1Q0Y5Njcx
RDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzVDRjk2
NjFEMjVGQ0Q2MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
LmNwcCAqLzsgfTsKIAkJODM2MUYxNzgxRTYxMEI0RTAwNzU5QjI1IC8qIGxpbmstd2l0aC1kb3du
bG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MUYxNzcxRTYxMEIyMTAwNzU5QjI1IC8q
IGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgKi87IH07CiAJ
CTgzNzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3JlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NzlDMzcxRjgyRkVCMDAw
N0NEQThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTgzN0EzNUYxMUQ5QTFFN0Qw
MDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTM1RjAxRDlBMUU2NDAwNjYz
QzU3IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLzsgfTsKQEAgLTU3Nyw3ICs1Nzcs
NiBAQAogCQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNC
QUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLzsg
fTsKIAkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQkM1QUJGMjBFNkMwRDMwMEY1ODc5RiAvKiBTdGFydExvYWRJbkRpZEZhaWxQcm92aXNp
b25hbExvYWQubW0gKi87IH07CiAJCTgzREI3OTY5MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RC
Nzk2NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovOyB9OwotCQk4M0RFMTM0RDFF
RjFDNTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RFMTM0QzFFRjFDNEZFMDBDMUIzNTUg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07CiAJCTgzRjIyQzY0MjBCMzU1RjgwMDM0
Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyMkM2MzIwQjM1NUVCMDAzNDI3N0UgLyogTm9Q
b2xpY3lEZWxlZ2F0ZVJlc3BvbnNlLm1tICovOyB9OwogCQk4QzEwQUY5ODIwNjQ2NzkyMDAxOEZE
OTAgLyogbG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk3MjA2NDY3ODMw
MDE4RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi87IH07CiAJ
CThDMTBBRjk5MjA2NDY3QTkwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk2MjA2
NDY3NzcwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSAqLzsgfTsKQEAgLTE1
MDQsOCArMTUwMyw2IEBACiAJCTUxRTkzMDE2MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRT
Y2FsZUZhY3Rvck5vdFplcm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJC
YXNpYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQkJCNEMxNTEzRDRFOTAw
ODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVVSTC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTFGQ0Y3OTcxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MUZDRjc5ODE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjBCQ0Y0QTE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXJjaGl2ZV9C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjBCQ0Y0QjE0MUVCMDlF
MDA5MzdFQTggLyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0
QkJDOUIxOURGMzcxNDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImZpbGUtd2l0aC12aWRlby5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1NzgsNiArMTU3NSwxMCBAQAogCQk1Q0IzQ0UzODFGQTE2OTE3MDBD
M0EyRDYgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlEZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCNUIzQkQxRkZDNTE3RTAwQzI3QkIw
IC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZy
YW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNEQzMwNTUyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25z
aXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0RDMzA1NjIxMkNENERDMDAyMUZCNjYgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGlt
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDREMzMDU3MjEyQ0Q0REQwMDIx
RkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0RDMzA1ODIxMkNENEREMDAyMUZCNjYg
LyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0UzNTREODFFNzBEOUMz
MDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lu
cHV0RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tJbnB1dERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTRCMUQy
QzFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgcGF0
aCA9IC4uL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2NzUsNyArMTY3Niw2IEBACiAJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAv
KiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ5RDNDMTFEQjk2RERBMDA0QTlGNjUg
LyogQ29udGV4dE1lbnVEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IENvbnRleHRNZW51RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNDlEM0MzMURCOTcyNEYwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0
cmlidXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRoLWRvd25s
b2FkLWF0dHJpYnV0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1Q0Y5
NjYxRDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0
ZS13aXRoLXNsYXNoZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLXdp
dGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM3NzlDMzcxRjgyRkVCMDAwN0NEQThBIC8qIFZpc2l0ZWRMaW5rU3Rv
cmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpdGVkTGlu
a1N0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBMzVGMDFEOUExRTY0
MDA2NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY4NCw3ICsxNjg0LDYgQEAKIAkJODNCQUVFOEMxRUY0NjI1NTAwRERF
ODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQzVBQkYyMEU2QzBEMzAwRjU4NzlGIC8qIFN0YXJ0TG9h
ZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1
IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzRjIyQzYzMjBCMzU1RUIwMDM0Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9u
c2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb1BvbGljeURl
bGVnYXRlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkQxOTk3
MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTMsNyArMTg5Miw2
IEBACiAJCUMwQURCRTdCMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0VGVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkgLyogUmVzdG9yZVNl
c3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8q
IHNpbXBsZS1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWZv
cm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwQkQ2NjlDMTMxRDNDRjcw
MEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEJENjY5RTEzMUQz
Q0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NU
aW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2luZ1NjYWxl
RmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0NTk4QjZG
MDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzgwLDEyICsyMzc4LDE2IEBACiAJ
CQkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1By
b3RvY29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNl
ckFjdGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAorCQkJCTVDREMzMDU2MjEyQ0Q0REMwMDIx
RkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tICovLAorCQkJCTVDREMzMDU1MjEyQ0Q0REMw
MDIxRkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tICovLAorCQkJ
CTVDREMzMDU4MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5Q
YW5lbC5tbSAqLywKIAkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0QWZ0
ZXJEb2N1bWVudExvYWQubW0gKi8sCiAJCQkJNUNBOTg1NTEyMTEzQ0I4QzAwNTdFQjZCIC8qIFNh
ZmVCcm93c2luZy5tbSAqLywKIAkJCQlDRTA5NDczNjIwNjMyMjNCMDAzQzlCQTAgLyogU2NoZW1l
UmVnaXN0cnkubW0gKi8sCiAJCQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VX
b3JrZXJCYXNpYy5tbSAqLywKIAkJCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogU2V0TWF4
aW11bVByZXdhcm1lZFByb2Nlc3NDb3VudC5tbSAqLywKKwkJCQk1Q0RDMzA1NzIxMkNENEREMDAy
MUZCNjYgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8sCiAJCQkJMzdCQ0E2
MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0Fj
dGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0
Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1t
ICovLApAQCAtMjkyMywxNiArMjkyNSwxMSBAQAogCQkJCThBM0FGOTNBMTZDOUVEMjcwMEQyNDhD
MSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgKi8sCiAJCQkJMkREN0QzQTkxNzgyMDVEMDAw
MjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLywKIAkJCQk4QTJD
NzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8sCi0J
CQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICov
LAogCQkJCTUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jh
c2gubW0gKi8sCi0JCQkJQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovLAogCQkJCUMwQkQ2NjlFMTMxRDNDRkYwMEUxOEYy
QSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgKi8sCiAJ
CQkJODNCNkRFNkUxRUU3NTIwRjAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwICov
LAogCQkJCUMwQURCRTgyMTJGQ0E2QUEwMEQyQzEyOSAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlQ29u
dGFpbmluZ0Zvcm1EYXRhLmNwcCAqLywKLQkJCQk4MzVDRjk2NjFEMjVGQ0Q2MDAxQTY1RDQgLyog
UmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQkyRDY0MEI1
NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8sCi0JCQkJ
NTFGQ0Y3OTgxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCAqLywKLQkJCQk1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCAqLywKIAkJCQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJG
MEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovLAogCQkJCTc2NzM0OTk3MTkzMDE2REMwMEU0
NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWQuY3BwICovLAog
CQkJCTc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQ
cm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLywKQEAgLTM5MTQsMTIgKzM5MTEsMTIgQEAKIAkJ
CQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZp
ZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEYxQTQxMUFFNjAwNDQ3QzRDIC8qIFJl
c2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDOEUxQTUxRjI2
QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLywK
LQkJCQk4M0RFMTM0RDFFRjFDNTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1Q0RDMzA1QTIxMkNENEREMDAyMUZCNjYgLyogUmVzcG9uc2l2
ZW5lc3NUaW1lci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkM0QzlFMjBFQUE0MEQwMDQ5NDVF
QSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKLQkJCQk3Q0NF
N0YxMDFBNDExQUU2MDA0NDdDNEMgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0RDMzA1OTIxMkNENEREMDAyMUZCNjYgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgz
QjZERTZGMUVFNzUyMjEwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RjExMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNUNGOTY3MUQy
NUZDRDYwMDFBNjVENCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUNEQzMwNUMyMTJDRDRERDAwMjFGQjY2IC8qIFJlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2RTgx
NkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBSZXN0b3JlU3RhdGVBZnRlclRlcm1pbmF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJFMTUxRjcxQjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRSZWN0
VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8q
IFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzkzOSw3ICszOTM2LDcgQEAKIAkJ
CQk3QzgzRTA1MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNzk5MTg4MUUxQzk5NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBMTc5OTE4QjFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVy
VGVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0NFN0YxMzFBNDExQUU2MDA0NDdDNEMgLyog
U2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNE
QzMwNUIyMTJDRDRERDAwMjFGQjY2IC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCQ0E2MUMxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzRTBDNTFEMEE2NTQ2MDBGRUJDRjMgLyogU2hyaW5rVG9GaXQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VDRDFBNDExQTdFMDA0NDdDNEMgLyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291
cmNlcyAqLywKQEAgLTQxNDIsNyArNDEzOSw2IEBACiAJCQkJQkM1NzVCRTAxMjZGNTkwRDAwNkYw
RjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU1QUQx
RDUxNzlGM0IzMDAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMEJENjY5RjEzMUQzQ0ZGMDBFMThGMkEgLyog
UmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTFGQ0Y3QTExNTM0QjJBMDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NjczNDk5RDE5MzBDNUJC
MDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGODFCMTQzMUY2MDAyOEE3QzUgLyogVGV4
dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzIyRDMxOTE0REM2OEI5MDBGRkIxREQgLyogVXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9u
c2l2ZW5lc3NUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZhbHNlIH07Ci1zdGF0aWMgYm9v
bCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBwcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKikKLXsK
LSAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBzZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVu
dFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxv
YWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAg
bG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFt
ZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0KLVRFU1QoV2ViS2l0LCBSZXNwb25zaXZl
bmVzc1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCi17Ci0gICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICAv
LyBUaGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNz
LgotICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgp
LCAxKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKLSAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2Fk
VVJMKHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgi
c2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7
Ci0KLSAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKLQotICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xp
ZW50KHdlYlZpZXcyLnBhZ2UoKSk7Ci0KLSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0gICAg
V0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9y
UmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaExvYWQpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Ci0K
LSAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkgb24gdGhlIGZpcnN0IHBhZ2Ug
aW4gcXVpY2sgc3VjY2Vzc2lvbi4KLSAgICBXS1BhZ2VTdG9wTG9hZGluZyh3ZWJWaWV3MS5wYWdl
KCkpOwotICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICAvLyBXZSBuZWVk
IHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNzIHRv
IGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgotICAgIFV0aWw6OnNsZWVwKDQpOwotCi0g
ICAgLy8gV2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhlIHNlY29uZCBwYWdlIHNoYXJpbmcgdGhlIHNh
bWUgcHJvY2VzcyBhcyB1bnJlc3BvbnNpdmUuCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVu
cmVzcG9uc2l2ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlm
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1Rp
bWVyRG9lc250RmlyZUVhcmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcAkocmV2
aXNpb24gMjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9u
c2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVf
Q19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIGJvb2wg
ZGlkRmluaXNoTG9hZDsKLXN0YXRpYyBib29sIGRpZEJlY29tZVVucmVzcG9uc2l2ZTsKLXN0YXRp
YyBib29sIGRpZEJyaWVmbHlQYXVzZTsKLQotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBkaWRCcmllZmx5UGF1c2UgPSB0cnVlOwot
ICAgIEVYUEVDVF9XS19TVFJFUSgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUpOwotfQot
Ci1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwot
fQotCi1zdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwg
Y29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsKLX0KLQot
c3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNs
aWVudDsKLSAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0
ZWRCdW5kbGVDbGllbnQpKTsKLQotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UudmVyc2lv
biA9IDA7Ci0gICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLQotICAg
IFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRs
ZUNsaWVudC5iYXNlKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0g
ICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAg
IGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50
LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlOwotCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50
LmJhc2UpOwotfQotCi1URVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVF
YXJseSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdL
KFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHlUZXN0IikpOwotICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KGNvbnRleHQuZ2V0KCkpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5n
ZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7Ci0KLSAgICBX
S1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJl
c291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2hMb2FkKTsKLQotICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250
ZXh0LmdldCgpLCBVdGlsOjp0b1dLKCJCcmllZmx5UGF1c2UiKS5nZXQoKSwgMCk7Ci0KLSAgICAv
LyBQcmVzc2luZyBhIGtleSBvbiB0aGUga2V5Ym9hcmQgc2hvdWxkIHN0YXJ0IHRoZSByZXNwb25z
aXZlbmVzcyB0aW1lci4gU2luY2UgdGhlIHdlYiBwcm9jZXNzCi0gICAgLy8gaXMgZ29pbmcgdG8g
cGF1c2UgYmVmb3JlIGl0IHJlY2VpdmVzIHRoaXMga2V5cHJlc3MsIGl0IHNob3VsZCB0YWtlIGEg
bGl0dGxlIHdoaWxlIHRvIHJlc3BvbmQKLSAgICAvLyAoYnV0IG5vdCBzbyBsb25nIHRoYXQgdGhl
IHJlc3BvbnNpdmVuZXNzIHRpbWVyIGZpcmVzKS4KLSAgICB3ZWJWaWV3LnNpbXVsYXRlU3BhY2Vi
YXJLZXlQcmVzcygpOwotCi0gICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOwotCi0gICAg
RVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3Rh
dGVXaXRob3V0TmF2aWdhdGlvbi5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlv
bi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIkphdmFTY3Jp
cHRUZXN0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLUGFn
ZVByaXZhdGUuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tTZXNzaW9uU3RhdGVSZWYuaD4KLQotbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwotc3Rh
dGljIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBkaWRD
aGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRl
ckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2Fk
ZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGll
bnQpKTsKLQotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNs
aWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAg
bG9hZGVyQ2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdEZvclBhZ2U7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZs
b2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0KLXN0YXRpYyBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGNy
ZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dCk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJW
aWV3LnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0g
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKLSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7
Ci0KLSAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tTZXNzaW9u
U3RhdGVSZWY+KFdLUGFnZUNvcHlTZXNzaW9uU3RhdGUod2ViVmlldy5wYWdlKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KDEpLCBudWxscHRyKSkpOwotICAgIHJldHVybiBhZG9wdFdLKFdLU2Vz
c2lvblN0YXRlQ29weURhdGEoc2Vzc2lvblN0YXRlLmdldCgpKSk7Ci19Ci0KLVRFU1QoV2ViS2l0
LCBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24pCi17Ci0gICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLQot
ICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VM
b2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVm
PiBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShjb250ZXh0LmdldCgpKTsKLSAgICBFWFBF
Q1RfTk9UX05VTEwoZGF0YSk7Ci0KLSAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tT
ZXNzaW9uU3RhdGVDcmVhdGVGcm9tRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lv
blN0YXRlLmdldCgpKTsKLQotICAgIFV0aWw6OnJ1bigmZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KTsKLQotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBjb21taXR0ZWRVUkwgPSBhZG9wdFdLKFdL
UGFnZUNvcHlDb21taXR0ZWRVUkwod2ViVmlldy5wYWdlKCkpKTsKLSAgICBFWFBFQ1RfTlVMTChj
b21taXR0ZWRVUkwuZ2V0KCkpOwotCi0gICAgYXV0byBiYWNrRm9yd2FyZExpc3QgPSBXS1BhZ2VH
ZXRCYWNrRm9yd2FyZExpc3Qod2ViVmlldy5wYWdlKCkpOwotICAgIGF1dG8gY3VycmVudEl0ZW0g
PSBXS0JhY2tGb3J3YXJkTGlzdEdldEN1cnJlbnRJdGVtKGJhY2tGb3J3YXJkTGlzdCk7Ci0gICAg
YXV0byBjdXJyZW50SXRlbVVSTCA9IGFkb3B0V0soV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVS
TChjdXJyZW50SXRlbSkpOwotICAgIGF1dG8gZXhwZWN0ZWRVUkwgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKLSAgICBFWFBFQ1RfTk9UX05V
TEwoZXhwZWN0ZWRVUkwpOwotICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChjdXJyZW50SXRl
bVVSTC5nZXQoKSwgZXhwZWN0ZWRVUkwuZ2V0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQotCi0jZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19I
QVZFX0NfU1BJCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgIlRlc3QuaCIKLQotI2luY2x1ZGUgPFdlYktpdC9X
S1N0cmluZy5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGZp
bmlzaGVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2Fs
bGJhY2tzID0gZmFsc2U7Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAg
Ly8gT25seSBtYXJrIGZpbmlzaGVkIHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMKLSAgICBpZiAo
IVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZpbmlz
aGVkID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqKQotewotICAgIGlmIChXS0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tTdHJp
bmdHZXRUeXBlSUQoKSkgewotICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZygoV0tTdHJpbmdSZWYpdXNlckRhdGEsICJzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNh
bGxiYWNrIGNhbGxlZCBhcyBleHBlY3RlZCIpKQotICAgICAgICAgICAgcmVjZWl2ZWRQcm9wZXJC
YWNrRm9yd2FyZENhbGxiYWNrcyA9IHRydWU7Ci0gICAgfQotCi0gICAgZmluaXNoZWQgPSB0cnVl
OwotfQotCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQot
ewotICAgIFdLUGFnZUxvYWRlckNsaWVudFYxIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxv
YWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50
LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQud2lsbEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtID0gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOwotCi0gICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQotCi1U
RVNUKFdlYktpdCwgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCi17Ci0gICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0
Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3Qi
KSk7Ci0gICAgLy8gRW5hYmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4dFNl
dENhY2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7
Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2Vi
Vmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIs
ICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKLSAgICAKLSAgICBm
aW5pc2hlZCA9IGZhbHNlOwotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0
V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZS1pZnJhbWUiLCAiaHRtbCIpKS5n
ZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7Ci0KLSAgICBmaW5pc2hlZCA9IGZhbHNl
OwotICAgIFdLUGFnZUdvQmFjayh3ZWJWaWV3LnBhZ2UoKSk7Ci0gICAgVXRpbDo6cnVuKCZmaW5p
c2hlZCk7Ci0gICAgCi0gICAgRVhQRUNUX0VRKHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxs
YmFja3MsIHRydWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3Bw
CShyZXZpc2lvbiAyMzUxMzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9T
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCShub25leGlzdGVudCkKQEAg
LTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdL
X0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgotCi0jaW5jbHVk
ZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oPgotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLWNsYXNzIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtVGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgewotcHVibGljOgotICAgIFNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmll
cik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUs
IFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKLX07Ci0KLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6
OlJlZ2lzdGVyPFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdD4gcmVnaXN0cmFyKCJT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QiKTsKLQotc3RhdGljIGJvb2wgc2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2
b2lkKikKLXsKLSAgICAvLyBUaGUgaXRlbSBzaG91bGQgYmUgaW4gdGhlIHBhZ2UgY2FjaGUKLSAg
ICBpZiAoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtSXNJblBhZ2VDYWNoZShpdGVtKSkKLSAg
ICAgICAgKnVzZXJEYXRhID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInNob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVkIik7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0OjpT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50
aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKLXsKLX0KLQotdm9p
ZCBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3Q6OmRpZENyZWF0ZVBhZ2UoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKLXsgICAgCi0gICAgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjEgcGFnZUxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJnBhZ2VMb2Fk
ZXJDbGllbnQsIDAsIHNpemVvZihwYWdlTG9hZGVyQ2xpZW50KSk7Ci0gICAgCi0gICAgcGFnZUxv
YWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAxOwotICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS5j
bGllbnRJbmZvID0gdGhpczsKLSAgICBwYWdlTG9hZGVyQ2xpZW50LnNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtID0gc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjazsKLSAg
ICAKLSAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZwYWdlTG9hZGVy
Q2xpZW50LmJhc2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZl
bmVzc1RpbWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQkocmV2aXNpb24gMjM1MTM4KQkoZnJvbSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcDoy
MzUxMzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNp
dmVuZXNzVGltZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZh
bHNlIH07CitzdGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OworCitz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAg
IFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNs
aWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRp
ZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CisKKyAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1Qo
V2ViS2l0LCBSZXNwb25zaXZlbmVzc1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCit7
CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4
dENyZWF0ZSgpKTsKKyAgICAvLyBUaGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUg
V2ViQ29udGVudCBwcm9jZXNzLgorICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nl
c3Nlcyhjb250ZXh0LmdldCgpLCAxKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShj
b250ZXh0LmdldCgpKTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7
CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVh
dGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1
bigmZGlkRmluaXNoTG9hZCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25z
aXZlKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKKyAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcyLnBhZ2UoKSk7CisKKyAgICBkaWRGaW5pc2hM
b2FkID0gZmFsc2U7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0so
VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworCisgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29t
ZVVucmVzcG9uc2l2ZSk7CisKKyAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkg
b24gdGhlIGZpcnN0IHBhZ2UgaW4gcXVpY2sgc3VjY2Vzc2lvbi4KKyAgICBXS1BhZ2VTdG9wTG9h
ZGluZyh3ZWJWaWV3MS5wYWdlKCkpOworICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7
CisKKyAgICAvLyBXZSBuZWVkIHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25k
cyBmb3IgYSBwcm9jZXNzIHRvIGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgorICAgIFV0
aWw6OnNsZWVwKDQpOworCisgICAgLy8gV2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhlIHNlY29uZCBw
YWdlIHNoYXJpbmcgdGhlIHNhbWUgcHJvY2VzcyBhcyB1bnJlc3BvbnNpdmUuCisgICAgRVhQRUNU
X0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCShyZXZpc2lv
biAyMzUxMzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3Bv
bnNpdmVuZXNzVGltZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDY0ICsyNSw2NiBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJX0VOQUJM
RUQKIAotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1X
ZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZh
bHNlIH07CiBzdGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OwogCi1z
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQqKQorQGludGVyZmFjZSBSZXNwb25zaXZlbmVzc1RpbWVyRGVs
ZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisgICAgCitAaW1w
bGVtZW50YXRpb24gUmVzcG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24g
KiluYXZpZ2F0aW9uCiB7CiAgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7CiB9CiAKLXN0YXRpYyB2
b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZv
aWQqKQorLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdL
V2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwog
fQogCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewot
ICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRl
ckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJh
c2UudmVyc2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9
IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29t
ZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CitAZW5kCiAKLSAg
ICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0LCBSZXNwb25zaXZlbmVz
c1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICAvLyBU
aGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNzLgot
ICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgpLCAx
KTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKLSAgICBz
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2FkVVJM
KHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2lt
cGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIG5ld10pOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbcHJvY2Vz
c1Bvb2wgX3NldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlczoxXTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbUmVzcG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlIG5ld10pOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07Cisg
ICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgW3dlYlZpZXcxIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV07CisgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFV0aWw6OnJ1
bigmZGlkRmluaXNoTG9hZCk7CiAKICAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25z
aXZlKTsKIAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKLSAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcyLnBhZ2UoKSk7CisgICAgYXV0byB3ZWJWaWV3
MiA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
W3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBk
aWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCks
IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdl
dCgpKTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgVXRpbDo6cnVu
KCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNp
dmUpOwogCiAgICAgLy8gQ2FsbCBzdG9wTG9hZGluZygpIGFuZCBjbG9zZSgpIG9uIHRoZSBmaXJz
dCBwYWdlIGluIHF1aWNrIHN1Y2Nlc3Npb24uCi0gICAgV0tQYWdlU3RvcExvYWRpbmcod2ViVmll
dzEucGFnZSgpKTsKLSAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3MS5wYWdlKCkpOworICAgIFt3ZWJW
aWV3MSBzdG9wTG9hZGluZ107CisgICAgW3dlYlZpZXcxIF9jbG9zZV07CiAKICAgICAvLyBXZSBu
ZWVkIHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNz
IHRvIGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgogICAgIFV0aWw6OnNsZWVwKDQpOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVz
c1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5t
bQkocmV2aXNpb24gMjM1MTM4KQkoZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcDoyMzUxMzgpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7Citz
dGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmU7CitzdGF0aWMgYm9vbCBkaWRCcmllZmx5
UGF1c2U7CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qg
dm9pZCopCit7CisgICAgZGlkQnJpZWZseVBhdXNlID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIkRpZEJyaWVmbHlQYXVzZSIsIG1lc3NhZ2VOYW1lKTsKK30KKworc3RhdGljIHZvaWQgZGlk
RmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25z
dCB2b2lkKikKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQg
cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQorewor
ICAgIGRpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7CisgICAgbWVtc2V0
KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7
CisKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGluamVj
dGVkQnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisKKyAgICBXS0NvbnRleHRTZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Cit9
CisKK3N0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7Cisg
ICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVy
Q2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0g
ZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC5wcm9jZXNzRGlkQmVjb21l
VW5yZXNwb25zaXZlID0gcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsKKworICAgIFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworVEVT
VChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5VGVzdCIpKTsKKyAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsK
KworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBh
Z2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJW
aWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwg
Imh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisKKyAgICBX
S0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6
dG9XSygiQnJpZWZseVBhdXNlIikuZ2V0KCksIDApOworCisgICAgLy8gUHJlc3NpbmcgYSBrZXkg
b24gdGhlIGtleWJvYXJkIHNob3VsZCBzdGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNp
bmNlIHRoZSB3ZWIgcHJvY2VzcworICAgIC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCBy
ZWNlaXZlcyB0aGlzIGtleXByZXNzLCBpdCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byBy
ZXNwb25kCisgICAgLy8gKGJ1dCBub3Qgc28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0
aW1lciBmaXJlcykuCisgICAgd2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKKwor
ICAgIFV0aWw6OnJ1bigmZGlkQnJpZWZseVBhdXNlKTsKKworICAgIEVYUEVDVF9GQUxTRShkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
KyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNw
b25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZp
cmVFYXJseS5tbQkocmV2aXNpb24gMjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTIgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0j
aWYgV0tfSEFWRV9DX1NQSQorI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlICJUZXN0V0tXZWJWaWV3LmgiCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwogc3RhdGljIGJvb2wg
ZGlkQmVjb21lVW5yZXNwb25zaXZlOwpAQCAtNDIsMTYgKzQyLDYgQEAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZQogICAgIEVYUEVDVF9XS19TVFJFUSgiRGlkQnJpZWZs
eVBhdXNlIiwgbWVzc2FnZU5hbWUpOwogfQogCi1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
RnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQotewot
ICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVj
b21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21l
VW5yZXNwb25zaXZlID0gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKQEAgLTYzLDI3ICs1MywzNyBAQCBzdGF0
aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvCiAgICAgV0tDb250ZXh0U2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dCwgJmluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UpOwog
fQogCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewot
ICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRl
ckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworQGludGVyZmFjZSBSZXNwb25zaXZl
bmVzc0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gUmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZQogCi0gICAgbG9hZGVyQ2xpZW50
LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJl
Y29tZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZp
Z2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQogCi0g
ICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwor
LSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdLV2ViVmll
dyAqKXdlYlZpZXcKK3sKKyAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwogfQogCitA
ZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwogVEVTVChXZWJLaXQsIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKICAgICBz
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKIAotICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2Vi
Vmlldy5wYWdlKCkpOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtSZXNwb25zaXZlbmVz
c0RlbGVnYXRlIG5ld10pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bv
b2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgV0tQ
YWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNv
dXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExv
YWQpOwogCiAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnRleHQu
Z2V0KCksIFV0aWw6OnRvV0soIkJyaWVmbHlQYXVzZSIpLmdldCgpLCAwKTsKQEAgLTkxLDcgKzkx
LDcgQEAgVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaQogICAgIC8vIFBy
ZXNzaW5nIGEga2V5IG9uIHRoZSBrZXlib2FyZCBzaG91bGQgc3RhcnQgdGhlIHJlc3BvbnNpdmVu
ZXNzIHRpbWVyLiBTaW5jZSB0aGUgd2ViIHByb2Nlc3MKICAgICAvLyBpcyBnb2luZyB0byBwYXVz
ZSBiZWZvcmUgaXQgcmVjZWl2ZXMgdGhpcyBrZXlwcmVzcywgaXQgc2hvdWxkIHRha2UgYSBsaXR0
bGUgd2hpbGUgdG8gcmVzcG9uZAogICAgIC8vIChidXQgbm90IHNvIGxvbmcgdGhhdCB0aGUgcmVz
cG9uc2l2ZW5lc3MgdGltZXIgZmlyZXMpLgotICAgIHdlYlZpZXcuc2ltdWxhdGVTcGFjZWJhcktl
eVByZXNzKCk7CisgICAgW3dlYlZpZXcgdHlwZUNoYXJhY3RlcjonICddOwogCiAgICAgVXRpbDo6
cnVuKCZkaWRCcmllZmx5UGF1c2UpOwogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjM1MTM4KQkoZnJvbSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91
dE5hdmlnYXRpb24uY3BwOjIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW5jbHVkZSAiSmF2YVNjcmlwdFRlc3QuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5o
IgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgor
I2luY2x1ZGUgPFdlYktpdC9XS1Nlc3Npb25TdGF0ZVJlZi5oPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9vbCBkaWRD
aGFuZ2VCYWNrRm9yd2FyZExpc3Q7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAg
ZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdEZvclBhZ2UoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJ
dGVtLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3QgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAg
ICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisgICAg
bG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlz
aExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBsb2FkZXJDbGllbnQu
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Rm9yUGFn
ZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5i
YXNlKTsKK30KKworc3RhdGljIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gY3JlYXRlU2Vzc2lvblN0
YXRlRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
Vmlldyhjb250ZXh0KTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsK
KworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRl
VVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBVdGlsOjpydW4o
JmRpZEZpbmlzaExvYWQpOworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKworICAgIGF1dG8g
c2Vzc2lvblN0YXRlID0gYWRvcHRXSyhzdGF0aWNfY2FzdDxXS1Nlc3Npb25TdGF0ZVJlZj4oV0tQ
YWdlQ29weVNlc3Npb25TdGF0ZSh3ZWJWaWV3LnBhZ2UoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oMSksIG51bGxwdHIpKSk7CisgICAgcmV0dXJuIGFkb3B0V0soV0tTZXNzaW9uU3RhdGVDb3B5
RGF0YShzZXNzaW9uU3RhdGUuZ2V0KCkpKTsKK30KKworVEVTVChXZWJLaXQsIFJlc3RvcmVTZXNz
aW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbikKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOworCisgICAgUGxhdGZvcm1X
ZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3
ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGRhdGEgPSBjcmVh
dGVTZXNzaW9uU3RhdGVEYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIEVYUEVDVF9OT1RfTlVMTChk
YXRhKTsKKworICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhXS1Nlc3Npb25TdGF0ZUNy
ZWF0ZUZyb21EYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZVdpdGhvdXROYXZpZ2F0aW9uKHdlYlZpZXcucGFnZSgpLCBzZXNzaW9uU3RhdGUuZ2V0KCkp
OworCisgICAgVXRpbDo6cnVuKCZkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUNvbW1p
dHRlZFVSTCh3ZWJWaWV3LnBhZ2UoKSkpOworICAgIEVYUEVDVF9OVUxMKGNvbW1pdHRlZFVSTC5n
ZXQoKSk7CisKKyAgICBhdXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJk
TGlzdCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgYXV0byBjdXJyZW50SXRlbSA9IFdLQmFja0Zvcndh
cmRMaXN0R2V0Q3VycmVudEl0ZW0oYmFja0ZvcndhcmRMaXN0KTsKKyAgICBhdXRvIGN1cnJlbnRJ
dGVtVVJMID0gYWRvcHRXSyhXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKGN1cnJlbnRJdGVt
KSk7CisgICAgYXV0byBleHBlY3RlZFVSTCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVz
b3VyY2UoInNpbXBsZSIsICJodG1sIikpOworICAgIEVYUEVDVF9OT1RfTlVMTChleHBlY3RlZFVS
TCk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGN1cnJlbnRJdGVtVVJMLmdldCgpLCBl
eHBlY3RlZFVSTC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
KyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0
b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91
dE5hdmlnYXRpb24ubW0JKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAotI2lmIFdLX0hBVkVfQ19TUEkKKyNpZiBXS19BUElfRU5BQkxFRAogCiAjaW5jbHVkZSAiSmF2
YVNjcmlwdFRlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgpAQCAtMzMsNjYg
KzMzLDYzIEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2Vzc2lvblN0YXRlUmVmLmg+CisjaW5jbHVkZSA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
LW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK0BpbnRlcmZhY2UgV0tXZWJWaWV3ICgpCistIChX
S1BhZ2VSZWYpX3BhZ2VGb3JUZXN0aW5nOworQGVuZAogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hM
b2FkOwogc3RhdGljIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OworICAgIAorQGludGVy
ZmFjZSBTZXNzaW9uU3RhdGVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNlc3Npb25TdGF0ZURlbGVnYXRlCiAKLXN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgogewogICAgIGRp
ZEZpbmlzaExvYWQgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRl
bSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDooV0tCYWNrRm9yd2FyZExpc3RJdGVt
ICopaXRlbUFkZGVkIHJlbW92ZWQ6KE5TQXJyYXk8V0tCYWNrRm9yd2FyZExpc3RJdGVtICo+ICop
aXRlbXNSZW1vdmVkCiB7CiAgICAgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZTsKIH0K
IAotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKLXsKLSAg
ICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkZXJD
bGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKK0BlbmQKIAotICAgIGxvYWRlckNsaWVu
dC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJh
bWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2U7Ci0KLSAgICBX
S1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19Citu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBXS1JldGFpblB0cjxXS0RhdGFSZWY+
IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQpCitzdGF0aWMgV0tS
ZXRhaW5QdHI8V0tEYXRhUmVmPiBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKCkKIHsKLSAgICBQbGF0
Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdl
YlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0
V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbU2Vzc2lvblN0YXRlRGVsZWdhdGUgbmV3XSk7
CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt2aWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3ZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNo
TG9hZCk7CiAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwogCi0gICAgYXV0byBzZXNzaW9uU3Rh
dGUgPSBhZG9wdFdLKHN0YXRpY19jYXN0PFdLU2Vzc2lvblN0YXRlUmVmPihXS1BhZ2VDb3B5U2Vz
c2lvblN0YXRlKHdlYlZpZXcucGFnZSgpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigxKSwgbnVs
bHB0cikpKTsKLSAgICByZXR1cm4gYWRvcHRXSyhXS1Nlc3Npb25TdGF0ZUNvcHlEYXRhKHNlc3Np
b25TdGF0ZS5nZXQoKSkpOworICAgIE5TRGF0YSAqZGF0YSA9IFt2aWV3IF9zZXNzaW9uU3RhdGVE
YXRhXTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0RhdGFDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCkpOwogfQogCiBURVNUKFdl
YktpdCwgUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKQogewotICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7
Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUmV0YWluUHRyPFdLRGF0
YVJlZj4gZGF0YSA9IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoY29udGV4dC5nZXQoKSk7CisgICAg
YXV0byBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YSgpOwogICAgIEVYUEVDVF9OT1RfTlVM
TChkYXRhKTsKIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsK
ICAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tTZXNzaW9uU3RhdGVDcmVhdGVGcm9t
RGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGVXaXRo
b3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvblN0YXRlLmdldCgpKTsKKyAgICBX
S1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKFt3ZWJWaWV3IF9w
YWdlRm9yVGVzdGluZ10sIHNlc3Npb25TdGF0ZS5nZXQoKSk7CiAKICAgICBVdGlsOjpydW4oJmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gY29t
bWl0dGVkVVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5Q29tbWl0dGVkVVJMKHdlYlZpZXcucGFnZSgp
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9IGFkb3B0V0soV0tQ
YWdlQ29weUNvbW1pdHRlZFVSTChbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddKSk7CiAgICAgRVhQ
RUNUX05VTEwoY29tbWl0dGVkVVJMLmdldCgpKTsKIAotICAgIGF1dG8gYmFja0ZvcndhcmRMaXN0
ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGJh
Y2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlzdChbd2ViVmlldyBfcGFnZUZv
clRlc3RpbmddKTsKICAgICBhdXRvIGN1cnJlbnRJdGVtID0gV0tCYWNrRm9yd2FyZExpc3RHZXRD
dXJyZW50SXRlbShiYWNrRm9yd2FyZExpc3QpOwogICAgIGF1dG8gY3VycmVudEl0ZW1VUkwgPSBh
ZG9wdFdLKFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoY3VycmVudEl0ZW0pKTsKICAgICBh
dXRvIGV4cGVjdGVkVVJMID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2lt
cGxlIiwgImh0bWwiKSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0ubW0JKHJldmlzaW9uIDIzNTEzOCkJKGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOjIzNTEzOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVk
ZSAiVGVzdC5oIgorCisjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKK3N0YXRpYyBi
b29sIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MgPSBmYWxzZTsKKworc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICAvLyBPbmx5IG1hcmsgZmluaXNoZWQgd2hl
biB0aGUgbWFpbiBmcmFtZSBsb2FkcworICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmluaXNoZWQgPSB0cnVlOworfQorCitzdGF0aWMg
dm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopCit7CisgICAgaWYg
KFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKSB7CisgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKChXS1N0cmluZ1JlZil1c2VyRGF0YSwg
InNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVk
IikpCisgICAgICAgICAgICByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gdHJ1
ZTsKKyAgICB9CisKKyAgICBmaW5pc2hlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBh
Z2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50
VjEgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKKyAgICBs
b2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1l
OworICAgIGxvYWRlckNsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSB3aWxsR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW07CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBh
Z2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBTaG91bGRHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbSkKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlNo
b3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCIpKTsKKyAgICAvLyBFbmFibGUgdGhlIHBh
Z2UgY2FjaGUgc28gd2UgY2FuIHRlc3QgdGhlIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUlz
SW5QYWdlQ2FjaGUgQVBJCisgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChjb250ZXh0LmdldCgp
LCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5w
YWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGls
OjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0
aWw6OnJ1bigmZmluaXNoZWQpOworICAgIAorICAgIGZpbmlzaGVkID0gZmFsc2U7CisgICAgV0tQ
YWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNv
dXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmZp
bmlzaGVkKTsKKworICAgIGZpbmlzaGVkID0gZmFsc2U7CisgICAgV0tQYWdlR29CYWNrKHdlYlZp
ZXcucGFnZSgpKTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICAKKyAgICBFWFBFQ1Rf
RVEocmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxiYWNrcywgdHJ1ZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcxICsyNSw1MSBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2luY2x1
ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAj
aW5jbHVkZSAiVGVzdC5oIgotCiAjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRp
YyBib29sIGZpbmlzaGVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCByZWNlaXZlZFByb3BlckJhY2tG
b3J3YXJkQ2FsbGJhY2tzID0gZmFsc2U7CiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCop
Ci17Ci0gICAgLy8gT25seSBtYXJrIGZpbmlzaGVkIHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMK
LSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKK0Bp
bnRlcmZhY2UgQmFja0ZvcndhcmRDbGllbnQgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGU+CitAZW5kCiAKLSAgICBmaW5pc2hlZCA9IHRydWU7Ci19CitAaW1wbGVtZW50YXRpb24gQmFj
a0ZvcndhcmRDbGllbnQKIAotc3RhdGljIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqKQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZp
bmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKLSAgICBpZiAoV0tH
ZXRUeXBlSUQodXNlckRhdGEpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoKFdLU3RyaW5nUmVmKXVzZXJEYXRhLCAic2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayBjYWxsZWQgYXMgZXhwZWN0ZWQiKSkK
LSAgICAgICAgICAgIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MgPSB0cnVlOwot
ICAgIH0KLQogICAgIGZpbmlzaGVkID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgc2V0UGFnZUxv
YWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0
ZW0gKilpdGVtIGluUGFnZUNhY2hlOihCT09MKWluUGFnZUNhY2hlCiB7Ci0gICAgV0tQYWdlTG9h
ZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBz
aXplb2YobG9hZGVyQ2xpZW50KSk7CisgICAgZmluaXNoZWQgPSB0cnVlOworfQogCi0gICAgbG9h
ZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExv
YWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQud2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOwor
QGVuZAogCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50
LmJhc2UpOwotfQorbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdCwgU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QiKSk7Ci0gICAgLy8gRW5h
YmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoY29u
dGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7Ci0KLSAgICBQbGF0Zm9y
bVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50
KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQmFja0Zvcndh
cmRDbGllbnQgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CiAKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0
ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1bigm
ZmluaXNoZWQpOwogICAgIAogICAgIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgV0tQYWdlTG9hZFVS
TCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2lt
cGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJzaW1wbGUtaWZyYW1lIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1bigmZmluaXNo
ZWQpOwogCiAgICAgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBXS1BhZ2VHb0JhY2sod2ViVmlldy5w
YWdlKCkpOworICAgIFt3ZWJWaWV3IGdvQmFja107CiAgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7
Ci0gICAgCi0gICAgRVhQRUNUX0VRKHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3Ms
IHRydWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347739</attachid>
            <date>2018-08-21 17:20:19 -0700</date>
            <delta_ts>2018-08-27 09:02:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>75700</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNTE0NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE4LTA4LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVHJhbnNsYXRlIDQgdGVzdHMgdXNpbmcgV0tQYWdlTG9hZGVy
Q2xpZW50IHRvIE9iakMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXkgdXNlIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUsIGRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdCwgb3Igd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLgorICAgICAgICBS
YXRoZXIgdGhhbiBpbnRyb2R1Y2UgdGhlc2UgdG8gV0tQYWdlTmF2aWdhdGlvbkNsaWVudCwgSSBq
dXN0IHRyYW5zbGF0ZWQgdGhlIHRlc3RzIHRvIHVzZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSwgd2hp
Y2ggYWxyZWFkeSBoYXZlIGVxdWl2YWxlbnQgY2FsbGJhY2tzLgorICAgICAgICB3aWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gaGFkIHVzZXJEYXRhIGZyb20gdGhlIEluamVjdGVkQnVuZGxlLCBi
dXQgbm9ib2R5IHdhcyB1c2luZyBpdCBzbyBJIGRpZCBub3QgYWRkIHRoYXQgdG8gdGhlIE9iakMg
U1BJLCBzbyBJIGRvbid0IHRlc3QgdGhhdCB1bnVzZWQKKyAgICAgICAgYnVuZGxlIGZ1bmN0aW9u
YWxpdHkgYW55IG1vcmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0
b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbTog
Q29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHAuCisgICAgICAgICgtW1Jlc3BvbnNpdmVuZXNzVGltZXJEZWxlZ2F0ZSB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1Jlc3BvbnNpdmVuZXNzVGlt
ZXJEZWxlZ2F0ZSBfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOiBEZWxldGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwLgor
ICAgICAgICAoLVtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdh
dGlvbjpdKToKKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZSBfd2ViVmlld1dlYlBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1t
OiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vz
c2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwLgorICAgICAgICAoLVtTZXNzaW9uU3RhdGVE
ZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1Nlc3Np
b25TdGF0ZURlbGVnYXRlIF93ZWJWaWV3OmJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDpyZW1vdmVk
Ol0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlU2Vzc2lvblN0YXRlRGF0YSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
bW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcC4KKyAgICAgICAgKC1bQmFja0ZvcndhcmRDbGllbnQg
d2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtCYWNrRm9yd2FyZENs
aWVudCBfd2ViVmlldzp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06aW5QYWdlQ2FjaGU6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisKIDIwMTgtMDgtMjEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xd
IENhbGwgZXhwcmVzc2lvbnMgc2hvdWxkbid0IGhhdmUgdHlwZSBhcmd1bWVudHMKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzUxNDApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjIzLDcgKzIyMyw2IEBACiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2Nh
bFN0b3JhZ2VDbGVhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTZBODkyMUQyRjFCRUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAq
LzsgfTsKIAkJNTFFNkE4OTYxRDJGMUNBNzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFNkE4OTUxRDJGMUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi87IH07
CiAJCTUxRUIxMjk0MUZERjA1MjUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVCMTI5MzFGREYw
NTA1MDBBNUExQkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1tICovOyB9OwotCQk1MUZDRjdBMTE1
MzRCMkEwMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk3
MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUu
Y3BwICovOyB9OwogCQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIw
QkNGNEExNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJ
NTI0QkJDOUUxOURGNzJDMDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQzlCMTlE
RjM3MTQwMDJGMUFGMSAvKiBmaWxlLXdpdGgtdmlkZW8uaHRtbCAqLzsgfTsKIAkJNTI0QkJDQTEx
OUUzMEM3NzAwMkYxQUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQ0EwMTlFMzBDNjMwMDJGMUFGMSAvKiB0ZXN0
Lm1wNCAqLzsgfTsKQEAgLTI5MCw2ICsyODksMTAgQEAKIAkJNUNCM0NFMzkxRkExNjk3RjAwQzNB
MkQ2IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzQ0UzODFGQTE2OTE3MDBDM0EyRDYgLyogV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbSAqLzsgfTsKIAkJNUNCNDBCNEUxRjRCOThEMzAwN0RDN0I5IC8q
IFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
NUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjVCM0JEMUZG
QzUxN0UwMEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi87IH07CisJCTVD
REMzMDU5MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
QzMwNTUyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkubW0gKi87IH07CisJCTVDREMzMDVBMjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXNwb25zaXZlbmVz
c1RpbWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNEQzMwNTYyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07
CisJCTVDREMzMDVCMjEyQ0Q0REQwMDIxRkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
REMzMDU3MjEyQ0Q0REQwMDIxRkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5t
bSAqLzsgfTsKKwkJNUNEQzMwNUMyMTJDRDRERDAwMjFGQjY2IC8qIFJlc3RvcmVTZXNzaW9uU3Rh
dGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDREMzMDU4MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gKi87IH07CiAJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUz
QiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSAqLzsgfTsKIAkJNUNFQUI1RTExRkE5MzlGNDAwQTc3RkFBIC8q
IF9XS0lucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5t
bSAqLzsgfTsKIAkJNUU0QjFEMkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0
QjFEMkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tICovOyB9OwpA
QCAtNTI5LDEwICs1MzIsOCBAQAogCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2Fk
UGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEEzQUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNo
LmNwcCAqLzsgfTsKIAkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQ
YWdpbmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5h
dGVkV2ViVmlldy5jcHAgKi87IH07CiAJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNp
emVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcCAqLzsgfTsKLQkJN0NDRTdGMTAxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovOyB9OwogCQk3Q0NFN0YxMTFBNDExQUU2
MDA0NDdDNEMgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4MjEyRkNB
NkFBMDBEMkMxMjkgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAg
Ki87IH07CiAJCTdDQ0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZp
b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NjQwQjU0MTc4NzVERkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLzsg
fTsKLQkJN0NDRTdGMTMxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRkNGNzk4MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAgKi87IH07CiAJCTdDQ0U3RjE1MUE0MTFBRTYwMDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9s
bGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovOyB9Owog
CQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVybWluYXRlVHdpY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNzJGNDcxNzNFQjIxNDAw
NjM2MkYwIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCAqLzsgfTsKIAkJN0NDRTdGMTcxQTQxMUFFNjAw
NDQ3QzRDIC8qIFVzZXJNZWRpYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEY0QjE5QUY3QkQ2MDAyRUJBQjUgLyogVXNlck1lZGlhLmNwcCAq
LzsgfTsKQEAgLTU2OSw3ICs1NzAsNiBAQAogCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyog
QXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi87IH07CiAJCTgzNDlEM0MyMURCOTZE
REUwMDRBOUY2NSAvKiBDb250ZXh0TWVudURvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzExREI5NkREQTAwNEE5RjY1IC8qIENv
bnRleHRNZW51RG93bmxvYWQubW0gKi87IH07CiAJCTgzNDlEM0M0MURCOTcyOEUwMDRBOUY2NSAv
KiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzMxREI5NzI0RjAwNEE5RjY1
IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRtbCAqLzsgfTsKLQkJODM1Q0Y5Njcx
RDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzVDRjk2
NjFEMjVGQ0Q2MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
LmNwcCAqLzsgfTsKIAkJODM2MUYxNzgxRTYxMEI0RTAwNzU5QjI1IC8qIGxpbmstd2l0aC1kb3du
bG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MUYxNzcxRTYxMEIyMTAwNzU5QjI1IC8q
IGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgKi87IH07CiAJ
CTgzNzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3JlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NzlDMzcxRjgyRkVCMDAw
N0NEQThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTgzN0EzNUYxMUQ5QTFFN0Qw
MDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTM1RjAxRDlBMUU2NDAwNjYz
QzU3IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLzsgfTsKQEAgLTU3Nyw3ICs1Nzcs
NiBAQAogCQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNC
QUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLzsg
fTsKIAkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQkM1QUJGMjBFNkMwRDMwMEY1ODc5RiAvKiBTdGFydExvYWRJbkRpZEZhaWxQcm92aXNp
b25hbExvYWQubW0gKi87IH07CiAJCTgzREI3OTY5MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RC
Nzk2NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovOyB9OwotCQk4M0RFMTM0RDFF
RjFDNTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RFMTM0QzFFRjFDNEZFMDBDMUIzNTUg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07CiAJCTgzRjIyQzY0MjBCMzU1RjgwMDM0
Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyMkM2MzIwQjM1NUVCMDAzNDI3N0UgLyogTm9Q
b2xpY3lEZWxlZ2F0ZVJlc3BvbnNlLm1tICovOyB9OwogCQk4QzEwQUY5ODIwNjQ2NzkyMDAxOEZE
OTAgLyogbG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk3MjA2NDY3ODMw
MDE4RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi87IH07CiAJ
CThDMTBBRjk5MjA2NDY3QTkwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk2MjA2
NDY3NzcwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSAqLzsgfTsKQEAgLTE1
MDQsOCArMTUwMyw2IEBACiAJCTUxRTkzMDE2MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRT
Y2FsZUZhY3Rvck5vdFplcm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJC
YXNpYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQkJCNEMxNTEzRDRFOTAw
ODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVVSTC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTFGQ0Y3OTcxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MUZDRjc5ODE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjBCQ0Y0QTE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXJjaGl2ZV9C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjBCQ0Y0QjE0MUVCMDlF
MDA5MzdFQTggLyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0
QkJDOUIxOURGMzcxNDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImZpbGUtd2l0aC12aWRlby5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1NzgsNiArMTU3NSwxMCBAQAogCQk1Q0IzQ0UzODFGQTE2OTE3MDBD
M0EyRDYgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlEZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCNUIzQkQxRkZDNTE3RTAwQzI3QkIw
IC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZy
YW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNEQzMwNTUyMTJDRDREQzAwMjFGQjY2IC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25z
aXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0RDMzA1NjIxMkNENERDMDAyMUZCNjYgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGlt
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDREMzMDU3MjEyQ0Q0REQwMDIx
RkI2NiAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0RDMzA1ODIxMkNENEREMDAyMUZCNjYg
LyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0UzNTREODFFNzBEOUMz
MDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lu
cHV0RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tJbnB1dERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTRCMUQy
QzFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgcGF0
aCA9IC4uL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2NzUsNyArMTY3Niw2IEBACiAJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAv
KiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ5RDNDMTFEQjk2RERBMDA0QTlGNjUg
LyogQ29udGV4dE1lbnVEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IENvbnRleHRNZW51RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNDlEM0MzMURCOTcyNEYwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0
cmlidXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRoLWRvd25s
b2FkLWF0dHJpYnV0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1Q0Y5
NjYxRDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0
ZS13aXRoLXNsYXNoZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLXdp
dGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM3NzlDMzcxRjgyRkVCMDAwN0NEQThBIC8qIFZpc2l0ZWRMaW5rU3Rv
cmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpdGVkTGlu
a1N0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBMzVGMDFEOUExRTY0
MDA2NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY4NCw3ICsxNjg0LDYgQEAKIAkJODNCQUVFOEMxRUY0NjI1NTAwRERF
ODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQzVBQkYyMEU2QzBEMzAwRjU4NzlGIC8qIFN0YXJ0TG9h
ZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1
IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzRjIyQzYzMjBCMzU1RUIwMDM0Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9u
c2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb1BvbGljeURl
bGVnYXRlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkQxOTk3
MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTMsNyArMTg5Miw2
IEBACiAJCUMwQURCRTdCMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0VGVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkgLyogUmVzdG9yZVNl
c3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8q
IHNpbXBsZS1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWZv
cm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwQkQ2NjlDMTMxRDNDRjcw
MEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEJENjY5RTEzMUQz
Q0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NU
aW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2luZ1NjYWxl
RmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0NTk4QjZG
MDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzgwLDEyICsyMzc4LDE2IEBACiAJ
CQkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1By
b3RvY29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNl
ckFjdGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAorCQkJCTVDREMzMDU2MjEyQ0Q0REMwMDIx
RkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tICovLAorCQkJCTVDREMzMDU1MjEyQ0Q0REMw
MDIxRkI2NiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tICovLAorCQkJ
CTVDREMzMDU4MjEyQ0Q0REQwMDIxRkI2NiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5Q
YW5lbC5tbSAqLywKIAkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0QWZ0
ZXJEb2N1bWVudExvYWQubW0gKi8sCiAJCQkJNUNBOTg1NTEyMTEzQ0I4QzAwNTdFQjZCIC8qIFNh
ZmVCcm93c2luZy5tbSAqLywKIAkJCQlDRTA5NDczNjIwNjMyMjNCMDAzQzlCQTAgLyogU2NoZW1l
UmVnaXN0cnkubW0gKi8sCiAJCQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VX
b3JrZXJCYXNpYy5tbSAqLywKIAkJCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogU2V0TWF4
aW11bVByZXdhcm1lZFByb2Nlc3NDb3VudC5tbSAqLywKKwkJCQk1Q0RDMzA1NzIxMkNENEREMDAy
MUZCNjYgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8sCiAJCQkJMzdCQ0E2
MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0Fj
dGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0
Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1t
ICovLApAQCAtMjkyMywxNiArMjkyNSwxMSBAQAogCQkJCThBM0FGOTNBMTZDOUVEMjcwMEQyNDhD
MSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgKi8sCiAJCQkJMkREN0QzQTkxNzgyMDVEMDAw
MjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLywKIAkJCQk4QTJD
NzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8sCi0J
CQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICov
LAogCQkJCTUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jh
c2gubW0gKi8sCi0JCQkJQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovLAogCQkJCUMwQkQ2NjlFMTMxRDNDRkYwMEUxOEYy
QSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgKi8sCiAJ
CQkJODNCNkRFNkUxRUU3NTIwRjAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwICov
LAogCQkJCUMwQURCRTgyMTJGQ0E2QUEwMEQyQzEyOSAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlQ29u
dGFpbmluZ0Zvcm1EYXRhLmNwcCAqLywKLQkJCQk4MzVDRjk2NjFEMjVGQ0Q2MDAxQTY1RDQgLyog
UmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQkyRDY0MEI1
NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8sCi0JCQkJ
NTFGQ0Y3OTgxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCAqLywKLQkJCQk1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCAqLywKIAkJCQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJG
MEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovLAogCQkJCTc2NzM0OTk3MTkzMDE2REMwMEU0
NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWQuY3BwICovLAog
CQkJCTc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQ
cm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLywKQEAgLTM5MTQsMTIgKzM5MTEsMTIgQEAKIAkJ
CQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZp
ZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEYxQTQxMUFFNjAwNDQ3QzRDIC8qIFJl
c2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDOEUxQTUxRjI2
QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLywK
LQkJCQk4M0RFMTM0RDFFRjFDNTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1Q0RDMzA1QTIxMkNENEREMDAyMUZCNjYgLyogUmVzcG9uc2l2
ZW5lc3NUaW1lci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkM0QzlFMjBFQUE0MEQwMDQ5NDVF
QSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKLQkJCQk3Q0NF
N0YxMDFBNDExQUU2MDA0NDdDNEMgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0RDMzA1OTIxMkNENEREMDAyMUZCNjYgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgz
QjZERTZGMUVFNzUyMjEwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RjExMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNUNGOTY3MUQy
NUZDRDYwMDFBNjVENCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUNEQzMwNUMyMTJDRDRERDAwMjFGQjY2IC8qIFJlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2RTgx
NkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBSZXN0b3JlU3RhdGVBZnRlclRlcm1pbmF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJFMTUxRjcxQjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRSZWN0
VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8q
IFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzkzOSw3ICszOTM2LDcgQEAKIAkJ
CQk3QzgzRTA1MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNzk5MTg4MUUxQzk5NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBMTc5OTE4QjFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVy
VGVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0NFN0YxMzFBNDExQUU2MDA0NDdDNEMgLyog
U2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNE
QzMwNUIyMTJDRDRERDAwMjFGQjY2IC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCQ0E2MUMxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzRTBDNTFEMEE2NTQ2MDBGRUJDRjMgLyogU2hyaW5rVG9GaXQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VDRDFBNDExQTdFMDA0NDdDNEMgLyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291
cmNlcyAqLywKQEAgLTQxNDIsNyArNDEzOSw2IEBACiAJCQkJQkM1NzVCRTAxMjZGNTkwRDAwNkYw
RjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU1QUQx
RDUxNzlGM0IzMDAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMEJENjY5RjEzMUQzQ0ZGMDBFMThGMkEgLyog
UmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTFGQ0Y3QTExNTM0QjJBMDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NjczNDk5RDE5MzBDNUJC
MDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGODFCMTQzMUY2MDAyOEE3QzUgLyogVGV4
dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzIyRDMxOTE0REM2OEI5MDBGRkIxREQgLyogVXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9u
c2l2ZW5lc3NUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZhbHNlIH07Ci1zdGF0aWMgYm9v
bCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBwcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKikKLXsK
LSAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBzZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVu
dFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxv
YWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAg
bG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFt
ZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0KLVRFU1QoV2ViS2l0LCBSZXNwb25zaXZl
bmVzc1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCi17Ci0gICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICAv
LyBUaGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNz
LgotICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgp
LCAxKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKLSAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2Fk
VVJMKHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgi
c2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7
Ci0KLSAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKLQotICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xp
ZW50KHdlYlZpZXcyLnBhZ2UoKSk7Ci0KLSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0gICAg
V0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9y
UmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaExvYWQpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Ci0K
LSAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkgb24gdGhlIGZpcnN0IHBhZ2Ug
aW4gcXVpY2sgc3VjY2Vzc2lvbi4KLSAgICBXS1BhZ2VTdG9wTG9hZGluZyh3ZWJWaWV3MS5wYWdl
KCkpOwotICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICAvLyBXZSBuZWVk
IHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNzIHRv
IGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgotICAgIFV0aWw6OnNsZWVwKDQpOwotCi0g
ICAgLy8gV2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhlIHNlY29uZCBwYWdlIHNoYXJpbmcgdGhlIHNh
bWUgcHJvY2VzcyBhcyB1bnJlc3BvbnNpdmUuCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVu
cmVzcG9uc2l2ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlm
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1Rp
bWVyRG9lc250RmlyZUVhcmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcAkocmV2
aXNpb24gMjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9u
c2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVf
Q19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIGJvb2wg
ZGlkRmluaXNoTG9hZDsKLXN0YXRpYyBib29sIGRpZEJlY29tZVVucmVzcG9uc2l2ZTsKLXN0YXRp
YyBib29sIGRpZEJyaWVmbHlQYXVzZTsKLQotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBkaWRCcmllZmx5UGF1c2UgPSB0cnVlOwot
ICAgIEVYUEVDVF9XS19TVFJFUSgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUpOwotfQot
Ci1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwot
fQotCi1zdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwg
Y29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsKLX0KLQot
c3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNs
aWVudDsKLSAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0
ZWRCdW5kbGVDbGllbnQpKTsKLQotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UudmVyc2lv
biA9IDA7Ci0gICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLQotICAg
IFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRs
ZUNsaWVudC5iYXNlKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0g
ICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAg
IGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50
LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlOwotCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50
LmJhc2UpOwotfQotCi1URVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVF
YXJseSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdL
KFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHlUZXN0IikpOwotICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KGNvbnRleHQuZ2V0KCkpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5n
ZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7Ci0KLSAgICBX
S1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJl
c291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2hMb2FkKTsKLQotICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250
ZXh0LmdldCgpLCBVdGlsOjp0b1dLKCJCcmllZmx5UGF1c2UiKS5nZXQoKSwgMCk7Ci0KLSAgICAv
LyBQcmVzc2luZyBhIGtleSBvbiB0aGUga2V5Ym9hcmQgc2hvdWxkIHN0YXJ0IHRoZSByZXNwb25z
aXZlbmVzcyB0aW1lci4gU2luY2UgdGhlIHdlYiBwcm9jZXNzCi0gICAgLy8gaXMgZ29pbmcgdG8g
cGF1c2UgYmVmb3JlIGl0IHJlY2VpdmVzIHRoaXMga2V5cHJlc3MsIGl0IHNob3VsZCB0YWtlIGEg
bGl0dGxlIHdoaWxlIHRvIHJlc3BvbmQKLSAgICAvLyAoYnV0IG5vdCBzbyBsb25nIHRoYXQgdGhl
IHJlc3BvbnNpdmVuZXNzIHRpbWVyIGZpcmVzKS4KLSAgICB3ZWJWaWV3LnNpbXVsYXRlU3BhY2Vi
YXJLZXlQcmVzcygpOwotCi0gICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOwotCi0gICAg
RVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3Rh
dGVXaXRob3V0TmF2aWdhdGlvbi5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlv
bi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIkphdmFTY3Jp
cHRUZXN0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLUGFn
ZVByaXZhdGUuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tTZXNzaW9uU3RhdGVSZWYuaD4KLQotbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwotc3Rh
dGljIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBkaWRD
aGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRl
ckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2Fk
ZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGll
bnQpKTsKLQotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNs
aWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAg
bG9hZGVyQ2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdEZvclBhZ2U7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZs
b2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0KLXN0YXRpYyBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGNy
ZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dCk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJW
aWV3LnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0g
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKLSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7
Ci0KLSAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tTZXNzaW9u
U3RhdGVSZWY+KFdLUGFnZUNvcHlTZXNzaW9uU3RhdGUod2ViVmlldy5wYWdlKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KDEpLCBudWxscHRyKSkpOwotICAgIHJldHVybiBhZG9wdFdLKFdLU2Vz
c2lvblN0YXRlQ29weURhdGEoc2Vzc2lvblN0YXRlLmdldCgpKSk7Ci19Ci0KLVRFU1QoV2ViS2l0
LCBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24pCi17Ci0gICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLQot
ICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VM
b2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVm
PiBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShjb250ZXh0LmdldCgpKTsKLSAgICBFWFBF
Q1RfTk9UX05VTEwoZGF0YSk7Ci0KLSAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tT
ZXNzaW9uU3RhdGVDcmVhdGVGcm9tRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lv
blN0YXRlLmdldCgpKTsKLQotICAgIFV0aWw6OnJ1bigmZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KTsKLQotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBjb21taXR0ZWRVUkwgPSBhZG9wdFdLKFdL
UGFnZUNvcHlDb21taXR0ZWRVUkwod2ViVmlldy5wYWdlKCkpKTsKLSAgICBFWFBFQ1RfTlVMTChj
b21taXR0ZWRVUkwuZ2V0KCkpOwotCi0gICAgYXV0byBiYWNrRm9yd2FyZExpc3QgPSBXS1BhZ2VH
ZXRCYWNrRm9yd2FyZExpc3Qod2ViVmlldy5wYWdlKCkpOwotICAgIGF1dG8gY3VycmVudEl0ZW0g
PSBXS0JhY2tGb3J3YXJkTGlzdEdldEN1cnJlbnRJdGVtKGJhY2tGb3J3YXJkTGlzdCk7Ci0gICAg
YXV0byBjdXJyZW50SXRlbVVSTCA9IGFkb3B0V0soV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVS
TChjdXJyZW50SXRlbSkpOwotICAgIGF1dG8gZXhwZWN0ZWRVUkwgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKLSAgICBFWFBFQ1RfTk9UX05V
TEwoZXhwZWN0ZWRVUkwpOwotICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChjdXJyZW50SXRl
bVVSTC5nZXQoKSwgZXhwZWN0ZWRVUkwuZ2V0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQotCi0jZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAJKHJldmlzaW9uIDIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19I
QVZFX0NfU1BJCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgIlRlc3QuaCIKLQotI2luY2x1ZGUgPFdlYktpdC9X
S1N0cmluZy5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGZp
bmlzaGVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2Fs
bGJhY2tzID0gZmFsc2U7Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAg
Ly8gT25seSBtYXJrIGZpbmlzaGVkIHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMKLSAgICBpZiAo
IVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZpbmlz
aGVkID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqKQotewotICAgIGlmIChXS0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tTdHJp
bmdHZXRUeXBlSUQoKSkgewotICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZygoV0tTdHJpbmdSZWYpdXNlckRhdGEsICJzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNh
bGxiYWNrIGNhbGxlZCBhcyBleHBlY3RlZCIpKQotICAgICAgICAgICAgcmVjZWl2ZWRQcm9wZXJC
YWNrRm9yd2FyZENhbGxiYWNrcyA9IHRydWU7Ci0gICAgfQotCi0gICAgZmluaXNoZWQgPSB0cnVl
OwotfQotCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQot
ewotICAgIFdLUGFnZUxvYWRlckNsaWVudFYxIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxv
YWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50
LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQud2lsbEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtID0gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOwotCi0gICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQotCi1U
RVNUKFdlYktpdCwgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCi17Ci0gICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0
Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3Qi
KSk7Ci0gICAgLy8gRW5hYmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4dFNl
dENhY2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7
Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2Vi
Vmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIs
ICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKLSAgICAKLSAgICBm
aW5pc2hlZCA9IGZhbHNlOwotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0
V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZS1pZnJhbWUiLCAiaHRtbCIpKS5n
ZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7Ci0KLSAgICBmaW5pc2hlZCA9IGZhbHNl
OwotICAgIFdLUGFnZUdvQmFjayh3ZWJWaWV3LnBhZ2UoKSk7Ci0gICAgVXRpbDo6cnVuKCZmaW5p
c2hlZCk7Ci0gICAgCi0gICAgRVhQRUNUX0VRKHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxs
YmFja3MsIHRydWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3Bw
CShyZXZpc2lvbiAyMzUxMzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9T
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCShub25leGlzdGVudCkKQEAg
LTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdL
X0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgotCi0jaW5jbHVk
ZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oPgotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLWNsYXNzIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtVGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgewotcHVibGljOgotICAgIFNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmll
cik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUs
IFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKLX07Ci0KLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6
OlJlZ2lzdGVyPFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdD4gcmVnaXN0cmFyKCJT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QiKTsKLQotc3RhdGljIGJvb2wgc2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2
b2lkKikKLXsKLSAgICAvLyBUaGUgaXRlbSBzaG91bGQgYmUgaW4gdGhlIHBhZ2UgY2FjaGUKLSAg
ICBpZiAoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtSXNJblBhZ2VDYWNoZShpdGVtKSkKLSAg
ICAgICAgKnVzZXJEYXRhID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInNob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVkIik7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0OjpT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50
aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKLXsKLX0KLQotdm9p
ZCBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3Q6OmRpZENyZWF0ZVBhZ2UoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKLXsgICAgCi0gICAgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjEgcGFnZUxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJnBhZ2VMb2Fk
ZXJDbGllbnQsIDAsIHNpemVvZihwYWdlTG9hZGVyQ2xpZW50KSk7Ci0gICAgCi0gICAgcGFnZUxv
YWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAxOwotICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS5j
bGllbnRJbmZvID0gdGhpczsKLSAgICBwYWdlTG9hZGVyQ2xpZW50LnNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtID0gc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjazsKLSAg
ICAKLSAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZwYWdlTG9hZGVy
Q2xpZW50LmJhc2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZl
bmVzc1RpbWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQkocmV2aXNpb24gMjM1MTM4KQkoZnJvbSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcDoy
MzUxMzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNp
dmVuZXNzVGltZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZh
bHNlIH07CitzdGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OworCitz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAg
IFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNs
aWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRp
ZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CisKKyAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1Qo
V2ViS2l0LCBSZXNwb25zaXZlbmVzc1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCit7
CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4
dENyZWF0ZSgpKTsKKyAgICAvLyBUaGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUg
V2ViQ29udGVudCBwcm9jZXNzLgorICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nl
c3Nlcyhjb250ZXh0LmdldCgpLCAxKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShj
b250ZXh0LmdldCgpKTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7
CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVh
dGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1
bigmZGlkRmluaXNoTG9hZCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25z
aXZlKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKKyAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcyLnBhZ2UoKSk7CisKKyAgICBkaWRGaW5pc2hM
b2FkID0gZmFsc2U7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0so
VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworCisgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29t
ZVVucmVzcG9uc2l2ZSk7CisKKyAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkg
b24gdGhlIGZpcnN0IHBhZ2UgaW4gcXVpY2sgc3VjY2Vzc2lvbi4KKyAgICBXS1BhZ2VTdG9wTG9h
ZGluZyh3ZWJWaWV3MS5wYWdlKCkpOworICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7
CisKKyAgICAvLyBXZSBuZWVkIHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25k
cyBmb3IgYSBwcm9jZXNzIHRvIGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgorICAgIFV0
aWw6OnNsZWVwKDQpOworCisgICAgLy8gV2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhlIHNlY29uZCBw
YWdlIHNoYXJpbmcgdGhlIHNhbWUgcHJvY2VzcyBhcyB1bnJlc3BvbnNpdmUuCisgICAgRVhQRUNU
X0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCShyZXZpc2lv
biAyMzUxMzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3Bv
bnNpdmVuZXNzVGltZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDY0ICsyNSw2NiBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJX0VOQUJM
RUQKIAotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1X
ZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZh
bHNlIH07CiBzdGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OwogCi1z
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQqKQorQGludGVyZmFjZSBSZXNwb25zaXZlbmVzc1RpbWVyRGVs
ZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisgICAgCitAaW1w
bGVtZW50YXRpb24gUmVzcG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24g
KiluYXZpZ2F0aW9uCiB7CiAgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7CiB9CiAKLXN0YXRpYyB2
b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZv
aWQqKQorLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdL
V2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwog
fQogCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewot
ICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRl
ckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJh
c2UudmVyc2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9
IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29t
ZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CitAZW5kCiAKLSAg
ICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0LCBSZXNwb25zaXZlbmVz
c1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICAvLyBU
aGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNzLgot
ICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgpLCAx
KTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKLSAgICBz
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2FkVVJM
KHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2lt
cGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIG5ld10pOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbcHJvY2Vz
c1Bvb2wgX3NldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlczoxXTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbUmVzcG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlIG5ld10pOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07Cisg
ICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgW3dlYlZpZXcxIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV07CisgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFV0aWw6OnJ1
bigmZGlkRmluaXNoTG9hZCk7CiAKICAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25z
aXZlKTsKIAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKLSAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcyLnBhZ2UoKSk7CisgICAgYXV0byB3ZWJWaWV3
MiA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
W3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBk
aWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCks
IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdl
dCgpKTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgVXRpbDo6cnVu
KCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNp
dmUpOwogCiAgICAgLy8gQ2FsbCBzdG9wTG9hZGluZygpIGFuZCBjbG9zZSgpIG9uIHRoZSBmaXJz
dCBwYWdlIGluIHF1aWNrIHN1Y2Nlc3Npb24uCi0gICAgV0tQYWdlU3RvcExvYWRpbmcod2ViVmll
dzEucGFnZSgpKTsKLSAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3MS5wYWdlKCkpOworICAgIFt3ZWJW
aWV3MSBzdG9wTG9hZGluZ107CisgICAgW3dlYlZpZXcxIF9jbG9zZV07CiAKICAgICAvLyBXZSBu
ZWVkIHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNz
IHRvIGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgogICAgIFV0aWw6OnNsZWVwKDQpOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVz
c1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5t
bQkocmV2aXNpb24gMjM1MTM4KQkoZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcDoyMzUxMzgpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7Citz
dGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmU7CitzdGF0aWMgYm9vbCBkaWRCcmllZmx5
UGF1c2U7CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qg
dm9pZCopCit7CisgICAgZGlkQnJpZWZseVBhdXNlID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIkRpZEJyaWVmbHlQYXVzZSIsIG1lc3NhZ2VOYW1lKTsKK30KKworc3RhdGljIHZvaWQgZGlk
RmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25z
dCB2b2lkKikKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQg
cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQorewor
ICAgIGRpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7CisgICAgbWVtc2V0
KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7
CisKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGluamVj
dGVkQnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisKKyAgICBXS0NvbnRleHRTZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Cit9
CisKK3N0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7Cisg
ICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVy
Q2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0g
ZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC5wcm9jZXNzRGlkQmVjb21l
VW5yZXNwb25zaXZlID0gcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsKKworICAgIFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworVEVT
VChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5VGVzdCIpKTsKKyAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsK
KworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBh
Z2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJW
aWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwg
Imh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisKKyAgICBX
S0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6
dG9XSygiQnJpZWZseVBhdXNlIikuZ2V0KCksIDApOworCisgICAgLy8gUHJlc3NpbmcgYSBrZXkg
b24gdGhlIGtleWJvYXJkIHNob3VsZCBzdGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNp
bmNlIHRoZSB3ZWIgcHJvY2VzcworICAgIC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCBy
ZWNlaXZlcyB0aGlzIGtleXByZXNzLCBpdCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byBy
ZXNwb25kCisgICAgLy8gKGJ1dCBub3Qgc28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0
aW1lciBmaXJlcykuCisgICAgd2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKKwor
ICAgIFV0aWw6OnJ1bigmZGlkQnJpZWZseVBhdXNlKTsKKworICAgIEVYUEVDVF9GQUxTRShkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
KyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNw
b25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZp
cmVFYXJseS5tbQkocmV2aXNpb24gMjM1MTM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTIgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0j
aWYgV0tfSEFWRV9DX1NQSQorI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKIAog
I2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3
LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlICJUZXN0V0tXZWJWaWV3
LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hM
b2FkOwogc3RhdGljIGJvb2wgZGlkQmVjb21lVW5yZXNwb25zaXZlOwpAQCAtNDIsMTYgKzQyLDYg
QEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZQogICAgIEVYUEVDVF9X
S19TVFJFUSgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUpOwogfQogCi1zdGF0aWMgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMg
dm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCop
Ci17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQg
c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgV0tD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKQEAgLTYz
LDI3ICs1MywzNyBAQCBzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvCiAg
ICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dCwgJmluamVjdGVkQnVu
ZGxlQ2xpZW50LmJhc2UpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdL
UGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsK
LSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworQGlu
dGVyZmFjZSBSZXNwb25zaXZlbmVzc0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gUmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZQog
Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJD
bGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmU7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNo
TmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGRpZEZpbmlzaExv
YWQgPSB0cnVlOworfQogCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9h
ZGVyQ2xpZW50LmJhc2UpOworLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmU6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBkaWRCZWNvbWVVbnJlc3BvbnNp
dmUgPSB0cnVlOwogfQogCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwogVEVT
VChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCiB7CiAgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5VGVzdCIpKTsKICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsK
IAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBh
Z2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIG5ld10pOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGls
OjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKICAgICBVdGls
OjpydW4oJmRpZEZpbmlzaExvYWQpOwogCiAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKGNvbnRleHQuZ2V0KCksIFV0aWw6OnRvV0soIkJyaWVmbHlQYXVzZSIpLmdldCgp
LCAwKTsKQEAgLTkxLDcgKzkxLDcgQEAgVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJE
b2VzbnRGaQogICAgIC8vIFByZXNzaW5nIGEga2V5IG9uIHRoZSBrZXlib2FyZCBzaG91bGQgc3Rh
cnQgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLiBTaW5jZSB0aGUgd2ViIHByb2Nlc3MKICAgICAv
LyBpcyBnb2luZyB0byBwYXVzZSBiZWZvcmUgaXQgcmVjZWl2ZXMgdGhpcyBrZXlwcmVzcywgaXQg
c2hvdWxkIHRha2UgYSBsaXR0bGUgd2hpbGUgdG8gcmVzcG9uZAogICAgIC8vIChidXQgbm90IHNv
IGxvbmcgdGhhdCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIgZmlyZXMpLgotICAgIHdlYlZpZXcu
c2ltdWxhdGVTcGFjZWJhcktleVByZXNzKCk7CisgICAgW3dlYlZpZXcgdHlwZUNoYXJhY3Rlcjon
ICddOwogCiAgICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOwogCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0
TmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQkocmV2aXNp
b24gMjM1MTM4KQkoZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3Jl
U2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOjIzNTEzOCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW5jbHVkZSAiSmF2
YVNjcmlwdFRlc3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQv
V0tQYWdlUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1Nlc3Npb25TdGF0ZVJlZi5oPgor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7
CitzdGF0aWMgYm9vbCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7CisKK3N0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCopCit7CisgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lk
IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVudFYw
IGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRl
ckNsaWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9h
ZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsK
KyAgICBsb2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0Rm9yUGFnZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFn
ZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworc3RhdGljIFdLUmV0YWluUHRyPFdLRGF0YVJl
Zj4gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBQ
bGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50
KHdlYlZpZXcucGFnZSgpKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFk
b3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgp
KTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworICAgIGRpZEZpbmlzaExvYWQgPSBm
YWxzZTsKKworICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhzdGF0aWNfY2FzdDxXS1Nl
c3Npb25TdGF0ZVJlZj4oV0tQYWdlQ29weVNlc3Npb25TdGF0ZSh3ZWJWaWV3LnBhZ2UoKSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oMSksIG51bGxwdHIpKSk7CisgICAgcmV0dXJuIGFkb3B0V0so
V0tTZXNzaW9uU3RhdGVDb3B5RGF0YShzZXNzaW9uU3RhdGUuZ2V0KCkpKTsKK30KKworVEVTVChX
ZWJLaXQsIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbikKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkp
OworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0
UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS0Rh
dGFSZWY+IGRhdGEgPSBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKGNvbnRleHQuZ2V0KCkpOworICAg
IEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKKworICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRX
SyhXS1Nlc3Npb25TdGF0ZUNyZWF0ZUZyb21EYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBXS1BhZ2VS
ZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKHdlYlZpZXcucGFnZSgpLCBz
ZXNzaW9uU3RhdGUuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3QpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9IGFkb3B0
V0soV0tQYWdlQ29weUNvbW1pdHRlZFVSTCh3ZWJWaWV3LnBhZ2UoKSkpOworICAgIEVYUEVDVF9O
VUxMKGNvbW1pdHRlZFVSTC5nZXQoKSk7CisKKyAgICBhdXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdL
UGFnZUdldEJhY2tGb3J3YXJkTGlzdCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgYXV0byBjdXJyZW50
SXRlbSA9IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oYmFja0ZvcndhcmRMaXN0KTsK
KyAgICBhdXRvIGN1cnJlbnRJdGVtVVJMID0gYWRvcHRXSyhXS0JhY2tGb3J3YXJkTGlzdEl0ZW1D
b3B5VVJMKGN1cnJlbnRJdGVtKSk7CisgICAgYXV0byBleHBlY3RlZFVSTCA9IGFkb3B0V0soVXRp
bDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpOworICAgIEVYUEVDVF9O
T1RfTlVMTChleHBlY3RlZFVSTCk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGN1cnJl
bnRJdGVtVVJMLmdldCgpLCBleHBlY3RlZFVSTC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3Jl
U2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0JKHJldmlzaW9uIDIzNTEzOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdp
dGhvdXROYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0hBVkVfQ19TUEkKKyNpZiBXS19BUElfRU5BQkxF
RAogCiAjaW5jbHVkZSAiSmF2YVNjcmlwdFRlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgpAQCAtMzMsNjYgKzMzLDYzIEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUg
PFdlYktpdC9XS1BhZ2VQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2Vzc2lvblN0YXRl
UmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK0BpbnRlcmZhY2Ug
V0tXZWJWaWV3ICgpCistIChXS1BhZ2VSZWYpX3BhZ2VGb3JUZXN0aW5nOworQGVuZAogCiBzdGF0
aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwogc3RhdGljIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0OworICAgIAorQGludGVyZmFjZSBTZXNzaW9uU3RhdGVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxX
S05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNlc3Npb25TdGF0
ZURlbGVnYXRlCiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2
aWdhdGlvbgogewogICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDooV0tC
YWNrRm9yd2FyZExpc3RJdGVtICopaXRlbUFkZGVkIHJlbW92ZWQ6KE5TQXJyYXk8V0tCYWNrRm9y
d2FyZExpc3RJdGVtICo+ICopaXRlbXNSZW1vdmVkCiB7CiAgICAgZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0ID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0g
ICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKK0BlbmQK
IAotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5k
aWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVy
Q2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dEZvclBhZ2U7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJD
bGllbnQuYmFzZSk7Ci19CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBXS1Jl
dGFpblB0cjxXS0RhdGFSZWY+IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tDb250ZXh0UmVmIGNv
bnRleHQpCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBjcmVhdGVTZXNzaW9uU3RhdGVE
YXRhKCkKIHsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKLSAgICBzZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2Vi
Vmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIs
ICJodG1sIikpLmdldCgpKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbU2Vzc2lvblN0
YXRlRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOworICAgIFt2aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Cisg
ICAgW3ZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0
aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwogCi0g
ICAgYXV0byBzZXNzaW9uU3RhdGUgPSBhZG9wdFdLKHN0YXRpY19jYXN0PFdLU2Vzc2lvblN0YXRl
UmVmPihXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKHdlYlZpZXcucGFnZSgpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPigxKSwgbnVsbHB0cikpKTsKLSAgICByZXR1cm4gYWRvcHRXSyhXS1Nlc3Npb25T
dGF0ZUNvcHlEYXRhKHNlc3Npb25TdGF0ZS5nZXQoKSkpOworICAgIE5TRGF0YSAqZGF0YSA9IFt2
aWV3IF9zZXNzaW9uU3RhdGVEYXRhXTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0RhdGFDcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0
aCkpOwogfQogCiBURVNUKFdlYktpdCwgUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0
aW9uKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBX
S0NvbnRleHRDcmVhdGUoKSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0
LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAg
IFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gZGF0YSA9IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoY29u
dGV4dC5nZXQoKSk7CisgICAgYXV0byBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YSgpOwog
ICAgIEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1dLV2ViVmlldyBuZXddKTsKICAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tTZXNz
aW9uU3RhdGVDcmVhdGVGcm9tRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvblN0
YXRlLmdldCgpKTsKKyAgICBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10sIHNlc3Npb25TdGF0ZS5nZXQoKSk7CiAK
ICAgICBVdGlsOjpydW4oJmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk7CiAKLSAgICBXS1JldGFp
blB0cjxXS1VSTFJlZj4gY29tbWl0dGVkVVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5Q29tbWl0dGVk
VVJMKHdlYlZpZXcucGFnZSgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRl
ZFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUNvbW1pdHRlZFVSTChbd2ViVmlldyBfcGFnZUZvclRl
c3RpbmddKSk7CiAgICAgRVhQRUNUX05VTEwoY29tbWl0dGVkVVJMLmdldCgpKTsKIAotICAgIGF1
dG8gYmFja0ZvcndhcmRMaXN0ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KHdlYlZpZXcucGFn
ZSgpKTsKKyAgICBhdXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlz
dChbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddKTsKICAgICBhdXRvIGN1cnJlbnRJdGVtID0gV0tC
YWNrRm9yd2FyZExpc3RHZXRDdXJyZW50SXRlbShiYWNrRm9yd2FyZExpc3QpOwogICAgIGF1dG8g
Y3VycmVudEl0ZW1VUkwgPSBhZG9wdFdLKFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoY3Vy
cmVudEl0ZW0pKTsKICAgICBhdXRvIGV4cGVjdGVkVVJMID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVV
UkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIzNTEzOCkJKGZyb20gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwOjIzNTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19T
UEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1X
ZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorCisjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZmluaXNoZWQg
PSBmYWxzZTsKK3N0YXRpYyBib29sIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3Mg
PSBmYWxzZTsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICAvLyBPbmx5
IG1hcmsgZmluaXNoZWQgd2hlbiB0aGUgbWFpbiBmcmFtZSBsb2FkcworICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmluaXNoZWQgPSB0
cnVlOworfQorCitzdGF0aWMgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdl
UmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCopCit7CisgICAgaWYgKFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS1N0cmluZ0dldFR5
cGVJRCgpKSB7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKChXS1N0
cmluZ1JlZil1c2VyRGF0YSwgInNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sg
Y2FsbGVkIGFzIGV4cGVjdGVkIikpCisgICAgICAgICAgICByZWNlaXZlZFByb3BlckJhY2tGb3J3
YXJkQ2FsbGJhY2tzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBmaW5pc2hlZCA9IHRydWU7Cit9CisK
K3N0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAg
V0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xp
ZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52
ZXJzaW9uID0gMTsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlk
RmluaXNoTG9hZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0gPSB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CisKKyAgICBXS1BhZ2VTZXRQ
YWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2Vi
S2l0LCBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKK3sKKyAgICBXS1JldGFpblB0cjxX
S0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmpl
Y3RlZEJ1bmRsZVRlc3QoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCIpKTsKKyAg
ICAvLyBFbmFibGUgdGhlIHBhZ2UgY2FjaGUgc28gd2UgY2FuIHRlc3QgdGhlIFdLQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbUlzSW5QYWdlQ2FjaGUgQVBJCisgICAgV0tDb250ZXh0U2V0Q2FjaGVN
b2RlbChjb250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsKKworICAg
IFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2Fk
ZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBh
Z2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwi
KSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIAorICAgIGZpbmlzaGVk
ID0gZmFsc2U7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGls
OjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsK
KyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKworICAgIGZpbmlzaGVkID0gZmFsc2U7CisgICAg
V0tQYWdlR29CYWNrKHdlYlZpZXcucGFnZSgpKTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsK
KyAgICAKKyAgICBFWFBFQ1RfRVEocmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxiYWNrcywg
dHJ1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIz
NTEzOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcxICsyNSw1MSBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJ
X0VOQUJMRUQKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgotCiAjaW5jbHVkZSA8V2ViS2l0L1dL
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIGZpbmlzaGVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCBy
ZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gZmFsc2U7CiAKLXN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgLy8gT25seSBtYXJrIGZpbmlzaGVkIHdoZW4gdGhl
IG1haW4gZnJhbWUgbG9hZHMKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0g
ICAgICAgIHJldHVybjsKK0BpbnRlcmZhY2UgQmFja0ZvcndhcmRDbGllbnQgOiBOU09iamVjdCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCiAKLSAgICBmaW5pc2hlZCA9IHRydWU7Ci19CitA
aW1wbGVtZW50YXRpb24gQmFja0ZvcndhcmRDbGllbnQKIAotc3RhdGljIHZvaWQgd2lsbEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRp
b24KIHsKLSAgICBpZiAoV0tHZXRUeXBlSUQodXNlckRhdGEpID09IFdLU3RyaW5nR2V0VHlwZUlE
KCkpIHsKLSAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoKFdLU3RyaW5n
UmVmKXVzZXJEYXRhLCAic2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayBjYWxs
ZWQgYXMgZXhwZWN0ZWQiKSkKLSAgICAgICAgICAgIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRD
YWxsYmFja3MgPSB0cnVlOwotICAgIH0KLQogICAgIGZpbmlzaGVkID0gdHJ1ZTsKIH0KIAotc3Rh
dGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKKy0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtIGluUGFnZUNhY2hlOihCT09MKWluUGFnZUNhY2hl
CiB7Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgm
bG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisgICAgZmluaXNoZWQgPSB0
cnVlOworfQogCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgbG9hZGVy
Q2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAg
ICBsb2FkZXJDbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gd2lsbEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtOworQGVuZAogCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChw
YWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQorbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBURVNUKFdlYktpdCwgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCiB7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRl
c3QiKSk7Ci0gICAgLy8gRW5hYmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4
dFNldENhY2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nl
cik7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBz
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbQmFja0ZvcndhcmRDbGllbnQgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBh
ZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQo
KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1d
OwogICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwogICAgIAogICAgIGZpbmlzaGVkID0gZmFsc2U7
Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVV
UkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUtaWZyYW1lIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAg
IFV0aWw6OnJ1bigmZmluaXNoZWQpOwogCiAgICAgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBXS1Bh
Z2VHb0JhY2sod2ViVmlldy5wYWdlKCkpOworICAgIFt3ZWJWaWV3IGdvQmFja107CiAgICAgVXRp
bDo6cnVuKCZmaW5pc2hlZCk7Ci0gICAgCi0gICAgRVhQRUNUX0VRKHJlY2VpdmVkUHJvcGVyQmFj
a0ZvcndhcmRDYWxsYmFja3MsIHRydWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348145</attachid>
            <date>2018-08-27 09:02:37 -0700</date>
            <delta_ts>2018-08-27 11:13:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188827-20180827090236.patch</filename>
            <type>text/plain</type>
            <size>76264</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNTM2NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE4LTA4LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVHJhbnNsYXRlIDQgdGVzdHMgdXNpbmcgV0tQYWdlTG9hZGVy
Q2xpZW50IHRvIE9iakMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODgyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAg
ICAgVGhleSB1c2UgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSwgZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0LCBvciB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uCisgICAgICAgIFJhdGhl
ciB0aGFuIGludHJvZHVjZSB0aGVzZSB0byBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LCBJIGp1c3Qg
dHJhbnNsYXRlZCB0aGUgdGVzdHMgdG8gdXNlIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCB3aGljaCBh
bHJlYWR5IGhhdmUgZXF1aXZhbGVudCBjYWxsYmFja3MuCisgICAgICAgIHdpbGxHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbSBoYWQgdXNlckRhdGEgZnJvbSB0aGUgSW5qZWN0ZWRCdW5kbGUsIGJ1dCBu
b2JvZHkgd2FzIHVzaW5nIGl0IHNvIEkgZGlkIG5vdCBhZGQgdGhhdCB0byB0aGUgT2JqQyBTUEks
IHNvIEkgZG9uJ3QgdGVzdCB0aGF0IHVudXNlZAorICAgICAgICBidW5kbGUgZnVuY3Rpb25hbGl0
eSBhbnkgbW9yZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcC4KKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlIHdlYlZpZXc6
ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NUaW1lckRl
bGVnYXRlIF93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTpdKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKTogRGVsZXRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NU
aW1lckRvZXNudEZpcmVFYXJseS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAuCisgICAg
ICAgICgtW1Jlc3BvbnNpdmVuZXNzRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9u
Ol0pOgorICAgICAgICAoLVtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIF93ZWJWaWV3V2ViUHJvY2Vz
c0RpZEJlY29tZVVucmVzcG9uc2l2ZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnByb2Nlc3NEaWRCZWNv
bWVVbnJlc3BvbnNpdmUpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0
UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW06IENv
cGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9u
U3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAuCisgICAgICAgICgtW1Nlc3Npb25TdGF0ZURlbGVn
YXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bU2Vzc2lvblN0
YXRlRGVsZWdhdGUgX3dlYlZpZXc6YmFja0ZvcndhcmRMaXN0SXRlbUFkZGVkOnJlbW92ZWQ6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmlu
aXNoTG9hZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbTog
Q29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwLgorICAgICAgICAoLVtCYWNrRm9yd2FyZENsaWVudCB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW0JhY2tGb3J3YXJkQ2xpZW50
IF93ZWJWaWV3OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTppblBhZ2VDYWNoZTpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ondp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KTogRGVsZXRlZC4KKwogMjAxOC0wOC0yNyAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0MjYyLXJ1bm5l
ciAtcyAtLXRlc3Qtb25seSBzaG91bGQgcmVwbGFjZSB0ZXN0IHJlc3VsdHMKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzUzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjIzLDcgKzIyMyw2IEBACiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2NhbFN0
b3JhZ2VDbGVhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTZBODkyMUQyRjFCRUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAqLzsg
fTsKIAkJNTFFNkE4OTYxRDJGMUNBNzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
NkE4OTUxRDJGMUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi87IH07CiAJ
CTUxRUIxMjk0MUZERjA1MjUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVCMTI5MzFGREYwNTA1
MDBBNUExQkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1tICovOyB9OwotCQk1MUZDRjdBMTE1MzRC
MkEwMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk3MTUz
NEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3Bw
ICovOyB9OwogCQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIwQkNG
NEExNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTI0
QkJDOUUxOURGNzJDMDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQzlCMTlERjM3
MTQwMDJGMUFGMSAvKiBmaWxlLXdpdGgtdmlkZW8uaHRtbCAqLzsgfTsKIAkJNTI0QkJDQTExOUUz
MEM3NzAwMkYxQUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQ0EwMTlFMzBDNjMwMDJGMUFGMSAvKiB0ZXN0Lm1w
NCAqLzsgfTsKQEAgLTI5MCw2ICsyODksMTAgQEAKIAkJNUNCM0NFMzkxRkExNjk3RjAwQzNBMkQ2
IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzQ0UzODFGQTE2OTE3MDBDM0EyRDYgLyogV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbSAqLzsgfTsKIAkJNUNCNDBCNEUxRjRCOThEMzAwN0RDN0I5IC8qIFVJ
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNUNC
NUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjVCM0JEMUZGQzUx
N0UwMEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi87IH07CisJCTVDQ0Ix
MEUxMjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwRTAyMTM0NTc5RDAwQUM1
QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07CisJCTVDQ0IxMEUyMjEzNDU3RDUw
MEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwREQyMTM0NTc5QzAw
QUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0gKi87IH07CisJ
CTVDQ0IxMEUzMjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0NCMTBERTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXRO
YXZpZ2F0aW9uLm1tICovOyB9OworCQk1Q0NCMTBFNDIxMzQ1N0UwMDBBQzVBRjAgLyogU2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0NCMTBERjIxMzQ1NzlEMDBBQzVBRjAgLyogU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi87IH07CiAJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUzQiAv
KiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRF
eHRlbnNpb25TdG9yZS5tbSAqLzsgfTsKIAkJNUNFQUI1RTExRkE5MzlGNDAwQTc3RkFBIC8qIF9X
S0lucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAq
LzsgfTsKIAkJNUU0QjFEMkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0QjFE
MkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tICovOyB9OwpAQCAt
NTI5LDEwICs1MzIsOCBAQAogCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2FkUGFn
ZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEEzQUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNoLmNw
cCAqLzsgfTsKIAkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQYWdp
bmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJERDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVk
V2ViVmlldy5jcHAgKi87IH07CiAJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVX
aW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRlckNy
YXNoLmNwcCAqLzsgfTsKLQkJN0NDRTdGMTAxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovOyB9OwogCQk3Q0NFN0YxMTFBNDExQUU2MDA0
NDdDNEMgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4MjEyRkNBNkFB
MDBEMkMxMjkgLyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi87
IH07CiAJCTdDQ0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3Jz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENjQw
QjU0MTc4NzVERkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLzsgfTsK
LQkJN0NDRTdGMTMxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RkNGNzk4MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAgKi87IH07CiAJCTdDQ0U3RjE0MUE0MTFBRTYwMDQ0N0M0QyAvKiBTaG91bGRLZWVwQ3VycmVu
dEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNUM3MDQxOTE5RUE1RjAwRDhCM0UxIC8qIFNob3VsZEtl
ZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgKi87IH07CiAJCTdDQ0U3RjE1
MUE0MTFBRTYwMDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYg
LyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovOyB9OwogCQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdD
NEMgLyogVGVybWluYXRlVHdpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFFNzJGNDcxNzNFQjIxNDAwNjM2MkYwIC8qIFRlcm1pbmF0ZVR3aWNl
LmNwcCAqLzsgfTsKQEAgLTU3MCw3ICs1NzEsNiBAQAogCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5
NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAg
LyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi87IH07CiAJCTgzNDlEM0My
MURCOTZEREUwMDRBOUY2NSAvKiBDb250ZXh0TWVudURvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzExREI5NkREQTAwNEE5RjY1
IC8qIENvbnRleHRNZW51RG93bmxvYWQubW0gKi87IH07CiAJCTgzNDlEM0M0MURCOTcyOEUwMDRB
OUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzMxREI5NzI0RjAw
NEE5RjY1IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRtbCAqLzsgfTsKLQkJODM1
Q0Y5NjcxRDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzVDRjk2NjFEMjVGQ0Q2MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uLmNwcCAqLzsgfTsKIAkJODM2MUYxNzgxRTYxMEI0RTAwNzU5QjI1IC8qIGxpbmstd2l0
aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MUYxNzcxRTYxMEIyMTAwNzU5
QjI1IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgKi87
IH07CiAJCTgzNzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3JlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NzlDMzcxRjgy
RkVCMDAwN0NEQThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTgzN0EzNUYxMUQ5
QTFFN0QwMDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTM1RjAxRDlBMUU2
NDAwNjYzQzU3IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLzsgfTsKQEAgLTU3OCw3
ICs1NzgsNiBAQAogCQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNCQUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5t
bSAqLzsgfTsKIAkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9hZEluRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzQkM1QUJGMjBFNkMwRDMwMEY1ODc5RiAvKiBTdGFydExvYWRJbkRpZEZhaWxQ
cm92aXNpb25hbExvYWQubW0gKi87IH07CiAJCTgzREI3OTY5MUVGNjNCM0MwMEJGQTVFNSAvKiBG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0RCNzk2NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovOyB9OwotCQk4M0RF
MTM0RDFFRjFDNTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RFMTM0QzFFRjFDNEZFMDBD
MUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07CiAJCTgzRjIyQzY0MjBCMzU1
RjgwMDM0Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyMkM2MzIwQjM1NUVCMDAzNDI3N0Ug
LyogTm9Qb2xpY3lEZWxlZ2F0ZVJlc3BvbnNlLm1tICovOyB9OwogCQk4QzEwQUY5ODIwNjQ2Nzky
MDAxOEZEOTAgLyogbG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk3MjA2
NDY3ODMwMDE4RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi87
IH07CiAJCThDMTBBRjk5MjA2NDY3QTkwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5j
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBB
Rjk2MjA2NDY3NzcwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSAqLzsgfTsK
QEAgLTE1MDYsOCArMTUwNSw2IEBACiAJCTUxRTkzMDE2MTU2QjEzRTEwMDRDOTlERiAvKiBXS1Bh
Z2VHZXRTY2FsZUZhY3Rvck5vdFplcm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJC
YXNpYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJCYXNpYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQkJCNEMxNTEz
RDRFOTAwODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVVSTC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTFGQ0Y3OTcxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUZDRjc5ODE1MzRBQzZEMDAxMDQ0OTEgLyogU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MjBCQ0Y0QTE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2
ZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXJj
aGl2ZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjBCQ0Y0QjE0
MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTI0QkJDOUIxOURGMzcxNDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZpbGUtd2l0aC12aWRlby5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODAsNiArMTU3NywxMCBAQAogCQk1Q0IzQ0UzODFGQTE2
OTE3MDBDM0EyRDYgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlEZWxl
Z2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCNUIzQkQxRkZDNTE3RTAw
QzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDQjEwREQyMTM0NTc5QzAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0NCMTBERTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0
ZVdpdGhvdXROYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0NCMTBERjIxMzQ1NzlEMDBBQzVBRjAgLyogU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNDQjEwRTAyMTM0NTc5RDAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNz
VGltZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25z
aXZlbmVzc1RpbWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0UzNTREODFF
NzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8q
IF9XS0lucHV0RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBfV0tJbnB1dERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
RTRCMUQyQzFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXdEZWxlZ2F0ZS5t
bTsgcGF0aCA9IC4uL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE2NzcsNyArMTY3OCw2IEBACiAJCTgzNDEzOEM2MjAzMjYxQjkwMEYy
Njk2MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ5RDNDMTFEQjk2RERBMDA0
QTlGNjUgLyogQ29udGV4dE1lbnVEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENvbnRleHRNZW51RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzNDlEM0MzMURCOTcyNEYwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxv
YWQtYXR0cmlidXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRo
LWRvd25sb2FkLWF0dHJpYnV0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODM1Q0Y5NjYxRDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2
aWdhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0b3Jl
U2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0
dHJpYnV0ZS13aXRoLXNsYXNoZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJs
aW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NzlDMzcxRjgyRkVCMDAwN0NEQThBIC8qIFZpc2l0ZWRM
aW5rU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNp
dGVkTGlua1N0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBMzVGMDFE
OUExRTY0MDA2NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTY4Niw3ICsxNjg2LDYgQEAKIAkJODNCQUVFOEMxRUY0NjI1
NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQzVBQkYyMEU2QzBEMzAwRjU4NzlGIC8qIFN0
YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8q
IEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNERTEzNEMxRUYxQzRGRTAw
QzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzRjIyQzYzMjBCMzU1RUIwMDM0Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRl
UmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb1Bv
bGljeURlbGVnYXRlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJD
cmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5k
b3dBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTUsNyAr
MTg5NCw2IEBACiAJCUMwQURCRTdCMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0VGVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkgLyogUmVz
dG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBBREJFODQxMkZDQTZCNjAwRDJD
MTI5IC8qIHNpbXBsZS1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2lt
cGxlLWZvcm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwQkQ2NjlDMTMx
RDNDRjcwMEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJE
b2VzbnRGaXJlRWFybHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEJENjY5
RTEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9C
dW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2
ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFj
dG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2lu
Z1NjYWxlRmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0
NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9C
dW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzgyLDEyICsyMzgwLDE2
IEBACiAJCQkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0
aW9uc1Byb3RvY29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVp
cmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJG
NzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAorCQkJCTVDQ0IxMEUwMjEzNDU3
OUQwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tICovLAorCQkJCTVDQ0IxMEREMjEz
NDU3OUMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tICov
LAorCQkJCTVDQ0IxMERFMjEzNDU3OUQwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0
aG91dE5hdmlnYXRpb24ubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1
bk9wZW5QYW5lbC5tbSAqLywKIAkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2Ny
aXB0QWZ0ZXJEb2N1bWVudExvYWQubW0gKi8sCiAJCQkJNUNBOTg1NTEyMTEzQ0I4QzAwNTdFQjZC
IC8qIFNhZmVCcm93c2luZy5tbSAqLywKIAkJCQlDRTA5NDczNjIwNjMyMjNCMDAzQzlCQTAgLyog
U2NoZW1lUmVnaXN0cnkubW0gKi8sCiAJCQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNl
cnZpY2VXb3JrZXJCYXNpYy5tbSAqLywKIAkJCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyog
U2V0TWF4aW11bVByZXdhcm1lZFByb2Nlc3NDb3VudC5tbSAqLywKKwkJCQk1Q0NCMTBERjIxMzQ1
NzlEMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8sCiAJCQkJ
MzdCQ0E2MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dp
bmRvd0FjdGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlu
a1RvRml0Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0
b3JlLm1tICovLApAQCAtMjkyNSwxNiArMjkyNywxMSBAQAogCQkJCThBM0FGOTNBMTZDOUVEMjcw
MEQyNDhDMSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgKi8sCiAJCQkJMkREN0QzQTkxNzgy
MDVEMDAwMjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLywKIAkJ
CQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAg
Ki8sCi0JCQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIu
Y3BwICovLAogCQkJCTUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1Rp
bWVyQ3Jhc2gubW0gKi8sCi0JCQkJQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovLAogCQkJCUMwQkQ2NjlFMTMxRDNDRkYw
MEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAg
Ki8sCiAJCQkJODNCNkRFNkUxRUU3NTIwRjAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUu
Y3BwICovLAogCQkJCUMwQURCRTgyMTJGQ0E2QUEwMEQyQzEyOSAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcCAqLywKLQkJCQk4MzVDRjk2NjFEMjVGQ0Q2MDAxQTY1
RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQky
RDY0MEI1NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8s
Ci0JCQkJNTFGQ0Y3OTgxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCAqLywKLQkJCQk1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCAqLywKIAkJCQk1MUU1QzcwNDE5MTlFQTVG
MDBEOEIzRTEgLyogU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNw
cCAqLywKIAkJCQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcu
Y3BwICovLAogCQkJCTc2NzM0OTk3MTkzMDE2REMwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmlu
Z0RpZEZhaWxQcm92aXNpb25hbExvYWQuY3BwICovLApAQCAtMzkxNywxMiArMzkxNCwxMiBAQAog
CQkJCTdDQ0U3RjBFMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2Vi
Vmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRjFBNDExQUU2MDA0NDdDNEMgLyog
UmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUM4RTFBNTFG
MjZBRjRDMDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTgzREUxMzREMUVGMUM1MDgwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0IxMEUxMjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25z
aXZlbmVzc1RpbWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyQzRDOUUyMEVBQTQwRDAwNDk0
NUVBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdD
Q0U3RjEwMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0IxMEUyMjEzNDU3RDUwMEFDNUFGMCAvKiBS
ZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODNCNkRFNkYxRUU3NTIyMTAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdGMTExQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3RvcmVTZXNzaW9u
U3RhdGVDb250YWluaW5nRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODM1Q0Y5Njcx
RDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NCMTBFMzIxMzQ1N0Q4MDBBQzVBRjAgLyogUmVzdG9y
ZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDZF
ODE2RjgxRTc5RTI5QzAwMzc1QURDIC8qIFJlc3RvcmVTdGF0ZUFmdGVyVGVybWluYXRpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNDE4QkUxNTFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJl
Y3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTgwQzBGQTFFRTY3REYwMDA0NjhGNDcg
LyogUnVuT3BlblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTQyLDcgKzM5MzksNyBAQAog
CQkJCTdDODNFMDUyMUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTE3OTkxODgxRTFDOTk0RTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlci5tbSBp
biBTb3VyY2VzICovLAogCQkJCUExNzk5MThCMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZm
ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDQ0U3RjEzMUE0MTFBRTYwMDQ0N0M0QyAv
KiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
Q0NCMTBFNDIxMzQ1N0UwMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YxNDFBNDExQUU2MDA0NDdDNEMgLyogU2hvdWxk
S2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3QkNBNjFDMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5O
ZXdXaW5kb3dBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzUxRDBBNjU0NjAw
RkVCQ0YzIC8qIFNocmlua1RvRml0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC00MTQ2LDcgKzQxNDMs
NiBAQAogCQkJCUJDNTc1QkUwMTI2RjU5MEQwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllc01h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUI1NUFEMUQ1MTc5RjNCMzAwMEFDMTQ5NCAvKiBQcmV2
ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzBCRDY2OUYxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHlfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxRkNGN0ExMTUzNEIyQTAw
MDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVy
aW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0UzNTI0RjgxQjE0MzFGNjAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGlu
Z19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMkQzMTkxNERDNjhCOTAwRkZCMURE
IC8qIFVzZXJNZXNzYWdlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwCShyZXZpc2lvbiAyMzUzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDk2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJ
Ci0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2Vi
Vmlldy5oIgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGRpZEZp
bmlzaExvYWQgeyBmYWxzZSB9Owotc3RhdGljIGJvb2wgZGlkQmVjb21lVW5yZXNwb25zaXZlIHsg
ZmFsc2UgfTsKLQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBkaWRGaW5pc2hMb2Fk
ID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZl
ID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYg
cGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAgIGxvYWRl
ckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LnByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOwot
Ci0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2Up
OwotfQotCi1URVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lclNob3VsZE5vdEZpcmVBZnRl
clRlYXJEb3duKQotewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9w
dFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgLy8gVGhlIHR3byB2aWV3cyBuZWVkIHRvIHNo
YXJlIHRoZSBzYW1lIFdlYkNvbnRlbnQgcHJvY2Vzcy4KLSAgICBXS0NvbnRleHRTZXRNYXhpbXVt
TnVtYmVyT2ZQcm9jZXNzZXMoY29udGV4dC5nZXQoKSwgMSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldzEoY29udGV4dC5nZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJW
aWV3MS5wYWdlKCkpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3MS5wYWdlKCksIGFkb3B0
V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsK
LSAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJl
Y29tZVVucmVzcG9uc2l2ZSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldzIoY29udGV4
dC5nZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3Mi5wYWdlKCkpOwotCi0g
ICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldzIucGFn
ZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIp
KS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKLQotICAgIEVYUEVDVF9G
QUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwotCi0gICAgLy8gQ2FsbCBzdG9wTG9hZGluZygp
IGFuZCBjbG9zZSgpIG9uIHRoZSBmaXJzdCBwYWdlIGluIHF1aWNrIHN1Y2Nlc3Npb24uCi0gICAg
V0tQYWdlU3RvcExvYWRpbmcod2ViVmlldzEucGFnZSgpKTsKLSAgICBXS1BhZ2VDbG9zZSh3ZWJW
aWV3MS5wYWdlKCkpOwotCi0gICAgLy8gV2UgbmVlZCB0byB3YWl0IGhlcmUgYmVjYXVzZSBpdCB0
YWtlcyAzIHNlY29uZHMgZm9yIGEgcHJvY2VzcyB0byBiZSByZWNvZ25pemVkIGFzIHVucmVzcG9u
c2l2ZS4KLSAgICBVdGlsOjpzbGVlcCg0KTsKLQotICAgIC8vIFdlIHNob3VsZCBub3QgcmVwb3J0
IHRoZSBzZWNvbmQgcGFnZSBzaGFyaW5nIHRoZSBzYW1lIHByb2Nlc3MgYXMgdW5yZXNwb25zaXZl
LgotICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5l
c3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAJKHJldmlzaW9uIDIzNTM2NCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLSNpbmNsdWRlICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotCi1uYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7Ci1zdGF0aWMgYm9v
bCBkaWRCZWNvbWVVbnJlc3BvbnNpdmU7Ci1zdGF0aWMgYm9vbCBkaWRCcmllZmx5UGF1c2U7Ci0K
LXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17
Ci0gICAgZGlkQnJpZWZseVBhdXNlID0gdHJ1ZTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIkRpZEJy
aWVmbHlQYXVzZSIsIG1lc3NhZ2VOYW1lKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikK
LXsKLSAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgcHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEJl
Y29tZVVucmVzcG9uc2l2ZSA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7Ci0gICAgbWVtc2V0KCZpbmplY3Rl
ZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7Ci0KLSAgICBp
bmplY3RlZEJ1bmRsZUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGluamVjdGVkQnVuZGxl
Q2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0KLSAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChjb250ZXh0LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCi17Ci0gICAgV0tQYWdl
TG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAw
LCBzaXplb2YobG9hZGVyQ2xpZW50KSk7Ci0KLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9u
ID0gMDsKLSAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNo
TG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlID0gcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsKLQotICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKLX0KLQotVEVTVChXZWJLaXQs
IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCi17Ci0gICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIp
KTsKLSAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKLQotICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJD
bGllbnQod2ViVmlldy5wYWdlKCkpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2Uo
KSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSku
Z2V0KCkpOwotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7Ci0KLSAgICBXS0NvbnRleHRQ
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSygiQnJp
ZWZseVBhdXNlIikuZ2V0KCksIDApOwotCi0gICAgLy8gUHJlc3NpbmcgYSBrZXkgb24gdGhlIGtl
eWJvYXJkIHNob3VsZCBzdGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNpbmNlIHRoZSB3
ZWIgcHJvY2VzcwotICAgIC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCByZWNlaXZlcyB0
aGlzIGtleXByZXNzLCBpdCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byByZXNwb25kCi0g
ICAgLy8gKGJ1dCBub3Qgc28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBmaXJl
cykuCi0gICAgd2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKLQotICAgIFV0aWw6
OnJ1bigmZGlkQnJpZWZseVBhdXNlKTsKLQotICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJl
c3BvbnNpdmUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3Jl
U2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdh
dGlvbi5jcHAJKHJldmlzaW9uIDIzNTM2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIkphdmFTY3JpcHRUZXN0LmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIK
LSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KLSNp
bmNsdWRlIDxXZWJLaXQvV0tTZXNzaW9uU3RhdGVSZWYuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewotCi1zdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwotc3RhdGljIGJvb2wgZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRp
ZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRl
bSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0ID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VS
ZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAg
bWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAgIGxv
YWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hM
b2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2U7
Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFz
ZSk7Ci19Ci0KLXN0YXRpYyBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGNyZWF0ZVNlc3Npb25TdGF0
ZURhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcoY29udGV4dCk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7Ci0K
LSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVS
TEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZk
aWRGaW5pc2hMb2FkKTsKLSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0KLSAgICBhdXRvIHNl
c3Npb25TdGF0ZSA9IGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tTZXNzaW9uU3RhdGVSZWY+KFdLUGFn
ZUNvcHlTZXNzaW9uU3RhdGUod2ViVmlldy5wYWdlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KDEpLCBudWxscHRyKSkpOwotICAgIHJldHVybiBhZG9wdFdLKFdLU2Vzc2lvblN0YXRlQ29weURh
dGEoc2Vzc2lvblN0YXRlLmdldCgpKSk7Ci19Ci0KLVRFU1QoV2ViS2l0LCBSZXN0b3JlU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24pCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVm
PiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLQotICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2Vi
Vmlldy5wYWdlKCkpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBkYXRhID0gY3JlYXRl
U2Vzc2lvblN0YXRlRGF0YShjb250ZXh0LmdldCgpKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZGF0
YSk7Ci0KLSAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tTZXNzaW9uU3RhdGVDcmVh
dGVGcm9tRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3Rh
dGVXaXRob3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvblN0YXRlLmdldCgpKTsK
LQotICAgIFV0aWw6OnJ1bigmZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KTsKLQotICAgIFdLUmV0
YWluUHRyPFdLVVJMUmVmPiBjb21taXR0ZWRVUkwgPSBhZG9wdFdLKFdLUGFnZUNvcHlDb21taXR0
ZWRVUkwod2ViVmlldy5wYWdlKCkpKTsKLSAgICBFWFBFQ1RfTlVMTChjb21taXR0ZWRVUkwuZ2V0
KCkpOwotCi0gICAgYXV0byBiYWNrRm9yd2FyZExpc3QgPSBXS1BhZ2VHZXRCYWNrRm9yd2FyZExp
c3Qod2ViVmlldy5wYWdlKCkpOwotICAgIGF1dG8gY3VycmVudEl0ZW0gPSBXS0JhY2tGb3J3YXJk
TGlzdEdldEN1cnJlbnRJdGVtKGJhY2tGb3J3YXJkTGlzdCk7Ci0gICAgYXV0byBjdXJyZW50SXRl
bVVSTCA9IGFkb3B0V0soV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTChjdXJyZW50SXRlbSkp
OwotICAgIGF1dG8gZXhwZWN0ZWRVUkwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291
cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZXhwZWN0ZWRVUkwp
OwotICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChjdXJyZW50SXRlbVVSTC5nZXQoKSwgZXhw
ZWN0ZWRVUkwuZ2V0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0j
ZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJKHJldmlzaW9u
IDIzNTM2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLSNp
bmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5o
IgotI2luY2x1ZGUgIlRlc3QuaCIKLQotI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5oPgotCi1u
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGZpbmlzaGVkID0gZmFsc2U7
Ci1zdGF0aWMgYm9vbCByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gZmFsc2U7
Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgLy8gT25seSBtYXJrIGZp
bmlzaGVkIHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMKLSAgICBpZiAoIVdLRnJhbWVJc01haW5G
cmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZpbmlzaGVkID0gdHJ1ZTsKLX0K
LQotc3RhdGljIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdLUGFnZVJlZiwgV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKQot
ewotICAgIGlmIChXS0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkg
ewotICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZygoV0tTdHJpbmdSZWYp
dXNlckRhdGEsICJzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrIGNhbGxlZCBh
cyBleHBlY3RlZCIpKQotICAgICAgICAgICAgcmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxi
YWNrcyA9IHRydWU7Ci0gICAgfQotCi0gICAgZmluaXNoZWQgPSB0cnVlOwotfQotCi1zdGF0aWMg
dm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxv
YWRlckNsaWVudFYxIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwg
c2l6ZW9mKGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9
IDE7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExv
YWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
ID0gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOwotCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRl
ckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQotCi1URVNUKFdlYktpdCwgU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QiKSk7Ci0gICAgLy8gRW5h
YmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoY29u
dGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7Ci0KLSAgICBQbGF0Zm9y
bVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50
KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFk
b3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgp
KTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKLSAgICAKLSAgICBmaW5pc2hlZCA9IGZhbHNl
OwotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRl
VVJMRm9yUmVzb3VyY2UoInNpbXBsZS1pZnJhbWUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0gICAgVXRp
bDo6cnVuKCZmaW5pc2hlZCk7Ci0KLSAgICBmaW5pc2hlZCA9IGZhbHNlOwotICAgIFdLUGFnZUdv
QmFjayh3ZWJWaWV3LnBhZ2UoKSk7Ci0gICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7Ci0gICAgCi0g
ICAgRVhQRUNUX0VRKHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MsIHRydWUpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1f
QnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCShyZXZpc2lvbiAyMzUz
NjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQot
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgotCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+Ci0jaW5jbHVkZSA8V2Vi
S2l0L1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7Ci0KLWNsYXNzIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCA6IHB1Ymxp
YyBJbmplY3RlZEJ1bmRsZVRlc3QgewotcHVibGljOgotICAgIFNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcik7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKLX07Ci0KLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdD4gcmVnaXN0cmFyKCJTaG91bGRHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbVRlc3QiKTsKLQotc3RhdGljIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW1DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiBpdGVtLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKikKLXsKLSAgICAv
LyBUaGUgaXRlbSBzaG91bGQgYmUgaW4gdGhlIHBhZ2UgY2FjaGUKLSAgICBpZiAoV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtSXNJblBhZ2VDYWNoZShpdGVtKSkKLSAgICAgICAgKnVzZXJEYXRh
ID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInNob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtQ2FsbGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVkIik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0OjpTaG91bGRHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgOiBJ
bmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKLXsKLX0KLQotdm9pZCBTaG91bGRHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbVRlc3Q6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBX
S0J1bmRsZVBhZ2VSZWYgcGFnZSkKLXsgICAgCi0gICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjEgcGFnZUxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNp
emVvZihwYWdlTG9hZGVyQ2xpZW50KSk7Ci0gICAgCi0gICAgcGFnZUxvYWRlckNsaWVudC5iYXNl
LnZlcnNpb24gPSAxOwotICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhp
czsKLSAgICBwYWdlTG9hZGVyQ2xpZW50LnNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0g
c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjazsKLSAgICAKLSAgICBXS0J1bmRs
ZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZwYWdlTG9hZGVyQ2xpZW50LmJhc2UpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9u
c2l2ZW5lc3NUaW1lci5tbQkocmV2aXNpb24gMjM1MzY0KQkoZnJvbSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcDoyMzUzNjQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZhbHNlIH07CitzdGF0aWMg
Ym9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OworCitzdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0
IHZvaWQqKQoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBw
cm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKikK
K3sKKyAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBz
ZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNs
aWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KGxvYWRlckNsaWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Cisg
ICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JG
cmFtZTsKKyAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBSZXNwb25z
aXZlbmVzc1RpbWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKKyAg
ICAvLyBUaGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9j
ZXNzLgorICAgIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0Lmdl
dCgpLCAxKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsK
KyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7CisKKyAgICBXS1BhZ2VM
b2FkVVJMKHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJj
ZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9h
ZCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKKworICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKKyAgICBzZXRQYWdlTG9hZGVy
Q2xpZW50KHdlYlZpZXcyLnBhZ2UoKSk7CisKKyAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Cisg
ICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJM
Rm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmRp
ZEZpbmlzaExvYWQpOworCisgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7
CisKKyAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkgb24gdGhlIGZpcnN0IHBh
Z2UgaW4gcXVpY2sgc3VjY2Vzc2lvbi4KKyAgICBXS1BhZ2VTdG9wTG9hZGluZyh3ZWJWaWV3MS5w
YWdlKCkpOworICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7CisKKyAgICAvLyBXZSBu
ZWVkIHRvIHdhaXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNz
IHRvIGJlIHJlY29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgorICAgIFV0aWw6OnNsZWVwKDQpOwor
CisgICAgLy8gV2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhlIHNlY29uZCBwYWdlIHNoYXJpbmcgdGhl
IHNhbWUgcHJvY2VzcyBhcyB1bnJlc3BvbnNpdmUuCisgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29t
ZVVucmVzcG9uc2l2ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2Vu
ZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNp
dmVuZXNzVGltZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCShyZXZpc2lvbiAyMzUzNjQpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDY0ICsyNSw2NiBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2luY2x1ZGUg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZhbHNlIH07CiBzdGF0aWMg
Ym9vbCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OwogCi1zdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0
IHZvaWQqKQorQGludGVyZmFjZSBSZXNwb25zaXZlbmVzc1RpbWVyRGVsZWdhdGUgOiBOU09iamVj
dCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisgICAgCitAaW1wbGVtZW50YXRpb24gUmVz
cG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCiB7
CiAgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHByb2Nlc3NEaWRC
ZWNvbWVVbnJlc3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqKQorLSAodm9pZClf
d2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdLV2ViVmlldyAqKXdlYlZp
ZXcKIHsKICAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9p
ZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRl
ckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6
ZW9mKGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRG
b3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9
IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CitAZW5kCiAKLSAgICBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19CituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0LCBSZXNwb25zaXZlbmVzc1RpbWVyU2hvdWxkTm90
RmlyZUFmdGVyVGVhckRvd24pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICAvLyBUaGUgdHdvIHZpZXdzIG5l
ZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNzLgotICAgIFdLQ29udGV4dFNl
dE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgpLCAxKTsKLQotICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xp
ZW50KHdlYlZpZXcxLnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcxLnBhZ2Uo
KSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSku
Z2V0KCkpOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIG5ld10pOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBh
ZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3NldE1heGlt
dW1OdW1iZXJPZlByb2Nlc3NlczoxXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbUmVz
cG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlIG5ld10pOworCisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3
MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
W3dlYlZpZXcxIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dl
YlZpZXcxIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9h
ZCk7CiAKICAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKIAotICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVy
Q2xpZW50KHdlYlZpZXcyLnBhZ2UoKSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcyIHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBkaWRGaW5pc2hMb2FkID0g
ZmFsc2U7Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0soVXRpbDo6
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBbd2Vi
VmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2Fk
KTsKIAogICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwogCiAgICAgLy8g
Q2FsbCBzdG9wTG9hZGluZygpIGFuZCBjbG9zZSgpIG9uIHRoZSBmaXJzdCBwYWdlIGluIHF1aWNr
IHN1Y2Nlc3Npb24uCi0gICAgV0tQYWdlU3RvcExvYWRpbmcod2ViVmlldzEucGFnZSgpKTsKLSAg
ICBXS1BhZ2VDbG9zZSh3ZWJWaWV3MS5wYWdlKCkpOworICAgIFt3ZWJWaWV3MSBzdG9wTG9hZGlu
Z107CisgICAgW3dlYlZpZXcxIF9jbG9zZV07CiAKICAgICAvLyBXZSBuZWVkIHRvIHdhaXQgaGVy
ZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNzIHRvIGJlIHJlY29nbml6
ZWQgYXMgdW5yZXNwb25zaXZlLgogICAgIFV0aWw6OnNsZWVwKDQpOwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250Rmly
ZUVhcmx5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbQkocmV2aXNpb24gMjM1
MzY0KQkoZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVz
c1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcDoyMzUzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9vbCBkaWRC
ZWNvbWVVbnJlc3BvbnNpdmU7CitzdGF0aWMgYm9vbCBkaWRCcmllZmx5UGF1c2U7CisKK3N0YXRp
YyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwg
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAg
ZGlkQnJpZWZseVBhdXNlID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkRpZEJyaWVmbHlQ
YXVzZSIsIG1lc3NhZ2VOYW1lKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAg
ICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29t
ZVVucmVzcG9uc2l2ZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEJlY29tZVVu
cmVzcG9uc2l2ZSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7CisgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRs
ZUNsaWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7CisKKyAgICBpbmplY3Rl
ZEJ1bmRsZUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGU7CisKKyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVu
dChjb250ZXh0LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Cit9CisKK3N0YXRpYyB2b2lk
IHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9hZGVy
Q2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXpl
b2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsK
KyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lOworICAgIGxvYWRlckNsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0g
cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworVEVTVChXZWJLaXQsIFJlc3Bv
bnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRC
dW5kbGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKKyAg
ICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKKworICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQo
d2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRv
cHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkp
OworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisKKyAgICBXS0NvbnRleHRQb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSygiQnJpZWZseVBh
dXNlIikuZ2V0KCksIDApOworCisgICAgLy8gUHJlc3NpbmcgYSBrZXkgb24gdGhlIGtleWJvYXJk
IHNob3VsZCBzdGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNpbmNlIHRoZSB3ZWIgcHJv
Y2VzcworICAgIC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCByZWNlaXZlcyB0aGlzIGtl
eXByZXNzLCBpdCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byByZXNwb25kCisgICAgLy8g
KGJ1dCBub3Qgc28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBmaXJlcykuCisg
ICAgd2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKKworICAgIFV0aWw6OnJ1bigm
ZGlkQnJpZWZseVBhdXNlKTsKKworICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNp
dmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2
ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eS5tbQkocmV2aXNpb24gMjM1MzY0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwxMiArMjUsMTIgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgV0tf
SEFWRV9DX1NQSQorI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKIAogI2luY2x1
ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0K
LW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlICJUZXN0V0tXZWJWaWV3LmgiCisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwog
c3RhdGljIGJvb2wgZGlkQmVjb21lVW5yZXNwb25zaXZlOwpAQCAtNDIsMTYgKzQyLDYgQEAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZQogICAgIEVYUEVDVF9XS19TVFJF
USgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUpOwogfQogCi1zdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0
IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBw
cm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0g
ICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgc2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgV0tDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKQEAgLTYzLDI3ICs1
MywzNyBAQCBzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvCiAgICAgV0tD
b250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dCwgJmluamVjdGVkQnVuZGxlQ2xp
ZW50LmJhc2UpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBt
ZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworQGludGVyZmFj
ZSBSZXNwb25zaXZlbmVzc0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gUmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZQogCi0gICAg
bG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlz
aExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQu
cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNp
dmU7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdh
dGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGRpZEZpbmlzaExvYWQgPSB0
cnVlOworfQogCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xp
ZW50LmJhc2UpOworLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNp
dmU6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0
cnVlOwogfQogCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwogVEVTVChXZWJL
aXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCiB7CiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
SW5qZWN0ZWRCdW5kbGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVz
dCIpKTsKICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKIAotICAg
IFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2Fk
ZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtS
ZXNwb25zaXZlbmVzc0RlbGVnYXRlIG5ld10pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVh
dGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKICAgICBVdGlsOjpydW4o
JmRpZEZpbmlzaExvYWQpOwogCiAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVu
ZGxlKGNvbnRleHQuZ2V0KCksIFV0aWw6OnRvV0soIkJyaWVmbHlQYXVzZSIpLmdldCgpLCAwKTsK
QEAgLTkxLDcgKzkxLDcgQEAgVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aQogICAgIC8vIFByZXNzaW5nIGEga2V5IG9uIHRoZSBrZXlib2FyZCBzaG91bGQgc3RhcnQgdGhl
IHJlc3BvbnNpdmVuZXNzIHRpbWVyLiBTaW5jZSB0aGUgd2ViIHByb2Nlc3MKICAgICAvLyBpcyBn
b2luZyB0byBwYXVzZSBiZWZvcmUgaXQgcmVjZWl2ZXMgdGhpcyBrZXlwcmVzcywgaXQgc2hvdWxk
IHRha2UgYSBsaXR0bGUgd2hpbGUgdG8gcmVzcG9uZAogICAgIC8vIChidXQgbm90IHNvIGxvbmcg
dGhhdCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIgZmlyZXMpLgotICAgIHdlYlZpZXcuc2ltdWxh
dGVTcGFjZWJhcktleVByZXNzKCk7CisgICAgW3dlYlZpZXcgdHlwZUNoYXJhY3RlcjonICddOwog
CiAgICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOwogCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdh
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjM1
MzY0KQkoZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOjIzNTM2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW5jbHVkZSAiSmF2YVNjcmlw
dFRlc3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdl
UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1Nlc3Npb25TdGF0ZVJlZi5oPgorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CitzdGF0
aWMgYm9vbCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCopCit7CisgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRDaGFu
Z2VCYWNrRm9yd2FyZExpc3QgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVy
Q2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRl
ckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVu
dCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xp
ZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBs
b2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0Rm9yUGFnZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxv
YWRlckNsaWVudC5iYXNlKTsKK30KKworc3RhdGljIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gY3Jl
YXRlU2Vzc2lvblN0YXRlRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBQbGF0Zm9y
bVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZp
ZXcucGFnZSgpKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0so
VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsK
KworICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhzdGF0aWNfY2FzdDxXS1Nlc3Npb25T
dGF0ZVJlZj4oV0tQYWdlQ29weVNlc3Npb25TdGF0ZSh3ZWJWaWV3LnBhZ2UoKSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oMSksIG51bGxwdHIpKSk7CisgICAgcmV0dXJuIGFkb3B0V0soV0tTZXNz
aW9uU3RhdGVDb3B5RGF0YShzZXNzaW9uU3RhdGUuZ2V0KCkpKTsKK30KKworVEVTVChXZWJLaXQs
IFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbikKK3sKKyAgICBXS1JldGFpblB0
cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOworCisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxv
YWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+
IGRhdGEgPSBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIEVYUEVD
VF9OT1RfTlVMTChkYXRhKTsKKworICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhXS1Nl
c3Npb25TdGF0ZUNyZWF0ZUZyb21EYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBXS1BhZ2VSZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKHdlYlZpZXcucGFnZSgpLCBzZXNzaW9u
U3RhdGUuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Qp
OworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9IGFkb3B0V0soV0tQ
YWdlQ29weUNvbW1pdHRlZFVSTCh3ZWJWaWV3LnBhZ2UoKSkpOworICAgIEVYUEVDVF9OVUxMKGNv
bW1pdHRlZFVSTC5nZXQoKSk7CisKKyAgICBhdXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdl
dEJhY2tGb3J3YXJkTGlzdCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgYXV0byBjdXJyZW50SXRlbSA9
IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oYmFja0ZvcndhcmRMaXN0KTsKKyAgICBh
dXRvIGN1cnJlbnRJdGVtVVJMID0gYWRvcHRXSyhXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJM
KGN1cnJlbnRJdGVtKSk7CisgICAgYXV0byBleHBlY3RlZFVSTCA9IGFkb3B0V0soVXRpbDo6Y3Jl
YXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpOworICAgIEVYUEVDVF9OT1RfTlVM
TChleHBlY3RlZFVSTCk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGN1cnJlbnRJdGVt
VVJMLmdldCgpLCBleHBlY3RlZFVSTC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCisKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0JKHJldmlzaW9uIDIzNTM2NCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXRO
YXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2lmIFdLX0hBVkVfQ19TUEkKKyNpZiBXS19BUElfRU5BQkxFRAogCiAj
aW5jbHVkZSAiSmF2YVNjcmlwdFRlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgpAQCAtMzMsNjYgKzMzLDYzIEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgPFdlYktp
dC9XS1BhZ2VQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2Vzc2lvblN0YXRlUmVmLmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK0BpbnRlcmZhY2UgV0tXZWJW
aWV3ICgpCistIChXS1BhZ2VSZWYpX3BhZ2VGb3JUZXN0aW5nOworQGVuZAogCiBzdGF0aWMgYm9v
bCBkaWRGaW5pc2hMb2FkOwogc3RhdGljIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Owor
ICAgIAorQGludGVyZmFjZSBTZXNzaW9uU3RhdGVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmln
YXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNlc3Npb25TdGF0ZURlbGVn
YXRlCiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlv
bgogewogICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBkaWRDaGFu
Z2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDooV0tCYWNrRm9y
d2FyZExpc3RJdGVtICopaXRlbUFkZGVkIHJlbW92ZWQ6KE5TQXJyYXk8V0tCYWNrRm9yd2FyZExp
c3RJdGVtICo+ICopaXRlbXNSZW1vdmVkCiB7CiAgICAgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
ID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYg
cGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKK0BlbmQKIAotICAg
IGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50
LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBh
Z2U7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQu
YmFzZSk7Ci19CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBXS1JldGFpblB0
cjxXS0RhdGFSZWY+IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQp
CitzdGF0aWMgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKCkK
IHsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKLSAgICBzZXRQYWdlTG9h
ZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5w
YWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1s
IikpLmdldCgpKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbU2Vzc2lvblN0YXRlRGVs
ZWdhdGUgbmV3XSk7CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFt2aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3Zp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1
bigmZGlkRmluaXNoTG9hZCk7CiAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwogCi0gICAgYXV0
byBzZXNzaW9uU3RhdGUgPSBhZG9wdFdLKHN0YXRpY19jYXN0PFdLU2Vzc2lvblN0YXRlUmVmPihX
S1BhZ2VDb3B5U2Vzc2lvblN0YXRlKHdlYlZpZXcucGFnZSgpLCByZWludGVycHJldF9jYXN0PHZv
aWQqPigxKSwgbnVsbHB0cikpKTsKLSAgICByZXR1cm4gYWRvcHRXSyhXS1Nlc3Npb25TdGF0ZUNv
cHlEYXRhKHNlc3Npb25TdGF0ZS5nZXQoKSkpOworICAgIE5TRGF0YSAqZGF0YSA9IFt2aWV3IF9z
ZXNzaW9uU3RhdGVEYXRhXTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0RhdGFDcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCkpOwog
fQogCiBURVNUKFdlYktpdCwgUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKQog
ewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRl
eHRDcmVhdGUoKSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgp
KTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUmV0
YWluUHRyPFdLRGF0YVJlZj4gZGF0YSA9IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoY29udGV4dC5n
ZXQoKSk7CisgICAgYXV0byBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YSgpOwogICAgIEVY
UEVDVF9OT1RfTlVMTChkYXRhKTsKIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKICAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tTZXNzaW9uU3Rh
dGVDcmVhdGVGcm9tRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9yZUZyb21TZXNz
aW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvblN0YXRlLmdl
dCgpKTsKKyAgICBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
KFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10sIHNlc3Npb25TdGF0ZS5nZXQoKSk7CiAKICAgICBV
dGlsOjpydW4oJmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk7CiAKLSAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gY29tbWl0dGVkVVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5Q29tbWl0dGVkVVJMKHdl
YlZpZXcucGFnZSgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9
IGFkb3B0V0soV0tQYWdlQ29weUNvbW1pdHRlZFVSTChbd2ViVmlldyBfcGFnZUZvclRlc3Rpbmdd
KSk7CiAgICAgRVhQRUNUX05VTEwoY29tbWl0dGVkVVJMLmdldCgpKTsKIAotICAgIGF1dG8gYmFj
a0ZvcndhcmRMaXN0ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KHdlYlZpZXcucGFnZSgpKTsK
KyAgICBhdXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlzdChbd2Vi
VmlldyBfcGFnZUZvclRlc3RpbmddKTsKICAgICBhdXRvIGN1cnJlbnRJdGVtID0gV0tCYWNrRm9y
d2FyZExpc3RHZXRDdXJyZW50SXRlbShiYWNrRm9yd2FyZExpc3QpOwogICAgIGF1dG8gY3VycmVu
dEl0ZW1VUkwgPSBhZG9wdFdLKFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoY3VycmVudEl0
ZW0pKTsKICAgICBhdXRvIGV4cGVjdGVkVVJMID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JS
ZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIzNTM2NCkJKGZyb20gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOjIz
NTM2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKwor
I2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3
LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorCisjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZmluaXNoZWQgPSBmYWxz
ZTsKK3N0YXRpYyBib29sIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MgPSBmYWxz
ZTsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICAvLyBPbmx5IG1hcmsg
ZmluaXNoZWQgd2hlbiB0aGUgbWFpbiBmcmFtZSBsb2FkcworICAgIGlmICghV0tGcmFtZUlzTWFp
bkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmluaXNoZWQgPSB0cnVlOwor
fQorCitzdGF0aWMgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdlUmVmLCBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCop
Cit7CisgICAgaWYgKFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgp
KSB7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKChXS1N0cmluZ1Jl
Zil1c2VyRGF0YSwgInNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sgY2FsbGVk
IGFzIGV4cGVjdGVkIikpCisgICAgICAgICAgICByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2Fs
bGJhY2tzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBmaW5pc2hlZCA9IHRydWU7Cit9CisKK3N0YXRp
YyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdl
TG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAw
LCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9u
ID0gMTsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNo
TG9hZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0gPSB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCIpKTsKKyAgICAvLyBF
bmFibGUgdGhlIHBhZ2UgY2FjaGUgc28gd2UgY2FuIHRlc3QgdGhlIFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbUlzSW5QYWdlQ2FjaGUgQVBJCisgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChj
b250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsKKworICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGll
bnQod2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwg
YWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0
KCkpOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIAorICAgIGZpbmlzaGVkID0gZmFs
c2U7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVh
dGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBV
dGlsOjpydW4oJmZpbmlzaGVkKTsKKworICAgIGZpbmlzaGVkID0gZmFsc2U7CisgICAgV0tQYWdl
R29CYWNrKHdlYlZpZXcucGFnZSgpKTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICAK
KyAgICBFWFBFQ1RfRVEocmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxiYWNrcywgdHJ1ZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIzNTM2NCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcxICsyNSw1MSBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJX0VOQUJM
RUQKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1X
ZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgotCiAjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKIHN0YXRpYyBib29sIGZpbmlzaGVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCByZWNlaXZl
ZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gZmFsc2U7CiAKLXN0YXRpYyB2b2lkIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCopCi17Ci0gICAgLy8gT25seSBtYXJrIGZpbmlzaGVkIHdoZW4gdGhlIG1haW4g
ZnJhbWUgbG9hZHMKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAg
IHJldHVybjsKK0BpbnRlcmZhY2UgQmFja0ZvcndhcmRDbGllbnQgOiBOU09iamVjdCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGU+CitAZW5kCiAKLSAgICBmaW5pc2hlZCA9IHRydWU7Ci19CitAaW1wbGVt
ZW50YXRpb24gQmFja0ZvcndhcmRDbGllbnQKIAotc3RhdGljIHZvaWQgd2lsbEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsK
LSAgICBpZiAoV0tHZXRUeXBlSUQodXNlckRhdGEpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpIHsK
LSAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoKFdLU3RyaW5nUmVmKXVz
ZXJEYXRhLCAic2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayBjYWxsZWQgYXMg
ZXhwZWN0ZWQiKSkKLSAgICAgICAgICAgIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFj
a3MgPSB0cnVlOwotICAgIH0KLQogICAgIGZpbmlzaGVkID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKKy0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0gKilpdGVtIGluUGFnZUNhY2hlOihCT09MKWluUGFnZUNhY2hlCiB7Ci0g
ICAgV0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVy
Q2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisgICAgZmluaXNoZWQgPSB0cnVlOwor
fQogCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgbG9hZGVyQ2xpZW50
LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2Fk
ZXJDbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gd2lsbEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtOworQGVuZAogCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAm
bG9hZGVyQ2xpZW50LmJhc2UpOwotfQorbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNU
KFdlYktpdCwgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCiB7Ci0gICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
SW5qZWN0ZWRCdW5kbGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QiKSk7
Ci0gICAgLy8gRW5hYmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4dFNldENh
Y2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7Ci0K
LSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdl
TG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbQmFja0ZvcndhcmRDbGllbnQgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Cisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAg
IFV0aWw6OnJ1bigmZmluaXNoZWQpOwogICAgIAogICAgIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAg
V0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JS
ZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUtaWZyYW1lIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6
OnJ1bigmZmluaXNoZWQpOwogCiAgICAgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBXS1BhZ2VHb0Jh
Y2sod2ViVmlldy5wYWdlKCkpOworICAgIFt3ZWJWaWV3IGdvQmFja107CiAgICAgVXRpbDo6cnVu
KCZmaW5pc2hlZCk7Ci0gICAgCi0gICAgRVhQRUNUX0VRKHJlY2VpdmVkUHJvcGVyQmFja0Zvcndh
cmRDYWxsYmFja3MsIHRydWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348150</attachid>
            <date>2018-08-27 09:28:10 -0700</date>
            <delta_ts>2018-08-27 11:13:28 -0700</delta_ts>
            <desc>Build fix</desc>
            <filename>bug-188827.diff</filename>
            <type>text/plain</type>
            <size>1927</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNWJk
MGExZjQzMy4uYTlmZDRhNWI3MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wOC0yNyAgRG9uIE9sbXN0ZWFk
ICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIFRyYW5zbGF0ZSA0IHRlc3RzIHVz
aW5nIFdLUGFnZUxvYWRlckNsaWVudCB0byBPYmpDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg4MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
NzU2MDIwPgorCisgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgorICAgICAgICAKKyAgICAg
ICAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZGVsZXRlZCBmaWxlcy4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisKIDIwMTgtMDgtMjcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBUcmFuc2xhdGUgNCB0ZXN0cyB1
c2luZyBXS1BhZ2VMb2FkZXJDbGllbnQgdG8gT2JqQwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKaW5kZXggNzU2ZjQzYzY5NzcuLjk2OGFmNzY0OTkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQKQEAgLTYyLDcgKzYyLDYgQEAgaWYgKEVOQUJMRV9XRUJLSVQpCiAgICAgICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdC9SZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAK
ICAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0L1Jlc2l6ZVdpbmRvd0Fm
dGVyQ3Jhc2guY3BwCiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdC9S
ZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcAotICAgICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdC9UZXh0RmllbGRE
aWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYktpdC9Vc2VyTWVkaWEuY3BwCiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKQEAgLTIxMCw3ICsyMDksNiBAQCBpZiAoRU5BQkxF
X1dFQktJVCkKICAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0L1BhcmVu
dEZyYW1lX0J1bmRsZS5jcHAKICAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
S2l0L1Byb3Zpc2lvbmFsVVJMQWZ0ZXJXaWxsU2VuZFJlcXVlc3RDYWxsYmFja19CdW5kbGUuY3Bw
CiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVz
c1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAKLSAgICAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5j
cHAKICAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0L1RleHRGaWVsZERp
ZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwCiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZV9CdW5kbGUuY3BwCiAgICAgICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdC9XaWxsTG9hZF9CdW5kbGUuY3BwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348168</attachid>
            <date>2018-08-27 11:13:30 -0700</date>
            <delta_ts>2018-08-27 11:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188827-20180827111330.patch</filename>
            <type>text/plain</type>
            <size>77077</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE4LTA4LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVHJhbnNsYXRlIDQgdGVzdHMgdXNpbmcgV0tQYWdlTG9hZGVy
Q2xpZW50IHRvIE9iakMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODgyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAg
ICAgVGhleSB1c2UgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSwgZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0LCBvciB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uCisgICAgICAgIFJhdGhl
ciB0aGFuIGludHJvZHVjZSB0aGVzZSB0byBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LCBJIGp1c3Qg
dHJhbnNsYXRlZCB0aGUgdGVzdHMgdG8gdXNlIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCB3aGljaCBh
bHJlYWR5IGhhdmUgZXF1aXZhbGVudCBjYWxsYmFja3MuCisgICAgICAgIHdpbGxHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbSBoYWQgdXNlckRhdGEgZnJvbSB0aGUgSW5qZWN0ZWRCdW5kbGUsIGJ1dCBu
b2JvZHkgd2FzIHVzaW5nIGl0IHNvIEkgZGlkIG5vdCBhZGQgdGhhdCB0byB0aGUgT2JqQyBTUEks
IHNvIEkgZG9uJ3QgdGVzdCB0aGF0IHVudXNlZAorICAgICAgICBidW5kbGUgZnVuY3Rpb25hbGl0
eSBhbnkgbW9yZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcC4KKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlIHdlYlZpZXc6
ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NUaW1lckRl
bGVnYXRlIF93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTpdKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKTogRGVsZXRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NU
aW1lckRvZXNudEZpcmVFYXJseS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAuCisgICAg
ICAgICgtW1Jlc3BvbnNpdmVuZXNzRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9u
Ol0pOgorICAgICAgICAoLVtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIF93ZWJWaWV3V2ViUHJvY2Vz
c0RpZEJlY29tZVVucmVzcG9uc2l2ZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnByb2Nlc3NEaWRCZWNv
bWVVbnJlc3BvbnNpdmUpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0
UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW06IENv
cGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9u
U3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAuCisgICAgICAgICgtW1Nlc3Npb25TdGF0ZURlbGVn
YXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bU2Vzc2lvblN0
YXRlRGVsZWdhdGUgX3dlYlZpZXc6YmFja0ZvcndhcmRMaXN0SXRlbUFkZGVkOnJlbW92ZWQ6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmlu
aXNoTG9hZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbTog
Q29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwLgorICAgICAgICAoLVtCYWNrRm9yd2FyZENsaWVudCB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW0JhY2tGb3J3YXJkQ2xpZW50
IF93ZWJWaWV3OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTppblBhZ2VDYWNoZTpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ondp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KTogRGVsZXRlZC4KKwogMjAxOC0wOC0yNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyMzUzNjcuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0phdmFT
Y3JpcHRUZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0
VGVzdC5oCShyZXZpc2lvbiAyMzUzNzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3Jp
cHRUZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIE9CSkNfQ0xBU1MgV0tW
aWV3OwogT0JKQ19DTEFTUyBXZWJWaWV3OwogI2VuZGlmCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFz
ZS5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMzUzNzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIzLDcg
KzIyMyw2IEBACiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVh
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTZB
ODkyMUQyRjFCRUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAqLzsgfTsKIAkJNTFF
NkE4OTYxRDJGMUNBNzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNkE4OTUxRDJG
MUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi87IH07CiAJCTUxRUIxMjk0
MUZERjA1MjUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVCMTI5MzFGREYwNTA1MDBBNUExQkQg
LyogU2VydmljZVdvcmtlckJhc2ljLm1tICovOyB9OwotCQk1MUZDRjdBMTE1MzRCMkEwMDAxMDQ0
OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk3MTUzNEFDNkQwMDEw
NDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwICovOyB9Owog
CQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIwQkNGNEExNDFFQjA5
RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTI0QkJDOUUxOURG
NzJDMDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQzlCMTlERjM3MTQwMDJGMUFG
MSAvKiBmaWxlLXdpdGgtdmlkZW8uaHRtbCAqLzsgfTsKIAkJNTI0QkJDQTExOUUzMEM3NzAwMkYx
QUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNEJCQ0EwMTlFMzBDNjMwMDJGMUFGMSAvKiB0ZXN0Lm1wNCAqLzsgfTsK
QEAgLTI5MCw2ICsyODksMTAgQEAKIAkJNUNCM0NFMzkxRkExNjk3RjAwQzNBMkQ2IC8qIFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0IzQ0UzODFGQTE2OTE3MDBDM0EyRDYgLyogV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbSAqLzsgfTsKIAkJNUNCNDBCNEUxRjRCOThEMzAwN0RDN0I5IC8qIFVJRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I0MEI0
RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNUNCNUIzQzIxRkZD
NTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjVCM0JEMUZGQzUxN0UwMEMyN0JC
MCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi87IH07CisJCTVDQ0IxMEUxMjEzNDU3
RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwRTAyMTM0NTc5RDAwQUM1QUYwIC8qIFJl
c3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07CisJCTVDQ0IxMEUyMjEzNDU3RDUwMEFDNUFGMCAv
KiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwREQyMTM0NTc5QzAwQUM1QUYwIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0gKi87IH07CisJCTVDQ0IxMEUz
MjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NCMTBE
RTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
Lm1tICovOyB9OworCQk1Q0NCMTBFNDIxMzQ1N0UwMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NCMTBERjIxMzQ1NzlEMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0ubW0gKi87IH07CiAJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUzQiAvKiBXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZS5tbSAqLzsgfTsKIAkJNUNFQUI1RTExRkE5MzlGNDAwQTc3RkFBIC8qIF9XS0lucHV0RGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
NUU0QjFEMkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0QjFEMkMxRDQwNEM2
MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tICovOyB9OwpAQCAtNTI5LDEwICs1
MzIsOCBAQAogCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVyQ3Jh
c2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEEz
QUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNoLmNwcCAqLzsgfTsK
IAkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJW
aWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
RDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5j
cHAgKi87IH07CiAJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCAq
LzsgfTsKLQkJN0NDRTdGMTAxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJE
b2VzbnRGaXJlRWFybHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJE
b2VzbnRGaXJlRWFybHkuY3BwICovOyB9OwogCQk3Q0NFN0YxMTFBNDExQUU2MDA0NDdDNEMgLyog
UmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkg
LyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi87IH07CiAJCTdD
Q0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENjQwQjU0MTc4NzVE
RkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLzsgfTsKLQkJN0NDRTdG
MTMxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk4MTUz
NEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi87IH07
CiAJCTdDQ0U3RjE0MUE0MTFBRTYwMDQ0N0M0QyAvKiBTaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3
YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFNUM3MDQxOTE5RUE1RjAwRDhCM0UxIC8qIFNob3VsZEtlZXBDdXJyZW50
QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgKi87IH07CiAJCTdDQ0U3RjE1MUE0MTFBRTYw
MDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2Vi
YXJTY3JvbGxpbmcuY3BwICovOyB9OwogCQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVy
bWluYXRlVHdpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFFNzJGNDcxNzNFQjIxNDAwNjM2MkYwIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCAqLzsg
fTsKQEAgLTU3MCw3ICs1NzEsNiBAQAogCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi87IH07CiAJCTgzNDlEM0MyMURCOTZEREUw
MDRBOUY2NSAvKiBDb250ZXh0TWVudURvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzExREI5NkREQTAwNEE5RjY1IC8qIENvbnRl
eHRNZW51RG93bmxvYWQubW0gKi87IH07CiAJCTgzNDlEM0M0MURCOTcyOEUwMDRBOUY2NSAvKiBs
aW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzMxREI5NzI0RjAwNEE5RjY1IC8q
IGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRtbCAqLzsgfTsKLQkJODM1Q0Y5NjcxRDI1
RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzVDRjk2NjFE
MjVGQ0Q2MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNw
cCAqLzsgfTsKIAkJODM2MUYxNzgxRTYxMEI0RTAwNzU5QjI1IC8qIGxpbmstd2l0aC1kb3dubG9h
ZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MUYxNzcxRTYxMEIyMTAwNzU5QjI1IC8qIGxp
bmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgKi87IH07CiAJCTgz
Nzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3JlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NzlDMzcxRjgyRkVCMDAwN0NE
QThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTgzN0EzNUYxMUQ5QTFFN0QwMDY2
M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTM1RjAxRDlBMUU2NDAwNjYzQzU3
IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLzsgfTsKQEAgLTU3OCw3ICs1NzgsNiBA
QAogCQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQUVF
OEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLzsgfTsK
IAkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQkM1QUJGMjBFNkMwRDMwMEY1ODc5RiAvKiBTdGFydExvYWRJbkRpZEZhaWxQcm92aXNpb25h
bExvYWQubW0gKi87IH07CiAJCTgzREI3OTY5MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCNzk2
NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovOyB9OwotCQk4M0RFMTM0RDFFRjFD
NTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RFMTM0QzFFRjFDNEZFMDBDMUIzNTUgLyog
UmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07CiAJCTgzRjIyQzY0MjBCMzU1RjgwMDM0Mjc3
RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyMkM2MzIwQjM1NUVCMDAzNDI3N0UgLyogTm9Qb2xp
Y3lEZWxlZ2F0ZVJlc3BvbnNlLm1tICovOyB9OwogCQk4QzEwQUY5ODIwNjQ2NzkyMDAxOEZEOTAg
LyogbG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk3MjA2NDY3ODMwMDE4
RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi87IH07CiAJCThD
MTBBRjk5MjA2NDY3QTkwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk2MjA2NDY3
NzcwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSAqLzsgfTsKQEAgLTE1MDYs
OCArMTUwNSw2IEBACiAJCTUxRTkzMDE2MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRTY2Fs
ZUZhY3Rvck5vdFplcm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJCYXNp
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQkJCNEMxNTEzRDRFOTAwODIy
NzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVVSTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTFGQ0Y3OTcxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MUZDRjc5ODE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MjBCQ0Y0QTE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5kbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjBCQ0Y0QjE0MUVCMDlFMDA5
MzdFQTggLyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0QkJD
OUIxOURGMzcxNDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImZpbGUtd2l0aC12aWRlby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1ODAsNiArMTU3NywxMCBAQAogCQk1Q0IzQ0UzODFGQTE2OTE3MDBDM0Ey
RDYgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlEZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCNUIzQkQxRkZDNTE3RTAwQzI3QkIwIC8q
IEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZyYW1l
SGFuZGxlU2VyaWFsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUND
QjEwREQyMTM0NTc5QzAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0NCMTBERTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXRO
YXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVz
dG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0NCMTBERjIxMzQ1NzlEMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDQjEwRTAyMTM0NTc5RDAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25zaXZlbmVzc1Rp
bWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0UzNTREODFFNzBEOUMzMDBC
RUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lucHV0
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJ
bnB1dERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTRCMUQyQzFE
NDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgcGF0aCA9
IC4uL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NzcsNyArMTY3OCw2IEBACiAJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAvKiBB
c3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ5RDNDMTFEQjk2RERBMDA0QTlGNjUgLyog
Q29udGV4dE1lbnVEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENvbnRleHRNZW51RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzNDlEM0MzMURCOTcyNEYwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmli
dXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRoLWRvd25sb2Fk
LWF0dHJpYnV0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1Q0Y5NjYx
RDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS13
aXRoLXNsYXNoZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLXdpdGgt
ZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODM3NzlDMzcxRjgyRkVCMDAwN0NEQThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpdGVkTGlua1N0
b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBMzVGMDFEOUExRTY0MDA2
NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTY4Niw3ICsxNjg2LDYgQEAKIAkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0
IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNCQzVBQkYyMEU2QzBEMzAwRjU4NzlGIC8qIFN0YXJ0TG9hZElu
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8q
IFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzRjIyQzYzMjBCMzU1RUIwMDM0Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb1BvbGljeURlbGVn
YXRlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkQxOTk3MUEy
REIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRlckNy
YXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTUsNyArMTg5NCw2IEBA
CiAJCUMwQURCRTdCMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0VGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkgLyogUmVzdG9yZVNlc3Np
b25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8qIHNp
bXBsZS1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWZvcm0u
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwQkQ2NjlDMTMxRDNDRjcwMEUx
OEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEJENjY5RTEzMUQzQ0ZG
MDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1l
ckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2luZ1NjYWxlRmFj
dG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0NTk4QjZGMDBB
ODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzgyLDEyICsyMzgwLDE2IEBACiAJCQkJ
QTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3Rv
Y29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFj
dGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAorCQkJCTVDQ0IxMEUwMjEzNDU3OUQwMEFDNUFG
MCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tICovLAorCQkJCTVDQ0IxMEREMjEzNDU3OUMwMEFD
NUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tICovLAorCQkJCTVD
Q0IxMERFMjEzNDU3OUQwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmln
YXRpb24ubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5l
bC5tbSAqLywKIAkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0QWZ0ZXJE
b2N1bWVudExvYWQubW0gKi8sCiAJCQkJNUNBOTg1NTEyMTEzQ0I4QzAwNTdFQjZCIC8qIFNhZmVC
cm93c2luZy5tbSAqLywKIAkJCQlDRTA5NDczNjIwNjMyMjNCMDAzQzlCQTAgLyogU2NoZW1lUmVn
aXN0cnkubW0gKi8sCiAJCQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3Jr
ZXJCYXNpYy5tbSAqLywKIAkJCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogU2V0TWF4aW11
bVByZXdhcm1lZFByb2Nlc3NDb3VudC5tbSAqLywKKwkJCQk1Q0NCMTBERjIxMzQ1NzlEMDBBQzVB
RjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8sCiAJCQkJMzdCQ0E2MUIx
QjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlv
bnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1t
ICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tICov
LApAQCAtMjkyNSwxNiArMjkyNywxMSBAQAogCQkJCThBM0FGOTNBMTZDOUVEMjcwMEQyNDhDMSAv
KiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgKi8sCiAJCQkJMkREN0QzQTkxNzgyMDVEMDAwMjZF
MUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLywKIAkJCQk4QTJDNzUw
RDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8sCi0JCQkJ
ODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAog
CQkJCTUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gu
bW0gKi8sCi0JCQkJQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGlt
ZXJEb2VzbnRGaXJlRWFybHkuY3BwICovLAogCQkJCUMwQkQ2NjlFMTMxRDNDRkYwMEUxOEYyQSAv
KiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgKi8sCiAJCQkJ
ODNCNkRFNkUxRUU3NTIwRjAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwICovLAog
CQkJCUMwQURCRTgyMTJGQ0E2QUEwMEQyQzEyOSAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFp
bmluZ0Zvcm1EYXRhLmNwcCAqLywKLQkJCQk4MzVDRjk2NjFEMjVGQ0Q2MDAxQTY1RDQgLyogUmVz
dG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQkyRDY0MEI1NDE3
ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8sCi0JCQkJNTFG
Q0Y3OTgxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCAqLywKLQkJCQk1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCAqLywKIAkJCQk1MUU1QzcwNDE5MTlFQTVGMDBEOEIzRTEg
LyogU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCAqLywKIAkJ
CQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovLAog
CQkJCTc2NzM0OTk3MTkzMDE2REMwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQ
cm92aXNpb25hbExvYWQuY3BwICovLApAQCAtMzkxNywxMiArMzkxNCwxMiBAQAogCQkJCTdDQ0U3
RjBFMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRjFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplV2lu
ZG93QWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUM4RTFBNTFGMjZBRjRDMDBC
RjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTgz
REUxMzREMUVGMUM1MDgwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTVDQ0IxMEUxMjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1Rp
bWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyQzRDOUUyMEVBQTQwRDAwNDk0NUVBIC8qIFJl
c3BvbnNpdmVuZXNzVGltZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdDQ0U3RjEwMUE0
MTFBRTYwMDQ0N0M0QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTVDQ0IxMEUyMjEzNDU3RDUwMEFDNUFGMCAvKiBSZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCNkRFNkYx
RUU3NTIyMTAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdGMTExQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVDb250
YWluaW5nRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODM1Q0Y5NjcxRDI1RkNENjAw
MUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1Q0NCMTBFMzIxMzQ1N0Q4MDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25T
dGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDZFODE2RjgxRTc5
RTI5QzAwMzc1QURDIC8qIFJlc3RvcmVTdGF0ZUFmdGVyVGVybWluYXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQlGNDE4QkUxNTFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTgwQzBGQTFFRTY3REYwMDA0NjhGNDcgLyogUnVuT3Bl
blBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTQyLDcgKzM5MzksNyBAQAogCQkJCTdDODNF
MDUyMUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTE3OTkxODgxRTFDOTk0RTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNzk5MThCMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTdDQ0U3RjEzMUE0MTFBRTYwMDQ0N0M0QyAvKiBTaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NCMTBFNDIx
MzQ1N0UwMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YxNDFBNDExQUU2MDA0NDdDNEMgLyogU2hvdWxkS2VlcEN1cnJl
bnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3QkNB
NjFDMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dB
Y3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzUxRDBBNjU0NjAwRkVCQ0YzIC8q
IFNocmlua1RvRml0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC00MTQ2LDcgKzQxNDMsNiBAQAogCQkJ
CUJDNTc1QkUwMTI2RjU5MEQwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUI1NUFEMUQ1MTc5RjNCMzAwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VM
b2FkV2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBCRDY2
OUYxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxRkNGN0ExMTUzNEIyQTAwMDEwNDQ5MSAv
KiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UzNTI0Rjgx
QjE0MzFGNjAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMkQzMTkxNERDNjhCOTAwRkZCMUREIC8qIFVzZXJN
ZXNzYWdlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCShy
ZXZpc2lvbiAyMzUzNzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNw
b25zaXZlbmVzc1RpbWVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLSNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgot
Ci1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGRpZEZpbmlzaExvYWQg
eyBmYWxzZSB9Owotc3RhdGljIGJvb2wgZGlkQmVjb21lVW5yZXNwb25zaXZlIHsgZmFsc2UgfTsK
LQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsK
LX0KLQotc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXS1BhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsK
LX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKLXsK
LSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2Fk
ZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAgIGxvYWRlckNsaWVudC5i
YXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUg
PSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LnByb2Nlc3NEaWRCZWNv
bWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOwotCi0gICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQotCi1U
RVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lclNob3VsZE5vdEZpcmVBZnRlclRlYXJEb3du
KQotewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0Nv
bnRleHRDcmVhdGUoKSk7Ci0gICAgLy8gVGhlIHR3byB2aWV3cyBuZWVkIHRvIHNoYXJlIHRoZSBz
YW1lIFdlYkNvbnRlbnQgcHJvY2Vzcy4KLSAgICBXS0NvbnRleHRTZXRNYXhpbXVtTnVtYmVyT2ZQ
cm9jZXNzZXMoY29udGV4dC5nZXQoKSwgMSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dzEoY29udGV4dC5nZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3MS5wYWdl
KCkpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3MS5wYWdlKCksIGFkb3B0V0soVXRpbDo6
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBVdGls
OjpydW4oJmRpZEZpbmlzaExvYWQpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVz
cG9uc2l2ZSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldzIoY29udGV4dC5nZXQoKSk7
Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3Mi5wYWdlKCkpOwotCi0gICAgZGlkRmlu
aXNoTG9hZCA9IGZhbHNlOwotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldzIucGFnZSgpLCBhZG9w
dFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7
Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKLQotICAgIEVYUEVDVF9GQUxTRShkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUpOwotCi0gICAgLy8gQ2FsbCBzdG9wTG9hZGluZygpIGFuZCBjbG9z
ZSgpIG9uIHRoZSBmaXJzdCBwYWdlIGluIHF1aWNrIHN1Y2Nlc3Npb24uCi0gICAgV0tQYWdlU3Rv
cExvYWRpbmcod2ViVmlldzEucGFnZSgpKTsKLSAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3MS5wYWdl
KCkpOwotCi0gICAgLy8gV2UgbmVlZCB0byB3YWl0IGhlcmUgYmVjYXVzZSBpdCB0YWtlcyAzIHNl
Y29uZHMgZm9yIGEgcHJvY2VzcyB0byBiZSByZWNvZ25pemVkIGFzIHVucmVzcG9uc2l2ZS4KLSAg
ICBVdGlsOjpzbGVlcCg0KTsKLQotICAgIC8vIFdlIHNob3VsZCBub3QgcmVwb3J0IHRoZSBzZWNv
bmQgcGFnZSBzaGFyaW5nIHRoZSBzYW1lIHByb2Nlc3MgYXMgdW5yZXNwb25zaXZlLgotICAgIEVY
UEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRv
ZXNudEZpcmVFYXJseS5jcHAJKHJldmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotCi1uYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7Ci0KLXN0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7Ci1zdGF0aWMgYm9vbCBkaWRCZWNv
bWVVbnJlc3BvbnNpdmU7Ci1zdGF0aWMgYm9vbCBkaWRCcmllZmx5UGF1c2U7Ci0KLXN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlk
QnJpZWZseVBhdXNlID0gdHJ1ZTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIkRpZEJyaWVmbHlQYXVz
ZSIsIG1lc3NhZ2VOYW1lKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBk
aWRGaW5pc2hMb2FkID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEJlY29tZVVucmVz
cG9uc2l2ZSA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KFdLQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7Ci0gICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNs
aWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7Ci0KLSAgICBpbmplY3RlZEJ1
bmRsZUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGU7Ci0KLSAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b250ZXh0LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNl
dFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xp
ZW50VjAgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2Yo
bG9hZGVyQ2xpZW50KSk7Ci0KLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAg
ICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZy
YW1lOwotICAgIGxvYWRlckNsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJv
Y2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsKLQotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKLX0KLQotVEVTVChXZWJLaXQsIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKLSAgICBz
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKLQotICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2Vi
Vmlldy5wYWdlKCkpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRX
SyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwot
ICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7Ci0KLSAgICBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSygiQnJpZWZseVBhdXNl
IikuZ2V0KCksIDApOwotCi0gICAgLy8gUHJlc3NpbmcgYSBrZXkgb24gdGhlIGtleWJvYXJkIHNo
b3VsZCBzdGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNpbmNlIHRoZSB3ZWIgcHJvY2Vz
cwotICAgIC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCByZWNlaXZlcyB0aGlzIGtleXBy
ZXNzLCBpdCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byByZXNwb25kCi0gICAgLy8gKGJ1
dCBub3Qgc28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBmaXJlcykuCi0gICAg
d2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKLQotICAgIFV0aWw6OnJ1bigmZGlk
QnJpZWZseVBhdXNlKTsKLQotICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5l
c3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAJ
KHJldmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jl
c3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdL
X0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIkphdmFTY3JpcHRUZXN0LmgiCi0jaW5jbHVkZSAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRl
ICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KLSNpbmNsdWRlIDxX
ZWJLaXQvV0tTZXNzaW9uU3RhdGVSZWYuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewot
Ci1zdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwotc3RhdGljIGJvb2wgZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExv
YWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQ
YWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJh
eVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gdHJ1
ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkK
LXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZs
b2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAgIGxvYWRlckNsaWVu
dC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJh
bWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2U7Ci0KLSAgICBX
S1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0K
LXN0YXRpYyBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tD
b250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4
dCk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7Ci0KLSAgICBXS1Bh
Z2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291
cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hM
b2FkKTsKLSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0KLSAgICBhdXRvIHNlc3Npb25TdGF0
ZSA9IGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tTZXNzaW9uU3RhdGVSZWY+KFdLUGFnZUNvcHlTZXNz
aW9uU3RhdGUod2ViVmlldy5wYWdlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpLCBudWxs
cHRyKSkpOwotICAgIHJldHVybiBhZG9wdFdLKFdLU2Vzc2lvblN0YXRlQ29weURhdGEoc2Vzc2lv
blN0YXRlLmdldCgpKSk7Ci19Ci0KLVRFU1QoV2ViS2l0LCBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0
aG91dE5hdmlnYXRpb24pCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0
KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJW
aWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdl
KCkpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBkYXRhID0gY3JlYXRlU2Vzc2lvblN0
YXRlRGF0YShjb250ZXh0LmdldCgpKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZGF0YSk7Ci0KLSAg
ICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tTZXNzaW9uU3RhdGVDcmVhdGVGcm9tRGF0
YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0
TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvblN0YXRlLmdldCgpKTsKLQotICAgIFV0
aWw6OnJ1bigmZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KTsKLQotICAgIFdLUmV0YWluUHRyPFdL
VVJMUmVmPiBjb21taXR0ZWRVUkwgPSBhZG9wdFdLKFdLUGFnZUNvcHlDb21taXR0ZWRVUkwod2Vi
Vmlldy5wYWdlKCkpKTsKLSAgICBFWFBFQ1RfTlVMTChjb21taXR0ZWRVUkwuZ2V0KCkpOwotCi0g
ICAgYXV0byBiYWNrRm9yd2FyZExpc3QgPSBXS1BhZ2VHZXRCYWNrRm9yd2FyZExpc3Qod2ViVmll
dy5wYWdlKCkpOwotICAgIGF1dG8gY3VycmVudEl0ZW0gPSBXS0JhY2tGb3J3YXJkTGlzdEdldEN1
cnJlbnRJdGVtKGJhY2tGb3J3YXJkTGlzdCk7Ci0gICAgYXV0byBjdXJyZW50SXRlbVVSTCA9IGFk
b3B0V0soV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTChjdXJyZW50SXRlbSkpOwotICAgIGF1
dG8gZXhwZWN0ZWRVUkwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1w
bGUiLCAiaHRtbCIpKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZXhwZWN0ZWRVUkwpOwotICAgIEVY
UEVDVF9UUlVFKFdLVVJMSXNFcXVhbChjdXJyZW50SXRlbVVSTC5nZXQoKSwgZXhwZWN0ZWRVUkwu
Z2V0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJKHJldmlzaW9uIDIzNTM3MikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLSNpbmNsdWRlICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1
ZGUgIlRlc3QuaCIKLQotI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5oPgotCi1uYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGZpbmlzaGVkID0gZmFsc2U7Ci1zdGF0aWMg
Ym9vbCByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gZmFsc2U7Ci0KLXN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgLy8gT25seSBtYXJrIGZpbmlzaGVkIHdo
ZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFt
ZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZpbmlzaGVkID0gdHJ1ZTsKLX0KLQotc3RhdGlj
IHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKQotewotICAgIGlm
IChXS0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkgewotICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZygoV0tTdHJpbmdSZWYpdXNlckRhdGEs
ICJzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrIGNhbGxlZCBhcyBleHBlY3Rl
ZCIpKQotICAgICAgICAgICAgcmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxiYWNrcyA9IHRy
dWU7Ci0gICAgfQotCi0gICAgZmluaXNoZWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBzZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVu
dFYxIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxv
YWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAg
bG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFt
ZTsKLSAgICBsb2FkZXJDbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gd2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtOwotCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChw
YWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQotCi1URVNUKFdlYktpdCwgU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0pCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QiKSk7Ci0gICAgLy8gRW5hYmxlIHRoZSBw
YWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1J
c0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoY29udGV4dC5nZXQo
KSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcu
cGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRp
bDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBV
dGlsOjpydW4oJmZpbmlzaGVkKTsKLSAgICAKLSAgICBmaW5pc2hlZCA9IGZhbHNlOwotICAgIFdL
UGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVz
b3VyY2UoInNpbXBsZS1pZnJhbWUiLCAiaHRtbCIpKS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZm
aW5pc2hlZCk7Ci0KLSAgICBmaW5pc2hlZCA9IGZhbHNlOwotICAgIFdLUGFnZUdvQmFjayh3ZWJW
aWV3LnBhZ2UoKSk7Ci0gICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7Ci0gICAgCi0gICAgRVhQRUNU
X0VRKHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MsIHRydWUpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCShyZXZpc2lvbiAyMzUzNzIpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbV9CdW5kbGUuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlVGVzdC5oIgotCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
LSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0K
LWNsYXNzIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCA6IHB1YmxpYyBJbmplY3Rl
ZEJ1bmRsZVRlc3QgewotcHVibGljOgotICAgIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
VGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
LX07Ci0KLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFNob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtVGVzdD4gcmVnaXN0cmFyKCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbVRlc3QiKTsKLQotc3RhdGljIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1D
YWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBp
dGVtLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKikKLXsKLSAgICAvLyBUaGUgaXRl
bSBzaG91bGQgYmUgaW4gdGhlIHBhZ2UgY2FjaGUKLSAgICBpZiAoV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtSXNJblBhZ2VDYWNoZShpdGVtKSkKLSAgICAgICAgKnVzZXJEYXRhID0gV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2Fs
bGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVkIik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0OjpTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1
bmRsZVRlc3QoaWRlbnRpZmllcikKLXsKLX0KLQotdm9pZCBTaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbVRlc3Q6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBh
Z2VSZWYgcGFnZSkKLXsgICAgCi0gICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEgcGFnZUxv
YWRlckNsaWVudDsKLSAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihwYWdl
TG9hZGVyQ2xpZW50KSk7Ci0gICAgCi0gICAgcGFnZUxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24g
PSAxOwotICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhpczsKLSAgICBw
YWdlTG9hZGVyQ2xpZW50LnNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gc2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjazsKLSAgICAKLSAgICBXS0J1bmRsZVBhZ2VTZXRQ
YWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZwYWdlTG9hZGVyQ2xpZW50LmJhc2UpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NU
aW1lci5tbQkocmV2aXNpb24gMjM1MzcyKQkoZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcDoyMzUzNzIpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
Kworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZhbHNlIH07CitzdGF0aWMgYm9vbCBkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OworCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQor
eworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKikKK3sKKyAgICBk
aWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlTG9h
ZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxv
YWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNs
aWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9hZGVy
Q2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAg
ICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRC
ZWNvbWVVbnJlc3BvbnNpdmU7CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2Us
ICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBSZXNwb25zaXZlbmVzc1Rp
bWVyU2hvdWxkTm90RmlyZUFmdGVyVGVhckRvd24pCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKKyAgICAvLyBUaGUg
dHdvIHZpZXdzIG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNzLgorICAg
IFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgpLCAxKTsK
KworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKKyAgICBzZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcxLnBhZ2UoKSk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdl
YlZpZXcxLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxl
IiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisKKyAg
ICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKKworICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdl
YlZpZXcyLnBhZ2UoKSk7CisKKyAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CisgICAgV0tQYWdl
TG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3Vy
Y2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExv
YWQpOworCisgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7CisKKyAgICAv
LyBDYWxsIHN0b3BMb2FkaW5nKCkgYW5kIGNsb3NlKCkgb24gdGhlIGZpcnN0IHBhZ2UgaW4gcXVp
Y2sgc3VjY2Vzc2lvbi4KKyAgICBXS1BhZ2VTdG9wTG9hZGluZyh3ZWJWaWV3MS5wYWdlKCkpOwor
ICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcxLnBhZ2UoKSk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHdh
aXQgaGVyZSBiZWNhdXNlIGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNzIHRvIGJlIHJl
Y29nbml6ZWQgYXMgdW5yZXNwb25zaXZlLgorICAgIFV0aWw6OnNsZWVwKDQpOworCisgICAgLy8g
V2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhlIHNlY29uZCBwYWdlIHNoYXJpbmcgdGhlIHNhbWUgcHJv
Y2VzcyBhcyB1bnJlc3BvbnNpdmUuCisgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9u
c2l2ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGlt
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCShyZXZpc2lvbiAyMzUzNzIpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI1LDY0ICsyNSw2NiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNp
ZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2luY2x1ZGUgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJQ
bGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
IAogc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCB7IGZhbHNlIH07CiBzdGF0aWMgYm9vbCBkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUgeyBmYWxzZSB9OwogCi1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQor
QGludGVyZmFjZSBSZXNwb25zaXZlbmVzc1RpbWVyRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGU+CitAZW5kCisgICAgCitAaW1wbGVtZW50YXRpb24gUmVzcG9uc2l2ZW5l
c3NUaW1lckRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCiB7CiAgICAgZGlk
RmluaXNoTG9hZCA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqKQorLSAodm9pZClfd2ViVmlld1dl
YlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAg
ICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBzZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRlckNsaWVudFYw
IGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRl
ckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbG9h
ZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsK
LSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NE
aWRCZWNvbWVVbnJlc3BvbnNpdmU7CitAZW5kCiAKLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19CituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKIFRFU1QoV2ViS2l0LCBSZXNwb25zaXZlbmVzc1RpbWVyU2hvdWxkTm90RmlyZUFmdGVy
VGVhckRvd24pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0
V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICAvLyBUaGUgdHdvIHZpZXdzIG5lZWQgdG8gc2hh
cmUgdGhlIHNhbWUgV2ViQ29udGVudCBwcm9jZXNzLgotICAgIFdLQ29udGV4dFNldE1heGltdW1O
dW1iZXJPZlByb2Nlc3Nlcyhjb250ZXh0LmdldCgpLCAxKTsKLQotICAgIFBsYXRmb3JtV2ViVmll
dyB3ZWJWaWV3MShjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZp
ZXcxLnBhZ2UoKSk7Ci0KLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcxLnBhZ2UoKSwgYWRvcHRX
SyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIG5ld10pOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3NldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3NlczoxXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbUmVzcG9uc2l2ZW5l
c3NUaW1lckRlbGVnYXRlIG5ld10pOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQ
cm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcx
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcxIGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAKICAg
ICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKIAotICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3Mihjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdl
YlZpZXcyLnBhZ2UoKSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcyIHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0g
ICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3Mi5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJM
Rm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBbd2ViVmlldzIgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAogICAg
IEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwogCiAgICAgLy8gQ2FsbCBzdG9w
TG9hZGluZygpIGFuZCBjbG9zZSgpIG9uIHRoZSBmaXJzdCBwYWdlIGluIHF1aWNrIHN1Y2Nlc3Np
b24uCi0gICAgV0tQYWdlU3RvcExvYWRpbmcod2ViVmlldzEucGFnZSgpKTsKLSAgICBXS1BhZ2VD
bG9zZSh3ZWJWaWV3MS5wYWdlKCkpOworICAgIFt3ZWJWaWV3MSBzdG9wTG9hZGluZ107CisgICAg
W3dlYlZpZXcxIF9jbG9zZV07CiAKICAgICAvLyBXZSBuZWVkIHRvIHdhaXQgaGVyZSBiZWNhdXNl
IGl0IHRha2VzIDMgc2Vjb25kcyBmb3IgYSBwcm9jZXNzIHRvIGJlIHJlY29nbml6ZWQgYXMgdW5y
ZXNwb25zaXZlLgogICAgIFV0aWw6OnNsZWVwKDQpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbQkocmV2aXNpb24gMjM1MzcyKQkoZnJv
bSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1RpbWVyRG9l
c250RmlyZUVhcmx5LmNwcDoyMzUzNzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9vbCBkaWRCZWNvbWVVbnJl
c3BvbnNpdmU7CitzdGF0aWMgYm9vbCBkaWRCcmllZmx5UGF1c2U7CisKK3N0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgZGlkQnJpZWZs
eVBhdXNlID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkRpZEJyaWVmbHlQYXVzZSIsIG1l
c3NhZ2VOYW1lKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRGaW5p
c2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9u
c2l2ZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEJlY29tZVVucmVzcG9uc2l2
ZSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29u
dGV4dFJlZiBjb250ZXh0KQoreworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjAg
aW5qZWN0ZWRCdW5kbGVDbGllbnQ7CisgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwg
MCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7CisKKyAgICBpbmplY3RlZEJ1bmRsZUNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGU7CisKKyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0
LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAg
bG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVy
Q2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2Fk
ZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwor
ICAgIGxvYWRlckNsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFn
ZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHkpCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0
KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKKyAgICBzZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5w
YWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGls
OjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0
aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisKKyAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSygiQnJpZWZseVBhdXNlIikuZ2V0
KCksIDApOworCisgICAgLy8gUHJlc3NpbmcgYSBrZXkgb24gdGhlIGtleWJvYXJkIHNob3VsZCBz
dGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNpbmNlIHRoZSB3ZWIgcHJvY2VzcworICAg
IC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCByZWNlaXZlcyB0aGlzIGtleXByZXNzLCBp
dCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byByZXNwb25kCisgICAgLy8gKGJ1dCBub3Qg
c28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBmaXJlcykuCisgICAgd2ViVmll
dy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKKworICAgIFV0aWw6OnJ1bigmZGlkQnJpZWZs
eVBhdXNlKTsKKworICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1l
ckRvZXNudEZpcmVFYXJseS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVy
RG9lc250RmlyZUVhcmx5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbQkocmV2
aXNpb24gMjM1MzcyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9S
ZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwxMiArMjUsMTIgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgV0tfSEFWRV9DX1NQ
SQorI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKIAogI2luY2x1ZGUgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlICJUZXN0V0tXZWJWaWV3LmgiCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwogc3RhdGljIGJv
b2wgZGlkQmVjb21lVW5yZXNwb25zaXZlOwpAQCAtNDIsMTYgKzQyLDYgQEAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZQogICAgIEVYUEVDVF9XS19TVFJFUSgiRGlkQnJp
ZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUpOwogfQogCi1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQot
ewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVj
b21lVW5yZXNwb25zaXZlID0gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgV0tDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKQEAgLTYzLDI3ICs1MywzNyBAQCBz
dGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvCiAgICAgV0tDb250ZXh0U2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dCwgJmluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2Up
OwogfQogCi1zdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQot
ewotICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxv
YWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworQGludGVyZmFjZSBSZXNwb25z
aXZlbmVzc0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gUmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZQogCi0gICAgbG9hZGVyQ2xp
ZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JG
cmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tO
YXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQog
Ci0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2Up
OworLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdLV2Vi
VmlldyAqKXdlYlZpZXcKK3sKKyAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwogfQog
CitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwogVEVTVChXZWJLaXQsIFJlc3Bv
bnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRC
dW5kbGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKICAg
ICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKIAotICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQo
d2ViVmlldy5wYWdlKCkpOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtSZXNwb25zaXZl
bmVzc0RlbGVnYXRlIG5ld10pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vz
c1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAg
V0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JS
ZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKICAgICBVdGlsOjpydW4oJmRpZEZpbmlz
aExvYWQpOwogCiAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnRl
eHQuZ2V0KCksIFV0aWw6OnRvV0soIkJyaWVmbHlQYXVzZSIpLmdldCgpLCAwKTsKQEAgLTkxLDcg
KzkxLDcgQEAgVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaQogICAgIC8v
IFByZXNzaW5nIGEga2V5IG9uIHRoZSBrZXlib2FyZCBzaG91bGQgc3RhcnQgdGhlIHJlc3BvbnNp
dmVuZXNzIHRpbWVyLiBTaW5jZSB0aGUgd2ViIHByb2Nlc3MKICAgICAvLyBpcyBnb2luZyB0byBw
YXVzZSBiZWZvcmUgaXQgcmVjZWl2ZXMgdGhpcyBrZXlwcmVzcywgaXQgc2hvdWxkIHRha2UgYSBs
aXR0bGUgd2hpbGUgdG8gcmVzcG9uZAogICAgIC8vIChidXQgbm90IHNvIGxvbmcgdGhhdCB0aGUg
cmVzcG9uc2l2ZW5lc3MgdGltZXIgZmlyZXMpLgotICAgIHdlYlZpZXcuc2ltdWxhdGVTcGFjZWJh
cktleVByZXNzKCk7CisgICAgW3dlYlZpZXcgdHlwZUNoYXJhY3RlcjonICddOwogCiAgICAgVXRp
bDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOwogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3Rv
cmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjM1MzcyKQkoZnJv
bSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0
aG91dE5hdmlnYXRpb24uY3BwOjIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW5jbHVkZSAiSmF2YVNjcmlwdFRlc3QuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmll
dy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5o
PgorI2luY2x1ZGUgPFdlYktpdC9XS1Nlc3Npb25TdGF0ZVJlZi5oPgorCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9vbCBk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7Cisg
ICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tG
b3J3YXJkTGlzdEZvclBhZ2UoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRk
ZWRJdGVtLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdL
UGFnZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsK
KyAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisg
ICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmRpZEZp
bmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBsb2FkZXJDbGll
bnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Rm9y
UGFnZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVu
dC5iYXNlKTsKK30KKworc3RhdGljIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gY3JlYXRlU2Vzc2lv
blN0YXRlRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0KTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgp
KTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3Jl
YXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKworICAgIGF1
dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhzdGF0aWNfY2FzdDxXS1Nlc3Npb25TdGF0ZVJlZj4o
V0tQYWdlQ29weVNlc3Npb25TdGF0ZSh3ZWJWaWV3LnBhZ2UoKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oMSksIG51bGxwdHIpKSk7CisgICAgcmV0dXJuIGFkb3B0V0soV0tTZXNzaW9uU3RhdGVD
b3B5RGF0YShzZXNzaW9uU3RhdGUuZ2V0KCkpKTsKK30KKworVEVTVChXZWJLaXQsIFJlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbikKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOworCisgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVu
dCh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGRhdGEgPSBj
cmVhdGVTZXNzaW9uU3RhdGVEYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIEVYUEVDVF9OT1RfTlVM
TChkYXRhKTsKKworICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhXS1Nlc3Npb25TdGF0
ZUNyZWF0ZUZyb21EYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKHdlYlZpZXcucGFnZSgpLCBzZXNzaW9uU3RhdGUuZ2V0
KCkpOworCisgICAgVXRpbDo6cnVuKCZkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOworCisgICAg
V0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUNv
bW1pdHRlZFVSTCh3ZWJWaWV3LnBhZ2UoKSkpOworICAgIEVYUEVDVF9OVUxMKGNvbW1pdHRlZFVS
TC5nZXQoKSk7CisKKyAgICBhdXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3
YXJkTGlzdCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgYXV0byBjdXJyZW50SXRlbSA9IFdLQmFja0Zv
cndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oYmFja0ZvcndhcmRMaXN0KTsKKyAgICBhdXRvIGN1cnJl
bnRJdGVtVVJMID0gYWRvcHRXSyhXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKGN1cnJlbnRJ
dGVtKSk7CisgICAgYXV0byBleHBlY3RlZFVSTCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9y
UmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpOworICAgIEVYUEVDVF9OT1RfTlVMTChleHBlY3Rl
ZFVSTCk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGN1cnJlbnRJdGVtVVJMLmdldCgp
LCBleHBlY3RlZFVSTC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CisKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9S
ZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0
aG91dE5hdmlnYXRpb24ubW0JKHJldmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3NyArMjUsODAgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCi0jaWYgV0tfSEFWRV9DX1NQSQorI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbmNsdWRl
ICJKYXZhU2NyaXB0VGVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPFdl
YktpdC9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tCYWNr
Rm9yd2FyZExpc3RSZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTZXNzaW9uU3RhdGVS
ZWYuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworI2luY2x1ZGUgPFdlYktpdC9XS1VS
TC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1VSTENGLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2Ug
V0tXZWJWaWV3ICgpCistIChXS1BhZ2VSZWYpX3BhZ2VGb3JUZXN0aW5nOworQGVuZAogCiBzdGF0
aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwogc3RhdGljIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0OworICAgIAorQGludGVyZmFjZSBTZXNzaW9uU3RhdGVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxX
S05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNlc3Npb25TdGF0
ZURlbGVnYXRlCiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2
aWdhdGlvbgogewogICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDooV0tC
YWNrRm9yd2FyZExpc3RJdGVtICopaXRlbUFkZGVkIHJlbW92ZWQ6KE5TQXJyYXk8V0tCYWNrRm9y
d2FyZExpc3RJdGVtICo+ICopaXRlbXNSZW1vdmVkCiB7CiAgICAgZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0ID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZWYgcGFnZSkKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0g
ICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAg
IGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50
LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBh
Z2U7CitAZW5kCiAKLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJD
bGllbnQuYmFzZSk7Ci19CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBXS1Jl
dGFpblB0cjxXS0RhdGFSZWY+IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tDb250ZXh0UmVmIGNv
bnRleHQpCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBjcmVhdGVTZXNzaW9uU3RhdGVE
YXRhKCkKIHsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKLSAgICBzZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2Vi
Vmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIs
ICJodG1sIikpLmdldCgpKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbU2Vzc2lvblN0
YXRlRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOworICAgIFt2aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Cisg
ICAgW3ZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0
aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwogCi0g
ICAgYXV0byBzZXNzaW9uU3RhdGUgPSBhZG9wdFdLKHN0YXRpY19jYXN0PFdLU2Vzc2lvblN0YXRl
UmVmPihXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKHdlYlZpZXcucGFnZSgpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPigxKSwgbnVsbHB0cikpKTsKLSAgICByZXR1cm4gYWRvcHRXSyhXS1Nlc3Npb25T
dGF0ZUNvcHlEYXRhKHNlc3Npb25TdGF0ZS5nZXQoKSkpOworICAgIE5TRGF0YSAqZGF0YSA9IFt2
aWV3IF9zZXNzaW9uU3RhdGVEYXRhXTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0RhdGFDcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0
aCkpOwogfQogCiBURVNUKFdlYktpdCwgUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0
aW9uKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBX
S0NvbnRleHRDcmVhdGUoKSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0
LmdldCgpKTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAg
IFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gZGF0YSA9IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoY29u
dGV4dC5nZXQoKSk7CisgICAgYXV0byBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YSgpOwog
ICAgIEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1dLV2ViVmlldyBuZXddKTsKICAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tTZXNz
aW9uU3RhdGVDcmVhdGVGcm9tRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvblN0
YXRlLmdldCgpKTsKKyAgICBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10sIHNlc3Npb25TdGF0ZS5nZXQoKSk7CiAK
ICAgICBVdGlsOjpydW4oJmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk7CiAKLSAgICBXS1JldGFp
blB0cjxXS1VSTFJlZj4gY29tbWl0dGVkVVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5Q29tbWl0dGVk
VVJMKHdlYlZpZXcucGFnZSgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRl
ZFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUNvbW1pdHRlZFVSTChbd2ViVmlldyBfcGFnZUZvclRl
c3RpbmddKSk7CiAgICAgRVhQRUNUX05VTEwoY29tbWl0dGVkVVJMLmdldCgpKTsKIAotICAgIGF1
dG8gYmFja0ZvcndhcmRMaXN0ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KHdlYlZpZXcucGFn
ZSgpKTsKKyAgICBhdXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlz
dChbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddKTsKICAgICBhdXRvIGN1cnJlbnRJdGVtID0gV0tC
YWNrRm9yd2FyZExpc3RHZXRDdXJyZW50SXRlbShiYWNrRm9yd2FyZExpc3QpOwogICAgIGF1dG8g
Y3VycmVudEl0ZW1VUkwgPSBhZG9wdFdLKFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoY3Vy
cmVudEl0ZW0pKTsKLSAgICBhdXRvIGV4cGVjdGVkVVJMID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVV
UkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CisgICAgCisgICAgYXV0byBleHBlY3Rl
ZFVSTCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKVtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdKSk7CiAgICAgRVhQRUNU
X05PVF9OVUxMKGV4cGVjdGVkVVJMKTsKICAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoY3Vy
cmVudEl0ZW1VUkwuZ2V0KCksIGV4cGVjdGVkVVJMLmdldCgpKSk7CiB9CkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIzNTM3MikJKGZy
b20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwOjIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdL
X0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorCisjaW5jbHVkZSA8V2ViS2l0
L1dLU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wg
ZmluaXNoZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRD
YWxsYmFja3MgPSBmYWxzZTsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAg
ICAvLyBPbmx5IG1hcmsgZmluaXNoZWQgd2hlbiB0aGUgbWFpbiBmcmFtZSBsb2FkcworICAgIGlm
ICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmlu
aXNoZWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0oV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLVHlwZVJlZiB1c2VyRGF0
YSwgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS1N0
cmluZ0dldFR5cGVJRCgpKSB7CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKChXS1N0cmluZ1JlZil1c2VyRGF0YSwgInNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
Q2FsbGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVkIikpCisgICAgICAgICAgICByZWNlaXZlZFByb3Bl
ckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBmaW5pc2hlZCA9IHRy
dWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2Up
Cit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgm
bG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGll
bnQuYmFzZS52ZXJzaW9uID0gMTsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZy
YW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC53aWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gPSB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CisKKyAgICBX
S1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisK
K1RFU1QoV2ViS2l0LCBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRl
eHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVz
dCIpKTsKKyAgICAvLyBFbmFibGUgdGhlIHBhZ2UgY2FjaGUgc28gd2UgY2FuIHRlc3QgdGhlIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUlzSW5QYWdlQ2FjaGUgQVBJCisgICAgV0tDb250ZXh0
U2V0Q2FjaGVNb2RlbChjb250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2Vy
KTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNl
dFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3
ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxl
IiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIAorICAg
IGZpbmlzaGVkID0gZmFsc2U7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRv
cHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikp
LmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKworICAgIGZpbmlzaGVkID0gZmFs
c2U7CisgICAgV0tQYWdlR29CYWNrKHdlYlZpZXcucGFnZSgpKTsKKyAgICBVdGlsOjpydW4oJmZp
bmlzaGVkKTsKKyAgICAKKyAgICBFWFBFQ1RfRVEocmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENh
bGxiYWNrcywgdHJ1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2Vu
ZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJl
dmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcx
ICsyNSw1MSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisj
aWYgV0tfQVBJX0VOQUJMRUQKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgotCiAjaW5jbHVkZSA8
V2ViS2l0L1dLU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIGZpbmlzaGVkID0gZmFsc2U7Ci1zdGF0
aWMgYm9vbCByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gZmFsc2U7CiAKLXN0
YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgLy8gT25seSBtYXJrIGZpbmlzaGVk
IHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShm
cmFtZSkpCi0gICAgICAgIHJldHVybjsKK0BpbnRlcmZhY2UgQmFja0ZvcndhcmRDbGllbnQgOiBO
U09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCiAKLSAgICBmaW5pc2hlZCA9IHRy
dWU7Ci19CitAaW1wbGVtZW50YXRpb24gQmFja0ZvcndhcmRDbGllbnQKIAotc3RhdGljIHZvaWQg
d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKQorLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAq
KW5hdmlnYXRpb24KIHsKLSAgICBpZiAoV0tHZXRUeXBlSUQodXNlckRhdGEpID09IFdLU3RyaW5n
R2V0VHlwZUlEKCkpIHsKLSAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
KFdLU3RyaW5nUmVmKXVzZXJEYXRhLCAic2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxs
YmFjayBjYWxsZWQgYXMgZXhwZWN0ZWQiKSkKLSAgICAgICAgICAgIHJlY2VpdmVkUHJvcGVyQmFj
a0ZvcndhcmRDYWxsYmFja3MgPSB0cnVlOwotICAgIH0KLQogICAgIGZpbmlzaGVkID0gdHJ1ZTsK
IH0KIAotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtIGluUGFnZUNhY2hlOihCT09MKWlu
UGFnZUNhY2hlCiB7Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OwotICAg
IG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisgICAgZmlu
aXNoZWQgPSB0cnVlOworfQogCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0g
ICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JG
cmFtZTsKLSAgICBsb2FkZXJDbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gd2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOworQGVuZAogCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRl
ckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQorbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiBURVNUKFdlYktpdCwgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCiB7
Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpj
cmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbVRlc3QiKSk7Ci0gICAgLy8gRW5hYmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0
ZXN0IHRoZSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAg
IFdLQ29udGV4dFNldENhY2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3Vt
ZW50QnJvd3Nlcik7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgp
KTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbQmFja0ZvcndhcmRDbGllbnQgbmV3XSk7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcu
cGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRt
bCIpKS5nZXQoKSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwogICAgIAogICAgIGZpbmlzaGVk
ID0gZmFsc2U7Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGls
OjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUtaWZyYW1lIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV1dOwogICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwogCiAgICAgZmluaXNoZWQgPSBmYWxzZTsK
LSAgICBXS1BhZ2VHb0JhY2sod2ViVmlldy5wYWdlKCkpOworICAgIFt3ZWJWaWV3IGdvQmFja107
CiAgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7Ci0gICAgCi0gICAgRVhQRUNUX0VRKHJlY2VpdmVk
UHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MsIHRydWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348169</attachid>
            <date>2018-08-27 11:14:25 -0700</date>
            <delta_ts>2018-08-27 11:14:25 -0700</delta_ts>
            <desc>patch with updated title</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>76602</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE4LTA4LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVHJhbnNsYXRlIDQgdGVzdHMgdXNpbmcgV0tQYWdlTG9hZGVy
Q2xpZW50IHRvIE9iakMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODgyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAg
ICAgVGhleSB1c2UgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSwgZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0LCBvciB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uCisgICAgICAgIFJhdGhl
ciB0aGFuIGludHJvZHVjZSB0aGVzZSB0byBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LCBJIGp1c3Qg
dHJhbnNsYXRlZCB0aGUgdGVzdHMgdG8gdXNlIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCB3aGljaCBh
bHJlYWR5IGhhdmUgZXF1aXZhbGVudCBjYWxsYmFja3MuCisgICAgICAgIHdpbGxHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbSBoYWQgdXNlckRhdGEgZnJvbSB0aGUgSW5qZWN0ZWRCdW5kbGUsIGJ1dCBu
b2JvZHkgd2FzIHVzaW5nIGl0IHNvIEkgZGlkIG5vdCBhZGQgdGhhdCB0byB0aGUgT2JqQyBTUEks
IHNvIEkgZG9uJ3QgdGVzdCB0aGF0IHVudXNlZAorICAgICAgICBidW5kbGUgZnVuY3Rpb25hbGl0
eSBhbnkgbW9yZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVT
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcC4KKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NUaW1lckRlbGVnYXRlIHdlYlZpZXc6
ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bUmVzcG9uc2l2ZW5lc3NUaW1lckRl
bGVnYXRlIF93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTpdKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKTogRGVsZXRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NU
aW1lckRvZXNudEZpcmVFYXJseS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAuCisgICAg
ICAgICgtW1Jlc3BvbnNpdmVuZXNzRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9u
Ol0pOgorICAgICAgICAoLVtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIF93ZWJWaWV3V2ViUHJvY2Vz
c0RpZEJlY29tZVVucmVzcG9uc2l2ZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnByb2Nlc3NEaWRCZWNv
bWVVbnJlc3BvbnNpdmUpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0
UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW06IENv
cGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9u
U3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAuCisgICAgICAgICgtW1Nlc3Npb25TdGF0ZURlbGVn
YXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bU2Vzc2lvblN0
YXRlRGVsZWdhdGUgX3dlYlZpZXc6YmFja0ZvcndhcmRMaXN0SXRlbUFkZGVkOnJlbW92ZWQ6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmlu
aXNoTG9hZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbTog
Q29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwLgorICAgICAgICAoLVtCYWNrRm9yd2FyZENsaWVudCB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW0JhY2tGb3J3YXJkQ2xpZW50
IF93ZWJWaWV3OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTppblBhZ2VDYWNoZTpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ondp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KTogRGVsZXRlZC4KKwogMjAxOC0wOC0yNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyMzUzNjcuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0phdmFT
Y3JpcHRUZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0
VGVzdC5oCShyZXZpc2lvbiAyMzUzNzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3Jp
cHRUZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIE9CSkNfQ0xBU1MgV0tW
aWV3OwogT0JKQ19DTEFTUyBXZWJWaWV3OwogI2VuZGlmCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFz
ZS5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMzUzNzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIzLDcg
KzIyMyw2IEBACiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVh
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTZB
ODkyMUQyRjFCRUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAqLzsgfTsKIAkJNTFF
NkE4OTYxRDJGMUNBNzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNkE4OTUxRDJG
MUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi87IH07CiAJCTUxRUIxMjk0
MUZERjA1MjUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVCMTI5MzFGREYwNTA1MDBBNUExQkQg
LyogU2VydmljZVdvcmtlckJhc2ljLm1tICovOyB9OwotCQk1MUZDRjdBMTE1MzRCMkEwMDAxMDQ0
OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk3MTUzNEFDNkQwMDEw
NDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwICovOyB9Owog
CQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIwQkNGNEExNDFFQjA5
RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTI0QkJDOUUxOURG
NzJDMDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQzlCMTlERjM3MTQwMDJGMUFG
MSAvKiBmaWxlLXdpdGgtdmlkZW8uaHRtbCAqLzsgfTsKIAkJNTI0QkJDQTExOUUzMEM3NzAwMkYx
QUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNEJCQ0EwMTlFMzBDNjMwMDJGMUFGMSAvKiB0ZXN0Lm1wNCAqLzsgfTsK
QEAgLTI5MCw2ICsyODksMTAgQEAKIAkJNUNCM0NFMzkxRkExNjk3RjAwQzNBMkQ2IC8qIFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0IzQ0UzODFGQTE2OTE3MDBDM0EyRDYgLyogV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbSAqLzsgfTsKIAkJNUNCNDBCNEUxRjRCOThEMzAwN0RDN0I5IC8qIFVJRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I0MEI0
RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNUNCNUIzQzIxRkZD
NTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjVCM0JEMUZGQzUxN0UwMEMyN0JC
MCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi87IH07CisJCTVDQ0IxMEUxMjEzNDU3
RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwRTAyMTM0NTc5RDAwQUM1QUYwIC8qIFJl
c3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07CisJCTVDQ0IxMEUyMjEzNDU3RDUwMEFDNUFGMCAv
KiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwREQyMTM0NTc5QzAwQUM1QUYwIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0gKi87IH07CisJCTVDQ0IxMEUz
MjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NCMTBE
RTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
Lm1tICovOyB9OworCQk1Q0NCMTBFNDIxMzQ1N0UwMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NCMTBERjIxMzQ1NzlEMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0ubW0gKi87IH07CiAJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUzQiAvKiBXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZS5tbSAqLzsgfTsKIAkJNUNFQUI1RTExRkE5MzlGNDAwQTc3RkFBIC8qIF9XS0lucHV0RGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
NUU0QjFEMkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0QjFEMkMxRDQwNEM2
MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tICovOyB9OwpAQCAtNTI5LDEwICs1
MzIsOCBAQAogCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVyQ3Jh
c2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEEz
QUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNoLmNwcCAqLzsgfTsK
IAkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJW
aWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
RDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5j
cHAgKi87IH07CiAJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCAq
LzsgfTsKLQkJN0NDRTdGMTAxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJE
b2VzbnRGaXJlRWFybHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJE
b2VzbnRGaXJlRWFybHkuY3BwICovOyB9OwogCQk3Q0NFN0YxMTFBNDExQUU2MDA0NDdDNEMgLyog
UmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkg
LyogUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi87IH07CiAJCTdD
Q0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENjQwQjU0MTc4NzVE
RkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLzsgfTsKLQkJN0NDRTdG
MTMxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk4MTUz
NEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi87IH07
CiAJCTdDQ0U3RjE0MUE0MTFBRTYwMDQ0N0M0QyAvKiBTaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3
YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFNUM3MDQxOTE5RUE1RjAwRDhCM0UxIC8qIFNob3VsZEtlZXBDdXJyZW50
QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgKi87IH07CiAJCTdDQ0U3RjE1MUE0MTFBRTYw
MDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2Vi
YXJTY3JvbGxpbmcuY3BwICovOyB9OwogCQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVy
bWluYXRlVHdpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFFNzJGNDcxNzNFQjIxNDAwNjM2MkYwIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCAqLzsg
fTsKQEAgLTU3MCw3ICs1NzEsNiBAQAogCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5
bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi87IH07CiAJCTgzNDlEM0MyMURCOTZEREUw
MDRBOUY2NSAvKiBDb250ZXh0TWVudURvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzExREI5NkREQTAwNEE5RjY1IC8qIENvbnRl
eHRNZW51RG93bmxvYWQubW0gKi87IH07CiAJCTgzNDlEM0M0MURCOTcyOEUwMDRBOUY2NSAvKiBs
aW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OUQzQzMxREI5NzI0RjAwNEE5RjY1IC8q
IGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRtbCAqLzsgfTsKLQkJODM1Q0Y5NjcxRDI1
RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzVDRjk2NjFE
MjVGQ0Q2MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNw
cCAqLzsgfTsKIAkJODM2MUYxNzgxRTYxMEI0RTAwNzU5QjI1IC8qIGxpbmstd2l0aC1kb3dubG9h
ZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MUYxNzcxRTYxMEIyMTAwNzU5QjI1IC8qIGxp
bmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgKi87IH07CiAJCTgz
Nzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3JlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NzlDMzcxRjgyRkVCMDAwN0NE
QThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTgzN0EzNUYxMUQ5QTFFN0QwMDY2
M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTM1RjAxRDlBMUU2NDAwNjYzQzU3
IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLzsgfTsKQEAgLTU3OCw3ICs1NzgsNiBA
QAogCQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQUVF
OEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLzsgfTsK
IAkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQkM1QUJGMjBFNkMwRDMwMEY1ODc5RiAvKiBTdGFydExvYWRJbkRpZEZhaWxQcm92aXNpb25h
bExvYWQubW0gKi87IH07CiAJCTgzREI3OTY5MUVGNjNCM0MwMEJGQTVFNSAvKiBGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCNzk2
NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovOyB9OwotCQk4M0RFMTM0RDFFRjFD
NTA4MDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RFMTM0QzFFRjFDNEZFMDBDMUIzNTUgLyog
UmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07CiAJCTgzRjIyQzY0MjBCMzU1RjgwMDM0Mjc3
RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyMkM2MzIwQjM1NUVCMDAzNDI3N0UgLyogTm9Qb2xp
Y3lEZWxlZ2F0ZVJlc3BvbnNlLm1tICovOyB9OwogCQk4QzEwQUY5ODIwNjQ2NzkyMDAxOEZEOTAg
LyogbG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk3MjA2NDY3ODMwMDE4
RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi87IH07CiAJCThD
MTBBRjk5MjA2NDY3QTkwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDMTBBRjk2MjA2NDY3
NzcwMDE4RkQ5MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSAqLzsgfTsKQEAgLTE1MDYs
OCArMTUwNSw2IEBACiAJCTUxRTkzMDE2MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRTY2Fs
ZUZhY3Rvck5vdFplcm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJCYXNp
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQkJCNEMxNTEzRDRFOTAwODIy
NzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVVSTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTFGQ0Y3OTcxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MUZDRjc5ODE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MjBCQ0Y0QTE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5kbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXJjaGl2ZV9CdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjBCQ0Y0QjE0MUVCMDlFMDA5
MzdFQTggLyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0QkJD
OUIxOURGMzcxNDAwMkYxQUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImZpbGUtd2l0aC12aWRlby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1ODAsNiArMTU3NywxMCBAQAogCQk1Q0IzQ0UzODFGQTE2OTE3MDBDM0Ey
RDYgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlEZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCNUIzQkQxRkZDNTE3RTAwQzI3QkIwIC8q
IEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZyYW1l
SGFuZGxlU2VyaWFsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUND
QjEwREQyMTM0NTc5QzAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0NCMTBERTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXRO
YXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVz
dG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0NCMTBERjIxMzQ1NzlEMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDQjEwRTAyMTM0NTc5RDAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25zaXZlbmVzc1Rp
bWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0UzNTREODFFNzBEOUMzMDBC
RUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lucHV0
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJ
bnB1dERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTRCMUQyQzFE
NDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgcGF0aCA9
IC4uL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NzcsNyArMTY3OCw2IEBACiAJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAvKiBB
c3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ5RDNDMTFEQjk2RERBMDA0QTlGNjUgLyog
Q29udGV4dE1lbnVEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENvbnRleHRNZW51RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzNDlEM0MzMURCOTcyNEYwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmli
dXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRoLWRvd25sb2Fk
LWF0dHJpYnV0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1Q0Y5NjYx
RDI1RkNENjAwMUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS13
aXRoLXNsYXNoZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLXdpdGgt
ZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODM3NzlDMzcxRjgyRkVCMDAwN0NEQThBIC8qIFZpc2l0ZWRMaW5rU3RvcmUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpdGVkTGlua1N0
b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBMzVGMDFEOUExRTY0MDA2
NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTY4Niw3ICsxNjg2LDYgQEAKIAkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0
IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNCQzVBQkYyMEU2QzBEMzAwRjU4NzlGIC8qIFN0YXJ0TG9hZElu
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFN0YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8q
IFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzRjIyQzYzMjBCMzU1RUIwMDM0Mjc3RSAvKiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb1BvbGljeURlbGVn
YXRlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkQxOTk3MUEy
REIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRlckNy
YXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTUsNyArMTg5NCw2IEBA
CiAJCUMwQURCRTdCMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0VGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMEFEQkU4MjEyRkNBNkFBMDBEMkMxMjkgLyogUmVzdG9yZVNlc3Np
b25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8qIHNp
bXBsZS1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWZvcm0u
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwQkQ2NjlDMTMxRDNDRjcwMEUx
OEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEJENjY5RTEzMUQzQ0ZG
MDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1l
ckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2luZ1NjYWxlRmFj
dG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0NTk4QjZGMDBB
ODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzgyLDEyICsyMzgwLDE2IEBACiAJCQkJ
QTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3Rv
Y29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFj
dGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAorCQkJCTVDQ0IxMEUwMjEzNDU3OUQwMEFDNUFG
MCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tICovLAorCQkJCTVDQ0IxMEREMjEzNDU3OUMwMEFD
NUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tICovLAorCQkJCTVD
Q0IxMERFMjEzNDU3OUQwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmln
YXRpb24ubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5l
bC5tbSAqLywKIAkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0QWZ0ZXJE
b2N1bWVudExvYWQubW0gKi8sCiAJCQkJNUNBOTg1NTEyMTEzQ0I4QzAwNTdFQjZCIC8qIFNhZmVC
cm93c2luZy5tbSAqLywKIAkJCQlDRTA5NDczNjIwNjMyMjNCMDAzQzlCQTAgLyogU2NoZW1lUmVn
aXN0cnkubW0gKi8sCiAJCQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3Jr
ZXJCYXNpYy5tbSAqLywKIAkJCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogU2V0TWF4aW11
bVByZXdhcm1lZFByb2Nlc3NDb3VudC5tbSAqLywKKwkJCQk1Q0NCMTBERjIxMzQ1NzlEMDBBQzVB
RjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8sCiAJCQkJMzdCQ0E2MUIx
QjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlv
bnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1t
ICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tICov
LApAQCAtMjkyNSwxNiArMjkyNywxMSBAQAogCQkJCThBM0FGOTNBMTZDOUVEMjcwMEQyNDhDMSAv
KiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgKi8sCiAJCQkJMkREN0QzQTkxNzgyMDVEMDAwMjZF
MUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLywKIAkJCQk4QTJDNzUw
RDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8sCi0JCQkJ
ODNERTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAog
CQkJCTUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gu
bW0gKi8sCi0JCQkJQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGlt
ZXJEb2VzbnRGaXJlRWFybHkuY3BwICovLAogCQkJCUMwQkQ2NjlFMTMxRDNDRkYwMEUxOEYyQSAv
KiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgKi8sCiAJCQkJ
ODNCNkRFNkUxRUU3NTIwRjAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwICovLAog
CQkJCUMwQURCRTgyMTJGQ0E2QUEwMEQyQzEyOSAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFp
bmluZ0Zvcm1EYXRhLmNwcCAqLywKLQkJCQk4MzVDRjk2NjFEMjVGQ0Q2MDAxQTY1RDQgLyogUmVz
dG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQkyRDY0MEI1NDE3
ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8sCi0JCQkJNTFG
Q0Y3OTgxNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCAqLywKLQkJCQk1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCAqLywKIAkJCQk1MUU1QzcwNDE5MTlFQTVGMDBEOEIzRTEg
LyogU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCAqLywKIAkJ
CQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3BwICovLAog
CQkJCTc2NzM0OTk3MTkzMDE2REMwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQ
cm92aXNpb25hbExvYWQuY3BwICovLApAQCAtMzkxNywxMiArMzkxNCwxMiBAQAogCQkJCTdDQ0U3
RjBFMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRjFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplV2lu
ZG93QWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUM4RTFBNTFGMjZBRjRDMDBC
RjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTgz
REUxMzREMUVGMUM1MDgwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTVDQ0IxMEUxMjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1Rp
bWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyQzRDOUUyMEVBQTQwRDAwNDk0NUVBIC8qIFJl
c3BvbnNpdmVuZXNzVGltZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdDQ0U3RjEwMUE0
MTFBRTYwMDQ0N0M0QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTVDQ0IxMEUyMjEzNDU3RDUwMEFDNUFGMCAvKiBSZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCNkRFNkYx
RUU3NTIyMTAwMUU3OTJGIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdGMTExQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVDb250
YWluaW5nRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODM1Q0Y5NjcxRDI1RkNENjAw
MUE2NUQ0IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1Q0NCMTBFMzIxMzQ1N0Q4MDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25T
dGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDZFODE2RjgxRTc5
RTI5QzAwMzc1QURDIC8qIFJlc3RvcmVTdGF0ZUFmdGVyVGVybWluYXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQlGNDE4QkUxNTFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTgwQzBGQTFFRTY3REYwMDA0NjhGNDcgLyogUnVuT3Bl
blBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTQyLDcgKzM5MzksNyBAQAogCQkJCTdDODNF
MDUyMUQwQTY0MTgwMEZFQkNGMyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTE3OTkxODgxRTFDOTk0RTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNzk5MThCMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTdDQ0U3RjEzMUE0MTFBRTYwMDQ0N0M0QyAvKiBTaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NCMTBFNDIx
MzQ1N0UwMDBBQzVBRjAgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YxNDFBNDExQUU2MDA0NDdDNEMgLyogU2hvdWxkS2VlcEN1cnJl
bnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3QkNB
NjFDMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dB
Y3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzUxRDBBNjU0NjAwRkVCQ0YzIC8q
IFNocmlua1RvRml0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC00MTQ2LDcgKzQxNDMsNiBAQAogCQkJ
CUJDNTc1QkUwMTI2RjU5MEQwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUI1NUFEMUQ1MTc5RjNCMzAwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VM
b2FkV2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBCRDY2
OUYxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxRkNGN0ExMTUzNEIyQTAwMDEwNDQ5MSAv
KiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UzNTI0Rjgx
QjE0MzFGNjAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMkQzMTkxNERDNjhCOTAwRkZCMUREIC8qIFVzZXJN
ZXNzYWdlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCShy
ZXZpc2lvbiAyMzUzNzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9SZXNw
b25zaXZlbmVzc1RpbWVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLSNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgot
Ci1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBib29sIGRpZEZpbmlzaExvYWQg
eyBmYWxzZSB9Owotc3RhdGljIGJvb2wgZGlkQmVjb21lVW5yZXNwb25zaXZlIHsgZmFsc2UgfTsK
LQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsK
LX0KLQotc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXS1BhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsK
LX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKLXsK
LSAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2Fk
ZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAgIGxvYWRlckNsaWVudC5i
YXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUg
PSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LnByb2Nlc3NEaWRCZWNv
bWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOwotCi0gICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotfQotCi1U
RVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lclNob3VsZE5vdEZpcmVBZnRlclRlYXJEb3du
KQotewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0Nv
bnRleHRDcmVhdGUoKSk7Ci0gICAgLy8gVGhlIHR3byB2aWV3cyBuZWVkIHRvIHNoYXJlIHRoZSBz
YW1lIFdlYkNvbnRlbnQgcHJvY2Vzcy4KLSAgICBXS0NvbnRleHRTZXRNYXhpbXVtTnVtYmVyT2ZQ
cm9jZXNzZXMoY29udGV4dC5nZXQoKSwgMSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dzEoY29udGV4dC5nZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3MS5wYWdl
KCkpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3MS5wYWdlKCksIGFkb3B0V0soVXRpbDo6
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBVdGls
OjpydW4oJmRpZEZpbmlzaExvYWQpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVz
cG9uc2l2ZSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldzIoY29udGV4dC5nZXQoKSk7
Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3Mi5wYWdlKCkpOwotCi0gICAgZGlkRmlu
aXNoTG9hZCA9IGZhbHNlOwotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldzIucGFnZSgpLCBhZG9w
dFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7
Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKLQotICAgIEVYUEVDVF9GQUxTRShkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUpOwotCi0gICAgLy8gQ2FsbCBzdG9wTG9hZGluZygpIGFuZCBjbG9z
ZSgpIG9uIHRoZSBmaXJzdCBwYWdlIGluIHF1aWNrIHN1Y2Nlc3Npb24uCi0gICAgV0tQYWdlU3Rv
cExvYWRpbmcod2ViVmlldzEucGFnZSgpKTsKLSAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3MS5wYWdl
KCkpOwotCi0gICAgLy8gV2UgbmVlZCB0byB3YWl0IGhlcmUgYmVjYXVzZSBpdCB0YWtlcyAzIHNl
Y29uZHMgZm9yIGEgcHJvY2VzcyB0byBiZSByZWNvZ25pemVkIGFzIHVucmVzcG9uc2l2ZS4KLSAg
ICBVdGlsOjpzbGVlcCg0KTsKLQotICAgIC8vIFdlIHNob3VsZCBub3QgcmVwb3J0IHRoZSBzZWNv
bmQgcGFnZSBzaGFyaW5nIHRoZSBzYW1lIHByb2Nlc3MgYXMgdW5yZXNwb25zaXZlLgotICAgIEVY
UEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzcG9uc2l2ZW5lc3NUaW1lckRv
ZXNudEZpcmVFYXJseS5jcHAJKHJldmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotCi1uYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7Ci0KLXN0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7Ci1zdGF0aWMgYm9vbCBkaWRCZWNv
bWVVbnJlc3BvbnNpdmU7Ci1zdGF0aWMgYm9vbCBkaWRCcmllZmx5UGF1c2U7Ci0KLXN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlk
QnJpZWZseVBhdXNlID0gdHJ1ZTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIkRpZEJyaWVmbHlQYXVz
ZSIsIG1lc3NhZ2VOYW1lKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICBk
aWRGaW5pc2hMb2FkID0gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEJlY29tZVVucmVz
cG9uc2l2ZSA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KFdLQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7Ci0gICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNs
aWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7Ci0KLSAgICBpbmplY3RlZEJ1
bmRsZUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGU7Ci0KLSAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b250ZXh0LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNl
dFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xp
ZW50VjAgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2Yo
bG9hZGVyQ2xpZW50KSk7Ci0KLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAg
ICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZy
YW1lOwotICAgIGxvYWRlckNsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJv
Y2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTsKLQotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKLX0KLQotVEVTVChXZWJLaXQsIFJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKLSAgICBz
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKLQotICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2Vi
Vmlldy5wYWdlKCkpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRX
SyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwot
ICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7Ci0KLSAgICBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSygiQnJpZWZseVBhdXNl
IikuZ2V0KCksIDApOwotCi0gICAgLy8gUHJlc3NpbmcgYSBrZXkgb24gdGhlIGtleWJvYXJkIHNo
b3VsZCBzdGFydCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuIFNpbmNlIHRoZSB3ZWIgcHJvY2Vz
cwotICAgIC8vIGlzIGdvaW5nIHRvIHBhdXNlIGJlZm9yZSBpdCByZWNlaXZlcyB0aGlzIGtleXBy
ZXNzLCBpdCBzaG91bGQgdGFrZSBhIGxpdHRsZSB3aGlsZSB0byByZXNwb25kCi0gICAgLy8gKGJ1
dCBub3Qgc28gbG9uZyB0aGF0IHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBmaXJlcykuCi0gICAg
d2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKLQotICAgIFV0aWw6OnJ1bigmZGlk
QnJpZWZseVBhdXNlKTsKLQotICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgoKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0
TmF2aWdhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcAkocmV2aXNpb24g
MjM1MzcyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzdG9yZVNlc3Np
b25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgV0tfSEFWRV9DX1NQ
SQotCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFRlc3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgIlRlc3QuaCIK
LSNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Nl
c3Npb25TdGF0ZVJlZi5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBi
b29sIGRpZEZpbmlzaExvYWQ7Ci1zdGF0aWMgYm9vbCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7
Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkRmluaXNoTG9hZCA9IHRydWU7
Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2UoV0tQYWdl
UmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmLCBjb25z
dCB2b2lkKikKLXsKLSAgICBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QgPSB0cnVlOwotfQotCi1z
dGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdL
UGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVu
dCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVy
c2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZp
bmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Rm9yUGFnZTsKLQotICAgIFdLUGFnZVNldFBh
Z2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKLX0KLQotc3RhdGljIFdL
UmV0YWluUHRyPFdLRGF0YVJlZj4gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShXS0NvbnRleHRSZWYg
Y29udGV4dCkKLXsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKLSAgICBz
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwo
d2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBs
ZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwotICAg
IGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKLQotICAgIGF1dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRX
SyhzdGF0aWNfY2FzdDxXS1Nlc3Npb25TdGF0ZVJlZj4oV0tQYWdlQ29weVNlc3Npb25TdGF0ZSh3
ZWJWaWV3LnBhZ2UoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSksIG51bGxwdHIpKSk7Ci0g
ICAgcmV0dXJuIGFkb3B0V0soV0tTZXNzaW9uU3RhdGVDb3B5RGF0YShzZXNzaW9uU3RhdGUuZ2V0
KCkpKTsKLX0KLQotVEVTVChXZWJLaXQsIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdh
dGlvbikKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywg
V0tDb250ZXh0Q3JlYXRlKCkpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4
dC5nZXQoKSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7Ci0KLSAg
ICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGRhdGEgPSBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKGNv
bnRleHQuZ2V0KCkpOwotICAgIEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKLQotICAgIGF1dG8gc2Vz
c2lvblN0YXRlID0gYWRvcHRXSyhXS1Nlc3Npb25TdGF0ZUNyZWF0ZUZyb21EYXRhKGRhdGEuZ2V0
KCkpKTsKLSAgICBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9u
KHdlYlZpZXcucGFnZSgpLCBzZXNzaW9uU3RhdGUuZ2V0KCkpOwotCi0gICAgVXRpbDo6cnVuKCZk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNv
bW1pdHRlZFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUNvbW1pdHRlZFVSTCh3ZWJWaWV3LnBhZ2Uo
KSkpOwotICAgIEVYUEVDVF9OVUxMKGNvbW1pdHRlZFVSTC5nZXQoKSk7Ci0KLSAgICBhdXRvIGJh
Y2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlzdCh3ZWJWaWV3LnBhZ2UoKSk7
Ci0gICAgYXV0byBjdXJyZW50SXRlbSA9IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0o
YmFja0ZvcndhcmRMaXN0KTsKLSAgICBhdXRvIGN1cnJlbnRJdGVtVVJMID0gYWRvcHRXSyhXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKGN1cnJlbnRJdGVtKSk7Ci0gICAgYXV0byBleHBlY3Rl
ZFVSTCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1s
IikpOwotICAgIEVYUEVDVF9OT1RfTlVMTChleHBlY3RlZFVSTCk7Ci0gICAgRVhQRUNUX1RSVUUo
V0tVUkxJc0VxdWFsKGN1cnJlbnRJdGVtVVJMLmdldCgpLCBleHBlY3RlZFVSTC5nZXQoKSkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMjM1MzcyKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCShub25leGlzdGVudCkKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSAiVGVzdC5o
IgotCi0jaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotc3RhdGljIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLXN0YXRpYyBib29sIHJlY2Vp
dmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MgPSBmYWxzZTsKLQotc3RhdGljIHZvaWQgZGlk
RmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKikKLXsKLSAgICAvLyBPbmx5IG1hcmsgZmluaXNoZWQgd2hlbiB0aGUgbWFp
biBmcmFtZSBsb2FkcwotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZmluaXNoZWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCB3aWxs
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopCi17Ci0gICAgaWYgKFdLR2V0VHlw
ZUlEKHVzZXJEYXRhKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKChXS1N0cmluZ1JlZil1c2VyRGF0YSwgInNob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sgY2FsbGVkIGFzIGV4cGVjdGVkIikpCi0gICAg
ICAgICAgICByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBmaW5pc2hlZCA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJD
bGllbnQoV0tQYWdlUmVmIHBhZ2UpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVy
Q2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50
KSk7Ci0KLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKLSAgICBsb2FkZXJDbGll
bnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxv
YWRlckNsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSB3aWxsR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW07Ci0KLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2Fk
ZXJDbGllbnQuYmFzZSk7Ci19Ci0KLVRFU1QoV2ViS2l0LCBTaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9w
dFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlNob3VsZEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtVGVzdCIpKTsKLSAgICAvLyBFbmFibGUgdGhlIHBhZ2UgY2FjaGUg
c28gd2UgY2FuIHRlc3QgdGhlIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUlzSW5QYWdlQ2Fj
aGUgQVBJCi0gICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChjb250ZXh0LmdldCgpLCBrV0tDYWNo
ZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsKLQotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNv
bnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwot
Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVV
UkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwotICAgIFV0aWw6OnJ1bigm
ZmluaXNoZWQpOwotICAgIAotICAgIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgV0tQYWdlTG9hZFVS
TCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2lt
cGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsK
LQotICAgIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgV0tQYWdlR29CYWNrKHdlYlZpZXcucGFnZSgp
KTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKLSAgICAKLSAgICBFWFBFQ1RfRVEocmVjZWl2
ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxiYWNrcywgdHJ1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtX0J1bmRsZS5jcHAJKHJldmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRs
ZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgV0tfSEFWRV9DX1NQSQotCi0jaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVUZXN0LmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUg
PFdlYktpdC9XS0J1bmRsZVBhZ2UuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3MgU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0IDogcHVibGljIEluamVjdGVkQnVuZGxlVGVz
dCB7Ci1wdWJsaWM6Ci0gICAgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwotfTsKLQotc3Rh
dGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8U2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW1UZXN0PiByZWdpc3RyYXIoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCIp
OwotCi1zdGF0aWMgYm9vbCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIFdLVHlw
ZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQqKQotewotICAgIC8vIFRoZSBpdGVtIHNob3VsZCBi
ZSBpbiB0aGUgcGFnZSBjYWNoZQotICAgIGlmIChXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1J
c0luUGFnZUNhY2hlKGl0ZW0pKQotICAgICAgICAqdXNlckRhdGEgPSBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygic2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayBjYWxs
ZWQgYXMgZXhwZWN0ZWQiKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TaG91bGRHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbVRlc3Q6OlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdChj
b25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAgICA6IEluamVjdGVkQnVuZGxlVGVzdChp
ZGVudGlmaWVyKQotewotfQotCi12b2lkIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVz
dDo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdl
KQoteyAgICAKLSAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMSBwYWdlTG9hZGVyQ2xpZW50
OwotICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGll
bnQpKTsKLSAgICAKLSAgICBwYWdlTG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAg
cGFnZUxvYWRlckNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgIHBhZ2VMb2FkZXJD
bGllbnQuc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBzaG91bGRHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbUNhbGxiYWNrOwotICAgIAotICAgIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQocGFnZSwgJnBhZ2VMb2FkZXJDbGllbnQuYmFzZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyLm1tCShy
ZXZpc2lvbiAyMzUzNzIpCShmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jl
c3BvbnNpdmVuZXNzVGltZXIuY3BwOjIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tf
SEFWRV9DX1NQSQorCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVdlYlZpZXcuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMg
Ym9vbCBkaWRGaW5pc2hMb2FkIHsgZmFsc2UgfTsKK3N0YXRpYyBib29sIGRpZEJlY29tZVVucmVz
cG9uc2l2ZSB7IGZhbHNlIH07CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgZGlk
RmluaXNoTG9hZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEJlY29tZVVu
cmVzcG9uc2l2ZSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQo
V0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50
OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisK
KyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuZGlk
RmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgIGxvYWRlckNs
aWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJvY2Vzc0RpZEJlY29tZVVucmVz
cG9uc2l2ZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNs
aWVudC5iYXNlKTsKK30KKworVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJTaG91bGRO
b3RGaXJlQWZ0ZXJUZWFyRG93bikKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIC8vIFRoZSB0d28gdmlld3Mg
bmVlZCB0byBzaGFyZSB0aGUgc2FtZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgV0tDb250ZXh0
U2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKGNvbnRleHQuZ2V0KCksIDEpOworCisgICAgUGxh
dGZvcm1XZWJWaWV3IHdlYlZpZXcxKGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJD
bGllbnQod2ViVmlldzEucGFnZSgpKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldzEucGFn
ZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIp
KS5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKworICAgIEVYUEVDVF9G
QUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcyKGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldzIucGFn
ZSgpKTsKKworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdl
YlZpZXcyLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxl
IiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisKKyAg
ICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKKworICAgIC8vIENhbGwgc3Rv
cExvYWRpbmcoKSBhbmQgY2xvc2UoKSBvbiB0aGUgZmlyc3QgcGFnZSBpbiBxdWljayBzdWNjZXNz
aW9uLgorICAgIFdLUGFnZVN0b3BMb2FkaW5nKHdlYlZpZXcxLnBhZ2UoKSk7CisgICAgV0tQYWdl
Q2xvc2Uod2ViVmlldzEucGFnZSgpKTsKKworICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBoZXJlIGJl
Y2F1c2UgaXQgdGFrZXMgMyBzZWNvbmRzIGZvciBhIHByb2Nlc3MgdG8gYmUgcmVjb2duaXplZCBh
cyB1bnJlc3BvbnNpdmUuCisgICAgVXRpbDo6c2xlZXAoNCk7CisKKyAgICAvLyBXZSBzaG91bGQg
bm90IHJlcG9ydCB0aGUgc2Vjb25kIHBhZ2Ugc2hhcmluZyB0aGUgc2FtZSBwcm9jZXNzIGFzIHVu
cmVzcG9uc2l2ZS4KKyAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNwb25zaXZlKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3BvbnNp
dmVuZXNzVGltZXIubW0JKHJldmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzcG9uc2l2ZW5lc3NUaW1lci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNjQgKzI1LDY2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0hBVkVf
Q19TUEkKKyNpZiBXS19BUElfRU5BQkxFRAogCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlBsYXRmb3JtV2Vi
Vmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMg
Ym9vbCBkaWRGaW5pc2hMb2FkIHsgZmFsc2UgfTsKIHN0YXRpYyBib29sIGRpZEJlY29tZVVucmVz
cG9uc2l2ZSB7IGZhbHNlIH07CiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCitAaW50ZXJmYWNl
IFJlc3BvbnNpdmVuZXNzVGltZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxl
Z2F0ZT4KK0BlbmQKKyAgICAKK0BpbXBsZW1lbnRhdGlvbiBSZXNwb25zaXZlbmVzc1RpbWVyRGVs
ZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5h
dmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKICAgICBkaWRGaW5pc2hMb2Fk
ID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCopCistICh2b2lkKV93ZWJWaWV3V2ViUHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZTooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIGRpZEJlY29t
ZVVucmVzcG9uc2l2ZSA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGll
bnQoV0tQYWdlUmVmIHBhZ2UpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xp
ZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7
Ci0KLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBsb2FkZXJDbGllbnQu
ZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRl
ckNsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gcHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZTsKK0BlbmQKIAotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwg
JmxvYWRlckNsaWVudC5iYXNlKTsKLX0KK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVT
VChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJTaG91bGROb3RGaXJlQWZ0ZXJUZWFyRG93bikK
IHsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250
ZXh0Q3JlYXRlKCkpOwotICAgIC8vIFRoZSB0d28gdmlld3MgbmVlZCB0byBzaGFyZSB0aGUgc2Ft
ZSBXZWJDb250ZW50IHByb2Nlc3MuCi0gICAgV0tDb250ZXh0U2V0TWF4aW11bU51bWJlck9mUHJv
Y2Vzc2VzKGNvbnRleHQuZ2V0KCksIDEpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcx
KGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldzEucGFnZSgp
KTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldzEucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gbmV3XSk7CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOworICAgIFtwcm9jZXNzUG9vbCBfc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2Vz
OjFdOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtSZXNwb25zaXZlbmVzc1RpbWVyRGVs
ZWdhdGUgbmV3XSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29s
OnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldzEgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIEVYUEVDVF9G
QUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwogCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcyKGNvbnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldzIucGFn
ZSgpKTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldzIgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKIAogICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKLSAgICBXS1BhZ2VM
b2FkVVJMKHdlYlZpZXcyLnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJj
ZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwogCiAgICAgRVhQRUNUX0ZB
TFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7CiAKICAgICAvLyBDYWxsIHN0b3BMb2FkaW5nKCkg
YW5kIGNsb3NlKCkgb24gdGhlIGZpcnN0IHBhZ2UgaW4gcXVpY2sgc3VjY2Vzc2lvbi4KLSAgICBX
S1BhZ2VTdG9wTG9hZGluZyh3ZWJWaWV3MS5wYWdlKCkpOwotICAgIFdLUGFnZUNsb3NlKHdlYlZp
ZXcxLnBhZ2UoKSk7CisgICAgW3dlYlZpZXcxIHN0b3BMb2FkaW5nXTsKKyAgICBbd2ViVmlldzEg
X2Nsb3NlXTsKIAogICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBoZXJlIGJlY2F1c2UgaXQgdGFrZXMg
MyBzZWNvbmRzIGZvciBhIHByb2Nlc3MgdG8gYmUgcmVjb2duaXplZCBhcyB1bnJlc3BvbnNpdmUu
CiAgICAgVXRpbDo6c2xlZXAoNCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVz
c1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tCShyZXZpc2lvbiAyMzUzNzIpCShmcm9tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkuY3BwOjIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdL
X0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1XZWJWaWV3LmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGlj
IGJvb2wgZGlkRmluaXNoTG9hZDsKK3N0YXRpYyBib29sIGRpZEJlY29tZVVucmVzcG9uc2l2ZTsK
K3N0YXRpYyBib29sIGRpZEJyaWVmbHlQYXVzZTsKKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRCcmllZmx5UGF1c2UgPSB0
cnVlOworICAgIEVYUEVDVF9XS19TVFJFUSgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2FnZU5hbWUp
OworfQorCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEZpbmlzaExvYWQgPSB0
cnVlOworfQorCitzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdLUGFn
ZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0gdHJ1ZTsK
K30KKworc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHQpCit7CisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1
bmRsZUNsaWVudDsKKyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2Yo
aW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKKworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDA7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsK
KworICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3Rl
ZEJ1bmRsZUNsaWVudC5iYXNlKTsKK30KKworc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVu
dChXS1BhZ2VSZWYgcGFnZSkKK3sKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGll
bnQ7CisgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsK
KworICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5k
aWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CisgICAgbG9hZGVy
Q2xpZW50LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBwcm9jZXNzRGlkQmVjb21lVW5y
ZXNwb25zaXZlOworCisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVy
Q2xpZW50LmJhc2UpOworfQorCitURVNUKFdlYktpdCwgUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNu
dEZpcmVFYXJseSkKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBh
ZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlJlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlUZXN0IikpOworICAgIHNldEluamVjdGVkQnVuZGxl
Q2xpZW50KGNvbnRleHQuZ2V0KCkpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29u
dGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisK
KyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVS
TEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZk
aWRGaW5pc2hMb2FkKTsKKworICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRs
ZShjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKCJCcmllZmx5UGF1c2UiKS5nZXQoKSwgMCk7CisK
KyAgICAvLyBQcmVzc2luZyBhIGtleSBvbiB0aGUga2V5Ym9hcmQgc2hvdWxkIHN0YXJ0IHRoZSBy
ZXNwb25zaXZlbmVzcyB0aW1lci4gU2luY2UgdGhlIHdlYiBwcm9jZXNzCisgICAgLy8gaXMgZ29p
bmcgdG8gcGF1c2UgYmVmb3JlIGl0IHJlY2VpdmVzIHRoaXMga2V5cHJlc3MsIGl0IHNob3VsZCB0
YWtlIGEgbGl0dGxlIHdoaWxlIHRvIHJlc3BvbmQKKyAgICAvLyAoYnV0IG5vdCBzbyBsb25nIHRo
YXQgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyIGZpcmVzKS4KKyAgICB3ZWJWaWV3LnNpbXVsYXRl
U3BhY2ViYXJLZXlQcmVzcygpOworCisgICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2UpOwor
CisgICAgRVhQRUNUX0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbQkocmV2aXNpb24gMjM1MzcyKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNwb25zaXZlbmVzc1RpbWVy
RG9lc250RmlyZUVhcmx5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTIgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgV0tfSEFWRV9DX1NQSQorI2lmIFBMQVRGT1JNKE1B
QykgJiYgV0tfQVBJX0VOQUJMRUQKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KyNpbmNsdWRlICJUZXN0V0tXZWJWaWV3LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
CiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOwogc3RhdGljIGJvb2wgZGlkQmVjb21lVW5yZXNw
b25zaXZlOwpAQCAtNDIsMTYgKzQyLDYgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZQogICAgIEVYUEVDVF9XS19TVFJFUSgiRGlkQnJpZWZseVBhdXNlIiwgbWVzc2Fn
ZU5hbWUpOwogfQogCi1zdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExv
YWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZl
KFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopCi17Ci0gICAgZGlkQmVjb21lVW5yZXNwb25zaXZlID0g
dHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0
UmVmIGNvbnRleHQpCiB7CiAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmpl
Y3RlZEJ1bmRsZUNsaWVudDsKQEAgLTYzLDI3ICs1MywzNyBAQCBzdGF0aWMgdm9pZCBzZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChXS0NvCiAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoY29udGV4dCwgJmluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UpOwogfQogCi1zdGF0aWMgdm9p
ZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQotewotICAgIFdLUGFnZUxvYWRl
ckNsaWVudFYwIGxvYWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6
ZW9mKGxvYWRlckNsaWVudCkpOworQGludGVyZmFjZSBSZXNwb25zaXZlbmVzc0RlbGVnYXRlIDog
TlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
UmVzcG9uc2l2ZW5lc3NEZWxlZ2F0ZQogCi0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9
IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExv
YWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZSA9IHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU7CistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbgoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQogCi0gICAgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworLSAodm9pZClfd2ViVmll
d1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sK
KyAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSB0cnVlOwogfQogCitAZW5kCisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKwogVEVTVChXZWJLaXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHkpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0g
YWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJSZXNwb25z
aXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKICAgICBzZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChjb250ZXh0LmdldCgpKTsKIAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNv
bnRleHQuZ2V0KCkpOwotICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtSZXNwb25zaXZlbmVzc0RlbGVnYXRlIG5ld10p
OworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bv
b2wgKiljb250ZXh0LmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzZXROYXZp
Z2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJW
aWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwg
Imh0bWwiKSkuZ2V0KCkpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNp
bXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl1dXTsKICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwogCiAgICAgV0tD
b250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnRleHQuZ2V0KCksIFV0aWw6OnRv
V0soIkJyaWVmbHlQYXVzZSIpLmdldCgpLCAwKTsKQEAgLTkxLDcgKzkxLDcgQEAgVEVTVChXZWJL
aXQsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaQogICAgIC8vIFByZXNzaW5nIGEga2V5IG9u
IHRoZSBrZXlib2FyZCBzaG91bGQgc3RhcnQgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLiBTaW5j
ZSB0aGUgd2ViIHByb2Nlc3MKICAgICAvLyBpcyBnb2luZyB0byBwYXVzZSBiZWZvcmUgaXQgcmVj
ZWl2ZXMgdGhpcyBrZXlwcmVzcywgaXQgc2hvdWxkIHRha2UgYSBsaXR0bGUgd2hpbGUgdG8gcmVz
cG9uZAogICAgIC8vIChidXQgbm90IHNvIGxvbmcgdGhhdCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGlt
ZXIgZmlyZXMpLgotICAgIHdlYlZpZXcuc2ltdWxhdGVTcGFjZWJhcktleVByZXNzKCk7CisgICAg
W3dlYlZpZXcgdHlwZUNoYXJhY3RlcjonICddOwogCiAgICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5
UGF1c2UpOwogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
c3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRo
b3V0TmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjM1MzcyKQkoZnJvbSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3Bw
OjIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzdG9y
ZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFW
RV9DX1NQSQorCisjaW5jbHVkZSAiSmF2YVNjcmlwdFRlc3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRl
c3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktp
dC9XS1Nlc3Npb25TdGF0ZVJlZi5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0
YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9vbCBkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3Q7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgZGlkRmluaXNoTG9hZCA9
IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2Uo
V0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVm
LCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QgPSB0cnVlOwor
fQorCitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQorewor
ICAgIFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRl
ckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJh
c2UudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9
IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBsb2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Rm9yUGFnZTsKKworICAgIFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworc3Rh
dGljIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YShXS0NvbnRl
eHRSZWYgY29udGV4dCkKK3sKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsK
KyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKKworICAgIFdLUGFnZUxv
YWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2Uo
InNpbXBsZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQp
OworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKworICAgIGF1dG8gc2Vzc2lvblN0YXRlID0g
YWRvcHRXSyhzdGF0aWNfY2FzdDxXS1Nlc3Npb25TdGF0ZVJlZj4oV0tQYWdlQ29weVNlc3Npb25T
dGF0ZSh3ZWJWaWV3LnBhZ2UoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSksIG51bGxwdHIp
KSk7CisgICAgcmV0dXJuIGFkb3B0V0soV0tTZXNzaW9uU3RhdGVDb3B5RGF0YShzZXNzaW9uU3Rh
dGUuZ2V0KCkpKTsKK30KKworVEVTVChXZWJLaXQsIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0
TmF2aWdhdGlvbikKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRv
cHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7
CisKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGRhdGEgPSBjcmVhdGVTZXNzaW9uU3RhdGVE
YXRhKGNvbnRleHQuZ2V0KCkpOworICAgIEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKKworICAgIGF1
dG8gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhXS1Nlc3Npb25TdGF0ZUNyZWF0ZUZyb21EYXRhKGRh
dGEuZ2V0KCkpKTsKKyAgICBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uKHdlYlZpZXcucGFnZSgpLCBzZXNzaW9uU3RhdGUuZ2V0KCkpOworCisgICAgVXRpbDo6
cnVuKCZkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IGNvbW1pdHRlZFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUNvbW1pdHRlZFVSTCh3ZWJWaWV3
LnBhZ2UoKSkpOworICAgIEVYUEVDVF9OVUxMKGNvbW1pdHRlZFVSTC5nZXQoKSk7CisKKyAgICBh
dXRvIGJhY2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlzdCh3ZWJWaWV3LnBh
Z2UoKSk7CisgICAgYXV0byBjdXJyZW50SXRlbSA9IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVu
dEl0ZW0oYmFja0ZvcndhcmRMaXN0KTsKKyAgICBhdXRvIGN1cnJlbnRJdGVtVVJMID0gYWRvcHRX
SyhXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKGN1cnJlbnRJdGVtKSk7CisgICAgYXV0byBl
eHBlY3RlZFVSTCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIs
ICJodG1sIikpOworICAgIEVYUEVDVF9OT1RfTlVMTChleHBlY3RlZFVSTCk7CisgICAgRVhQRUNU
X1RSVUUoV0tVUkxJc0VxdWFsKGN1cnJlbnRJdGVtVVJMLmdldCgpLCBleHBlY3RlZFVSTC5nZXQo
KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRl
V2l0aG91dE5hdmlnYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0J
KHJldmlzaW9uIDIzNTM3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3NyArMjUsODAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgV0tfSEFW
RV9DX1NQSQorI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbmNsdWRlICJKYXZhU2NyaXB0VGVzdC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJW
aWV3LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tCYWNrRm9yd2FyZExpc3RSZWYuaD4K
KyNpbmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZh
dGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTZXNzaW9uU3RhdGVSZWYuaD4KLQotbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworI2luY2x1ZGUgPFdlYktpdC9XS1VSTC5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS1VSTENGLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3ICgpCistIChX
S1BhZ2VSZWYpX3BhZ2VGb3JUZXN0aW5nOworQGVuZAogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hM
b2FkOwogc3RhdGljIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OworICAgIAorQGludGVy
ZmFjZSBTZXNzaW9uU3RhdGVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNlc3Npb25TdGF0ZURlbGVnYXRlCiAKLXN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgogewogICAgIGRp
ZEZpbmlzaExvYWQgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3RGb3JQYWdlKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRl
bSwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCopCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZDooV0tCYWNrRm9yd2FyZExpc3RJdGVt
ICopaXRlbUFkZGVkIHJlbW92ZWQ6KE5TQXJyYXk8V0tCYWNrRm9yd2FyZExpc3RJdGVtICo+ICop
aXRlbXNSZW1vdmVkCiB7CiAgICAgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZTsKIH0K
IAotc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKLXsKLSAg
ICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkZXJD
bGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLQotICAgIGxvYWRlckNsaWVudC5iYXNl
LnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBk
aWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdEZvclBhZ2U7CitAZW5kCiAKLSAgICBX
S1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Ci19Citu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBXS1JldGFpblB0cjxXS0RhdGFSZWY+
IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQpCitzdGF0aWMgV0tS
ZXRhaW5QdHI8V0tEYXRhUmVmPiBjcmVhdGVTZXNzaW9uU3RhdGVEYXRhKCkKIHsKLSAgICBQbGF0
Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0KTsKLSAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdl
YlZpZXcucGFnZSgpKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0
V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpLmdldCgpKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbU2Vzc2lvblN0YXRlRGVsZWdhdGUgbmV3XSk7
CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt2aWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3ZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNo
TG9hZCk7CiAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwogCi0gICAgYXV0byBzZXNzaW9uU3Rh
dGUgPSBhZG9wdFdLKHN0YXRpY19jYXN0PFdLU2Vzc2lvblN0YXRlUmVmPihXS1BhZ2VDb3B5U2Vz
c2lvblN0YXRlKHdlYlZpZXcucGFnZSgpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigxKSwgbnVs
bHB0cikpKTsKLSAgICByZXR1cm4gYWRvcHRXSyhXS1Nlc3Npb25TdGF0ZUNvcHlEYXRhKHNlc3Np
b25TdGF0ZS5nZXQoKSkpOworICAgIE5TRGF0YSAqZGF0YSA9IFt2aWV3IF9zZXNzaW9uU3RhdGVE
YXRhXTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0RhdGFDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCkpOwogfQogCiBURVNUKFdl
YktpdCwgUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKQogewotICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7
Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKLQotICAgIFdLUmV0YWluUHRyPFdLRGF0
YVJlZj4gZGF0YSA9IGNyZWF0ZVNlc3Npb25TdGF0ZURhdGEoY29udGV4dC5nZXQoKSk7CisgICAg
YXV0byBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlRGF0YSgpOwogICAgIEVYUEVDVF9OT1RfTlVM
TChkYXRhKTsKIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsK
ICAgICBhdXRvIHNlc3Npb25TdGF0ZSA9IGFkb3B0V0soV0tTZXNzaW9uU3RhdGVDcmVhdGVGcm9t
RGF0YShkYXRhLmdldCgpKSk7Ci0gICAgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGVXaXRo
b3V0TmF2aWdhdGlvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvblN0YXRlLmdldCgpKTsKKyAgICBX
S1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKFt3ZWJWaWV3IF9w
YWdlRm9yVGVzdGluZ10sIHNlc3Npb25TdGF0ZS5nZXQoKSk7CiAKICAgICBVdGlsOjpydW4oJmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gY29t
bWl0dGVkVVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5Q29tbWl0dGVkVVJMKHdlYlZpZXcucGFnZSgp
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNvbW1pdHRlZFVSTCA9IGFkb3B0V0soV0tQ
YWdlQ29weUNvbW1pdHRlZFVSTChbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddKSk7CiAgICAgRVhQ
RUNUX05VTEwoY29tbWl0dGVkVVJMLmdldCgpKTsKIAotICAgIGF1dG8gYmFja0ZvcndhcmRMaXN0
ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGJh
Y2tGb3J3YXJkTGlzdCA9IFdLUGFnZUdldEJhY2tGb3J3YXJkTGlzdChbd2ViVmlldyBfcGFnZUZv
clRlc3RpbmddKTsKICAgICBhdXRvIGN1cnJlbnRJdGVtID0gV0tCYWNrRm9yd2FyZExpc3RHZXRD
dXJyZW50SXRlbShiYWNrRm9yd2FyZExpc3QpOwogICAgIGF1dG8gY3VycmVudEl0ZW1VUkwgPSBh
ZG9wdFdLKFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoY3VycmVudEl0ZW0pKTsKLSAgICBh
dXRvIGV4cGVjdGVkVVJMID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2lt
cGxlIiwgImh0bWwiKSk7CisgICAgCisgICAgYXV0byBleHBlY3RlZFVSTCA9IGFkb3B0V0soV0tV
UkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKVtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdKSk7CiAgICAgRVhQRUNUX05PVF9OVUxMKGV4cGVjdGVk
VVJMKTsKICAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoY3VycmVudEl0ZW1VUkwuZ2V0KCks
IGV4cGVjdGVkVVJMLmdldCgpKSk7CiB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIzNTM3MikJKGZyb20gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOjIzNTM3
MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3Lmgi
CisjaW5jbHVkZSAiVGVzdC5oIgorCisjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsK
K3N0YXRpYyBib29sIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3MgPSBmYWxzZTsK
Kworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICAvLyBPbmx5IG1hcmsgZmlu
aXNoZWQgd2hlbiB0aGUgbWFpbiBmcmFtZSBsb2FkcworICAgIGlmICghV0tGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmluaXNoZWQgPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdlUmVmLCBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopCit7
CisgICAgaWYgKFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKSB7
CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKChXS1N0cmluZ1JlZil1
c2VyRGF0YSwgInNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sgY2FsbGVkIGFz
IGV4cGVjdGVkIikpCisgICAgICAgICAgICByZWNlaXZlZFByb3BlckJhY2tGb3J3YXJkQ2FsbGJh
Y2tzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBmaW5pc2hlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2
b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9h
ZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBz
aXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0g
MTsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9h
ZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0g
PSB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVy
Q2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBTaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRs
ZVRlc3QoIlNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCIpKTsKKyAgICAvLyBFbmFi
bGUgdGhlIHBhZ2UgY2FjaGUgc28gd2UgY2FuIHRlc3QgdGhlIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbUlzSW5QYWdlQ2FjaGUgQVBJCisgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChjb250
ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsKKworICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQo
d2ViVmlldy5wYWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRv
cHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkp
OworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIAorICAgIGZpbmlzaGVkID0gZmFsc2U7
CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVV
UkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBVdGls
OjpydW4oJmZpbmlzaGVkKTsKKworICAgIGZpbmlzaGVkID0gZmFsc2U7CisgICAgV0tQYWdlR29C
YWNrKHdlYlZpZXcucGFnZSgpKTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICAKKyAg
ICBFWFBFQ1RfRVEocmVjZWl2ZWRQcm9wZXJCYWNrRm9yd2FyZENhbGxiYWNrcywgdHJ1ZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDIzNTM3MikKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcxICsyNSw1MSBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCisjaWYgV0tfQVBJX0VOQUJMRUQK
IAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJW
aWV3LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgotCiAjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKIHN0YXRpYyBib29sIGZpbmlzaGVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCByZWNlaXZlZFBy
b3BlckJhY2tGb3J3YXJkQ2FsbGJhY2tzID0gZmFsc2U7CiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCopCi17Ci0gICAgLy8gT25seSBtYXJrIGZpbmlzaGVkIHdoZW4gdGhlIG1haW4gZnJh
bWUgbG9hZHMKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJl
dHVybjsKK0BpbnRlcmZhY2UgQmFja0ZvcndhcmRDbGllbnQgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CitAZW5kCiAKLSAgICBmaW5pc2hlZCA9IHRydWU7Ci19CitAaW1wbGVtZW50
YXRpb24gQmFja0ZvcndhcmRDbGllbnQKIAotc3RhdGljIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS1R5cGVSZWYg
dXNlckRhdGEsIGNvbnN0IHZvaWQqKQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKLSAg
ICBpZiAoV0tHZXRUeXBlSUQodXNlckRhdGEpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAg
ICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoKFdLU3RyaW5nUmVmKXVzZXJE
YXRhLCAic2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayBjYWxsZWQgYXMgZXhw
ZWN0ZWQiKSkKLSAgICAgICAgICAgIHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRDYWxsYmFja3Mg
PSB0cnVlOwotICAgIH0KLQogICAgIGZpbmlzaGVkID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQg
c2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKKy0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3
YXJkTGlzdEl0ZW0gKilpdGVtIGluUGFnZUNhY2hlOihCT09MKWluUGFnZUNhY2hlCiB7Ci0gICAg
V0tQYWdlTG9hZGVyQ2xpZW50VjEgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xp
ZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisgICAgZmluaXNoZWQgPSB0cnVlOworfQog
Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgbG9hZGVyQ2xpZW50LmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJD
bGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gd2lsbEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtOworQGVuZAogCi0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9h
ZGVyQ2xpZW50LmJhc2UpOwotfQorbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdl
YktpdCwgU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCiB7Ci0gICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QiKSk7Ci0g
ICAgLy8gRW5hYmxlIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbiB0ZXN0IHRoZSBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW1Jc0luUGFnZUNhY2hlIEFQSQotICAgIFdLQ29udGV4dFNldENhY2hl
TW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7Ci0KLSAg
ICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlTG9h
ZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
QmFja0ZvcndhcmRDbGllbnQgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tX
ZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAKLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0
aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0
aWw6OnJ1bigmZmluaXNoZWQpOwogICAgIAogICAgIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgV0tQ
YWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNv
dXJjZSgic2ltcGxlLWlmcmFtZSIsICJodG1sIikpLmdldCgpKTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUtaWZyYW1lIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1
bigmZmluaXNoZWQpOwogCiAgICAgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBXS1BhZ2VHb0JhY2so
d2ViVmlldy5wYWdlKCkpOworICAgIFt3ZWJWaWV3IGdvQmFja107CiAgICAgVXRpbDo6cnVuKCZm
aW5pc2hlZCk7Ci0gICAgCi0gICAgRVhQRUNUX0VRKHJlY2VpdmVkUHJvcGVyQmFja0ZvcndhcmRD
YWxsYmFja3MsIHRydWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
</data>

          </attachment>
      

    </bug>

</bugzilla>