<?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>65729</bug_id>
          
          <creation_ts>2011-08-04 15:45:59 -0700</creation_ts>
          <short_desc>Remove PluginHalter</short_desc>
          <delta_ts>2011-08-05 11:44:53 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>446853</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-04 15:45:59 -0700</bug_when>
    <thetext>Remove PluginHalter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446860</commentid>
    <comment_count>1</comment_count>
      <attachid>102997</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-04 15:49:38 -0700</bug_when>
    <thetext>Created attachment 102997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446869</commentid>
    <comment_count>2</comment_count>
      <attachid>102997</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-04 16:05:02 -0700</bug_when>
    <thetext>Comment on attachment 102997
Patch

Attachment 102997 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9300832</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446871</commentid>
    <comment_count>3</comment_count>
      <attachid>102997</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-04 16:06:23 -0700</bug_when>
    <thetext>Comment on attachment 102997
Patch

Attachment 102997 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9305604</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446872</commentid>
    <comment_count>4</comment_count>
      <attachid>102997</attachid>
    <who name="">mitz</who>
    <bug_when>2011-08-04 16:07:17 -0700</bug_when>
    <thetext>Comment on attachment 102997
Patch

Good idea!
r- due to EWS failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446874</commentid>
    <comment_count>5</comment_count>
      <attachid>102999</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-04 16:14:31 -0700</bug_when>
    <thetext>Created attachment 102999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446882</commentid>
    <comment_count>6</comment_count>
      <attachid>102999</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-04 16:21:44 -0700</bug_when>
    <thetext>Comment on attachment 102999
Patch

Attachment 102999 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9302679</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447251</commentid>
    <comment_count>7</comment_count>
      <attachid>103082</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-05 09:52:56 -0700</bug_when>
    <thetext>Created attachment 103082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447259</commentid>
    <comment_count>8</comment_count>
      <attachid>103082</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-08-05 10:06:01 -0700</bug_when>
    <thetext>Comment on attachment 103082
Patch

Attachment 103082 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9303912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447271</commentid>
    <comment_count>9</comment_count>
      <attachid>103084</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-05 10:26:17 -0700</bug_when>
    <thetext>Created attachment 103084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447275</commentid>
    <comment_count>10</comment_count>
      <attachid>103084</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-08-05 10:41:09 -0700</bug_when>
    <thetext>Comment on attachment 103084
Patch

Attachment 103084 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9323013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447279</commentid>
    <comment_count>11</comment_count>
      <attachid>103084</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-05 10:45:59 -0700</bug_when>
    <thetext>Comment on attachment 103084
Patch

Looks like GTK and Windows builds both fail. Otherwise, this seems like a good change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447283</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-05 10:52:28 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 103084 [details])
&gt; Looks like GTK and Windows builds both fail. Otherwise, this seems like a good change.

Yeah, trying to fix the builds blindly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447286</commentid>
    <comment_count>13</comment_count>
      <attachid>103085</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-05 10:56:02 -0700</bug_when>
    <thetext>Created attachment 103085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447300</commentid>
    <comment_count>14</comment_count>
      <attachid>103088</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-05 11:21:04 -0700</bug_when>
    <thetext>Created attachment 103088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447315</commentid>
    <comment_count>15</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-05 11:44:53 -0700</bug_when>
    <thetext>Committed r92492: &lt;http://trac.webkit.org/changeset/92492&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102997</attachid>
            <date>2011-08-04 15:49:38 -0700</date>
            <delta_ts>2011-08-04 16:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65729-20110804154936.patch</filename>
            <type>text/plain</type>
            <size>76470</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDIyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFs
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0hhbHRh
YmxlUGx1Z2luLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAq
IHBhZ2UvUGx1Z2luSGFsdGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1BsdWdpbkhh
bHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAg
KiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdOb25l
LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaDoKKwogMjAxMS0wOC0wNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyNDE5LgpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNiBAQCBfX1pON1dl
YkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxMlByaW50Q29u
dGV4dEQxRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJL
TlNfN0ludFJlY3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRp
bmdCb3hSZWN0RWIKLV9fWk43V2ViQ29yZTEyUmVuZGVyV2lkZ2V0MTlzaG93U3Vic3RpdHV0ZUlt
YWdlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVJbWFnZUVFRQogX19aTjdXZWJDb3JlMTJSZW5kZXJX
aWRnZXQyOHJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXNFdgogX19aTjdXZWJDb3JlMTJSZW5k
ZXJXaWRnZXQyOXN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEy
U2hhcmVkQnVmZmVyMTB3cmFwTlNEYXRhRVA2TlNEYXRhCkBAIC02OTgsOCArNjk3LDYgQEAgX19a
TjdXZWJDb3JlNFBhZ2UxMGZpbmRTdHJpbmdFUktOM1dURjZTdAogX19aTjdXZWJDb3JlNFBhZ2Ux
MVBhZ2VDbGllbnRzQzFFdgogX19aTjdXZWJDb3JlNFBhZ2UxMVBhZ2VDbGllbnRzRDFFdgogX19a
TjdXZWJDb3JlNFBhZ2UxMnNldEdyb3VwTmFtZUVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29y
ZTRQYWdlMTNkaWRTdG9wUGx1Z2luRVBOU18xNEhhbHRhYmxlUGx1Z2luRQotX19aTjdXZWJDb3Jl
NFBhZ2UxNGRpZFN0YXJ0UGx1Z2luRVBOU18xNEhhbHRhYmxlUGx1Z2luRQogX19aTjdXZWJDb3Jl
NFBhZ2UxNHNldE1lZGlhVm9sdW1lRWYKIF9fWk43V2ViQ29yZTRQYWdlMTVhZGRTY2hlZHVsZVBh
aXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUKIF9fWk43V2ViQ29yZTRQ
YWdlMTVkaWRNb3ZlT25zY3JlZW5FdgpAQCAtODk4LDcgKzg5NSw2IEBAIF9fWk43V2ViQ29yZThT
ZXR0aW5nczIzc2V0RWRpdGFibGVMaW5rQmUKIF9fWk43V2ViQ29yZThTZXR0aW5nczIzc2V0TG9h
ZERlZmVycmluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXROZWVkc1RpZ2Vy
TWFpbFF1aXJrc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldFBpY3RvZ3JhcGhGb250RmFt
aWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCi1fX1pON1dlYkNvcmU4U2V0
dGluZ3MyM3NldFBsdWdpbkFsbG93ZWRSdW5UaW1lRWoKIF9fWk43V2ViQ29yZThTZXR0aW5nczIz
c2V0VXNlc0VuY29kaW5nRGV0ZWN0b3JFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRBcHBs
aWNhdGlvbkNocm9tZU1vZGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRETlNQcmVmZXRj
aGluZ0VuYWJsZWRFYgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MjYs
MTAgKzE3MjYsNiBAQAogCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaCAqLzsgfTsKIAkJNzY3Rjk5QkUxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZS5jcHAgKi87IH07CiAJCTc2N0Y5OUMwMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmggKi87IH07Ci0JCTc2OTNCQUQyMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBs
dWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5
M0JBQ0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzY5M0JBRDMxMDZDMkRDQTAwN0Iw
ODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNw
cCAqLzsgfTsKLQkJNzY5M0JBRDQxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBRDAxMDZD
MkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovOyB9OwotCQk3NjkzQkFENTEwNkMyRENB
MDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2lu
SGFsdGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzY5NDU2M0MxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTQ1NjNBMTIx
NEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgKi87IH07CiAJCTc2OTQ1NjNEMTIx
NEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5NDU2M0IxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9N
VG9rZW5MaXN0LmggKi87IH07CiAJCTc2OTQ1NjVCMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01U
b2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc2OTQ1NjU5MTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QuaCAqLzsgfTsKQEAg
LTgzNTUsMTAgKzgzNTEsNiBAQAogCQk3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2N0Y5OUJGMTFB
MTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFs
dGFibGVQbHVnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFsdGFibGVQ
bHVnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzY5M0JBQ0YxMDZDMkRDQTAw
N0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQbHVnaW5IYWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3NjkzQkFEMTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njk0NTYzQTEyMTREOTdDMDAwN0NCQUUgLyog
SlNET01Ub2tlbkxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNET01Ub2tlbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njk0NTYz
QjEyMTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tlbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNET01Ub2tlbkxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzY5NDU2NTkxMjE0REI2MzAwMDdDQkFFIC8qIERPTURPTVRva2VuTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01ET01Ub2tlbkxpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTk2LDcgKzE0NTg4LDYgQEAKIAkJCQlGRTgwRDdCQzBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaWRsICovLAogCQkJCUM1MEI1NjE0MTIxMTlE
MjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLywKIAkJCQlDNTBCNTYxNTEyMTE5RDIz
MDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovLAotCQkJCTc2OTNCQUNFMTA2QzJEQ0EwMDdC
MDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovLAogCQkJCUJDOTREMTUwMEMyNzVDOEIwMDZCQzYx
NyAvKiBIaXN0b3J5LmNwcCAqLywKIAkJCQlCQzk0RDE1MTBDMjc1QzhCMDA2QkM2MTcgLyogSGlz
dG9yeS5oICovLAogCQkJCUJDOTREMTUyMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmlkbCAq
LywKQEAgLTE0NjQ2LDkgKzE0NjM3LDYgQEAKIAkJCQk4QUY0RTU1ODExREM1QTYzMDAwRUQzREUg
LyogUGVyZm9ybWFuY2VUaW1pbmcuY3BwICovLAogCQkJCThBRjRFNTU5MTFEQzVBNjMwMDBFRDNE
RSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovLAogCQkJCThBRjRFNTVBMTFEQzVBNjMwMDBFRDNE
RSAvKiBQZXJmb3JtYW5jZVRpbWluZy5pZGwgKi8sCi0JCQkJNzY5M0JBQ0YxMDZDMkRDQTAwN0Iw
ODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi8sCi0JCQkJNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIz
IC8qIFBsdWdpbkhhbHRlci5oICovLAotCQkJCTc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAvKiBQ
bHVnaW5IYWx0ZXJDbGllbnQuaCAqLywKIAkJCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25DYWxsYmFjay5oICovLAogCQkJCTU5M0FCNjk3MTM1NUNEOTIwMEZDODIxMSAvKiBQ
b3NpdGlvbkNhbGxiYWNrLmlkbCAqLywKIAkJCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25FcnJvci5oICovLApAQCAtMjE0ODcsNyArMjE0NzUsNiBAQAogCQkJCUIyQTAxNUFC
MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
N0ExN0E3QjEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NUeXBlczNELmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2lu
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0MDBCRkIwMDUgLyogSGFzaENo
YW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODc0OEJFMDEyQ0JGMkRDMDAxRkJBNDEg
LyogSGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDMDEyNTFGMTJEMDAzRUYy
NjkgLyogSGlkZGVuSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDc5LDggKzIyNDY2
LDYgQEAKIAkJCQk5MzVDNDc2QjA5QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2RTRGNDBENzQ1RTQ4MDA2NDQyRTkgLyogUGx1Z2lu
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQkMxMjM5MjkyNzAwQjE3MzgwIC8qIFBs
dWdpbkRvY3VtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3NjkzQkFENDEwNkMyRENBMDA3QjA4
MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk3NjkzQkFENTEwNkMyRENB
MDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQURB
MTQxMTBFMUFFNUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8qIFBsdWdpblN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2lu
Vmlld0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0NTUsNyArMjU0NDAsNiBAQAogCQkJCTFB
RDhGODFDMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTlDNkU0RjMwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTcyMDVBQkIxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTc2OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQ
bHVnaW5IYWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEQTE0MTAwRTFBRTVEOTAwMDIz
RUU1IC8qIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NzZGRjE3RTMxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdOb25lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQjFGNzE2MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVs
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIlBsdWdpbkhhbHRlckNsaWVudC5oIgog
I2luY2x1ZGUgIlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGFsdGFi
bGVQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0hhbHRhYmxlUGx1
Z2luLmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IYWx0YWJsZVBs
dWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBIYWx0YWJsZVBsdWdpbl9oCi0j
ZGVmaW5lIEhhbHRhYmxlUGx1Z2luX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBO
b2RlOwotCi1jbGFzcyBIYWx0YWJsZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SGFs
dGFibGVQbHVnaW4oKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBoYWx0KCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCByZXN0YXJ0KCkgPSAwOwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIFN0cmluZyBwbHVnaW5OYW1lKCkgY29uc3QgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gSGFsdGFibGVQbHVnaW5faApJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3Rp
Zmllci5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIK
LSNpbmNsdWRlICJQbHVnaW5IYWx0ZXIuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5j
bHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKQEAg
LTE3NiwxMSArMTc1LDYgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAg
ICAgQVNTRVJUKCFhbGxQYWdlcy0+Y29udGFpbnModGhpcykpOwogICAgIGFsbFBhZ2VzLT5hZGQo
dGhpcyk7CiAKLSAgICBpZiAocGFnZUNsaWVudHMucGx1Z2luSGFsdGVyQ2xpZW50KSB7Ci0gICAg
ICAgIG1fcGx1Z2luSGFsdGVyID0gYWRvcHRQdHIobmV3IFBsdWdpbkhhbHRlcihwYWdlQ2xpZW50
cy5wbHVnaW5IYWx0ZXJDbGllbnQucmVsZWFzZSgpKSk7Ci0gICAgICAgIG1fcGx1Z2luSGFsdGVy
LT5zZXRQbHVnaW5BbGxvd2VkUnVuVGltZShtX3NldHRpbmdzLT5wbHVnaW5BbGxvd2VkUnVuVGlt
ZSgpKTsKLSAgICB9Ci0KICNpZm5kZWYgTkRFQlVHCiAgICAgcGFnZUNvdW50ZXIuaW5jcmVtZW50
KCk7CiAjZW5kaWYKQEAgLTg4NiwyNCArODgwLDYgQEAgdm9pZCBQYWdlOjpwcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICBwbHVnaW5WaWV3QmFzZXNbaV0tPnByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAotdm9pZCBQYWdl
OjpwbHVnaW5BbGxvd2VkUnVuVGltZUNoYW5nZWQoKQotewotICAgIGlmIChtX3BsdWdpbkhhbHRl
cikKLSAgICAgICAgbV9wbHVnaW5IYWx0ZXItPnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKG1fc2V0
dGluZ3MtPnBsdWdpbkFsbG93ZWRSdW5UaW1lKCkpOwotfQotCi12b2lkIFBhZ2U6OmRpZFN0YXJ0
UGx1Z2luKEhhbHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgaWYgKG1fcGx1Z2luSGFsdGVyKQot
ICAgICAgICBtX3BsdWdpbkhhbHRlci0+ZGlkU3RhcnRQbHVnaW4ob2JqKTsKLX0KLQotdm9pZCBQ
YWdlOjpkaWRTdG9wUGx1Z2luKEhhbHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgaWYgKG1fcGx1
Z2luSGFsdGVyKQotICAgICAgICBtX3BsdWdpbkhhbHRlci0+ZGlkU3RvcFBsdWdpbihvYmopOwot
fQotCiB2b2lkIFBhZ2U6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFTZXQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNzQsOCArNzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgTm9kZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKLSAg
ICBjbGFzcyBQbHVnaW5IYWx0ZXI7Ci0gICAgY2xhc3MgUGx1Z2luSGFsdGVyQ2xpZW50OwogICAg
IGNsYXNzIFByb2dyZXNzVHJhY2tlcjsKICAgICBjbGFzcyBSZW5kZXJUaGVtZTsKICAgICBjbGFz
cyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAtMTEzLDcgKzExMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIEVkaXRvckNsaWVudCogZWRpdG9yQ2xpZW50OwogICAgICAgICAgICAg
RHJhZ0NsaWVudCogZHJhZ0NsaWVudDsKICAgICAgICAgICAgIEluc3BlY3RvckNsaWVudCogaW5z
cGVjdG9yQ2xpZW50OwotICAgICAgICAgICAgT3duUHRyPFBsdWdpbkhhbHRlckNsaWVudD4gcGx1
Z2luSGFsdGVyQ2xpZW50OwogICAgICAgICAgICAgR2VvbG9jYXRpb25DbGllbnQqIGdlb2xvY2F0
aW9uQ2xpZW50OwogICAgICAgICAgICAgRGV2aWNlTW90aW9uQ2xpZW50KiBkZXZpY2VNb3Rpb25D
bGllbnQ7CiAgICAgICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50
YXRpb25DbGllbnQ7CkBAIC0yNTMsMTAgKzI1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogICAgICAgICB2b2lkIHBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgICAgIHZvaWQgZGlkU3RhcnRQbHVn
aW4oSGFsdGFibGVQbHVnaW4qKTsKLSAgICAgICAgdm9pZCBkaWRTdG9wUGx1Z2luKEhhbHRhYmxl
UGx1Z2luKik7Ci0gICAgICAgIHZvaWQgcGx1Z2luQWxsb3dlZFJ1blRpbWVDaGFuZ2VkKCk7Ci0K
ICAgICAgICAgc3RhdGljIHZvaWQgc2V0RGVidWdnZXJGb3JBbGxQYWdlcyhKU0M6OkRlYnVnZ2Vy
Kik7CiAgICAgICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOwogICAgICAgICBK
U0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KQEAg
LTM5Myw4ICszODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX2Nh
blN0YXJ0TWVkaWE7CiAKLSAgICAgICAgT3duUHRyPFBsdWdpbkhhbHRlcj4gbV9wbHVnaW5IYWx0
ZXI7Ci0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BsdWdpbkhhbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnaW5IYWx0ZXIuY3BwCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGx1Z2luSGFsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUGx1Z2luSGFsdGVyLmgiCi0KLSNpbmNsdWRlICJIYWx0YWJsZVBsdWdp
bi5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGx1
Z2luSGFsdGVyOjpQbHVnaW5IYWx0ZXIoUGFzc093blB0cjxQbHVnaW5IYWx0ZXJDbGllbnQ+IGNs
aWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fdGltZXIodGhpcywgJlBsdWdp
bkhhbHRlcjo6dGltZXJGaXJlZCkKLSAgICAsIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUobnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLXsKLSAgICBBU1NFUlRfQVJHKG1fY2xpZW50LCBt
X2NsaWVudCk7Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVyOjpkaWRTdGFydFBsdWdpbihIYWx0YWJs
ZVBsdWdpbiogb2JqKQotewotICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwotICAgIEFTU0VSVF9B
Ukcob2JqLCAhbV9wbHVnaW5zLmNvbnRhaW5zKG9iaikpOwotCi0gICAgaWYgKCFtX2NsaWVudC0+
ZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBX
VEY6OmN1cnJlbnRUaW1lKCk7Ci0KLSAgICBtX3BsdWdpbnMuYWRkKG9iaiwgY3VycmVudFRpbWUp
OwotCi0gICAgaWYgKG1fcGx1Z2lucy5zaXplKCkgPT0gMSkKLSAgICAgICAgbV9vbGRlc3RTdGFy
dFRpbWUgPSBjdXJyZW50VGltZTsKLQotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOwotfQot
Ci12b2lkIFBsdWdpbkhhbHRlcjo6ZGlkU3RvcFBsdWdpbihIYWx0YWJsZVBsdWdpbiogb2JqKQot
ewotICAgIGlmICghbV9jbGllbnQtPmVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9wbHVnaW5zLnJlbW92ZShvYmopOwotfQotCi12b2lkIFBsdWdpbkhhbHRlcjo6dGltZXJGaXJl
ZChUaW1lcjxQbHVnaW5IYWx0ZXI+KikKLXsKLSAgICBpZiAobV9wbHVnaW5zLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPEhhbHRhYmxlUGx1Z2luKj4gcGx1Z2luczsK
LSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fcGx1Z2lucywgcGx1Z2lucyk7Ci0KLSAgICAvLyBQbHVn
LWlucyBvbGRlciB0aGFuIHRoaXMgYXJlIGNhbmRpZGF0ZXMgdG8gYmUgaGFsdGVkLgotICAgIGRv
dWJsZSBwbHVnaW5DdXRPZmZUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpIC0gbV9wbHVnaW5BbGxv
d2VkUnVuVGltZTsKLQotICAgIG1fb2xkZXN0U3RhcnRUaW1lID0gbnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgZG91YmxlIHRoaXNTdGFydFRpbWUgPSBtX3BsdWdpbnMuZ2V0KHBs
dWdpbnNbaV0pOwotICAgICAgICBpZiAodGhpc1N0YXJ0VGltZSA+IHBsdWdpbkN1dE9mZlRpbWUp
IHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGx1Zy1pbiBpcyB0b28geW91bmcgdG8gYmUgaGFsdGVk
LiBXZSBmaW5kIHRoZSBvbGRlc3QKLSAgICAgICAgICAgIC8vIHBsdWctaW4gdGhhdCBpcyBub3Qg
b2xkIGVub3VnaCB0byBiZSBoYWx0ZWQgYW5kIHVzZSBpdCB0byBzZXQKLSAgICAgICAgICAgIC8v
IHRoZSB0aW1lcidzIG5leHQgZmlyZSB0aW1lLgotICAgICAgICAgICAgaWYgKHRoaXNTdGFydFRp
bWUgPCBtX29sZGVzdFN0YXJ0VGltZSkKLSAgICAgICAgICAgICAgICBtX29sZGVzdFN0YXJ0VGlt
ZSA9IHRoaXNTdGFydFRpbWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChtX2NsaWVudC0+c2hvdWxkSGFsdFBsdWdpbihwbHVnaW5zW2ldLT5ub2RlKCks
IHBsdWdpbnNbaV0tPmlzV2luZG93ZWQoKSwgcGx1Z2luc1tpXS0+cGx1Z2luTmFtZSgpKSkKLSAg
ICAgICAgICAgIHBsdWdpbnNbaV0tPmhhbHQoKTsKLQotICAgICAgICBtX3BsdWdpbnMucmVtb3Zl
KHBsdWdpbnNbaV0pOwotICAgIH0KLQotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOwotfQot
Ci12b2lkIFBsdWdpbkhhbHRlcjo6c3RhcnRUaW1lcklmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAo
bV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wbHVnaW5z
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIG5leHRGaXJlSW50ZXJ2
YWwgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUpIC0gKGN1cnJl
bnRUaW1lKCkgLSBtX29sZGVzdFN0YXJ0VGltZSk7Ci0gICAgbV90aW1lci5zdGFydE9uZVNob3Qo
bmV4dEZpcmVJbnRlcnZhbCA8IDAgPyAwIDogbmV4dEZpcmVJbnRlcnZhbCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuaAkocmV2
aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBQbHVnaW5IYWx0ZXJfaAotI2RlZmluZSBQbHVnaW5I
YWx0ZXJfaAotCi0jaW5jbHVkZSAiUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVGlt
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIYWx0YWJsZVBsdWdpbjsKLQotY2xhc3Mg
UGx1Z2luSGFsdGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5IYWx0ZXIpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQbHVnaW5IYWx0ZXIoUGFzc093
blB0cjxQbHVnaW5IYWx0ZXJDbGllbnQ+KTsKLQotICAgIHZvaWQgZGlkU3RhcnRQbHVnaW4oSGFs
dGFibGVQbHVnaW4qKTsKLSAgICB2b2lkIGRpZFN0b3BQbHVnaW4oSGFsdGFibGVQbHVnaW4qKTsK
LQotICAgIHZvaWQgc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUodW5zaWduZWQgcnVuVGltZSkgeyBt
X3BsdWdpbkFsbG93ZWRSdW5UaW1lID0gcnVuVGltZTsgfQotCi1wcml2YXRlOgotICAgIHZvaWQg
dGltZXJGaXJlZChUaW1lcjxQbHVnaW5IYWx0ZXI+Kik7Ci0gICAgdm9pZCBzdGFydFRpbWVySWZO
ZWNlc3NhcnkoKTsKLQotICAgIE93blB0cjxQbHVnaW5IYWx0ZXJDbGllbnQ+IG1fY2xpZW50Owot
ICAgIFRpbWVyPFBsdWdpbkhhbHRlcj4gbV90aW1lcjsKLSAgICB1bnNpZ25lZCBtX3BsdWdpbkFs
bG93ZWRSdW5UaW1lOwotICAgIGRvdWJsZSBtX29sZGVzdFN0YXJ0VGltZTsKLSAgICBIYXNoTWFw
PEhhbHRhYmxlUGx1Z2luKiwgZG91YmxlPiBtX3BsdWdpbnM7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQbHVnaW5IYWx0ZXJfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QbHVnaW5IYWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BsdWdpbkhhbHRlckNsaWVudC5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWZuZGVmIFBsdWdpbkhhbHRlckNsaWVudF9oCi0jZGVmaW5lIFBsdWdpbkhhbHRlckNsaWVudF9o
Ci0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIE5vZGU7Ci0KLWNsYXNzIFBsdWdpbkhhbHRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+UGx1Z2luSGFsdGVyQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SGFsdFBsdWdpbihOb2RlKiwgYm9vbCBpc1dpbmRvd2VkLCBjb25zdCBTdHJpbmcmIHBsdWdpbk5h
bWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBsdWdpbkhhbHRlckNsaWVu
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gOTIzODQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcg
KzExOCw2IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKICAgICAsIG1fc2Vzc2lvblN0b3JhZ2VRdW90YShTdG9yYWdlTWFwOjpub1F1b3Rh
KQogI2VuZGlmCi0gICAgLCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKG51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCiAgICAgLCBtX2VkaXRpbmdCZWhhdmlvclR5cGUoZWRpdGluZ0JlaGF2
aW9yVHlwZUZvclBsYXRmb3JtKCkpCiAgICAgLCBtX21heGltdW1IVE1MUGFyc2VyRE9NVHJlZURl
cHRoKGRlZmF1bHRNYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aCkKICAgICAsIG1faXNTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQoZmFsc2UpCkBAIC03NDgsMTIgKzc0Nyw2IEBAIHZvaWQgU2V0
dGluZ3M6OnNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGkKICAgICBtX2V4cGVyaW1lbnRhbE5vdGlm
aWNhdGlvbnNFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0UGx1Z2lu
QWxsb3dlZFJ1blRpbWUodW5zaWduZWQgcnVuVGltZSkKLXsKLSAgICBtX3BsdWdpbkFsbG93ZWRS
dW5UaW1lID0gcnVuVGltZTsKLSAgICBtX3BhZ2UtPnBsdWdpbkFsbG93ZWRSdW5UaW1lQ2hhbmdl
ZCgpOwotfQotCiAjaWYgUExBVEZPUk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExBVEZPUk0o
V1gpKQogdm9pZCBTZXR0aW5nczo6c2V0U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoYm9v
bCBzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsOSArMzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycygpIHsgcmV0
dXJuIGdTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVyczsgfQogI2VuZGlmCiAKLSAgICAgICAg
dm9pZCBzZXRQbHVnaW5BbGxvd2VkUnVuVGltZSh1bnNpZ25lZCk7Ci0gICAgICAgIHVuc2lnbmVk
IHBsdWdpbkFsbG93ZWRSdW5UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5BbGxvd2VkUnVu
VGltZTsgfQotCiAgICAgICAgIHZvaWQgc2V0V2ViQXVkaW9FbmFibGVkKGJvb2wpOwogICAgICAg
ICBib29sIHdlYkF1ZGlvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQXVkaW9FbmFibGVk
OyB9CiAKQEAgLTQ3OCw3ICs0NzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQogICAgICAgICB1bnNpZ25lZCBtX3Nlc3Npb25TdG9yYWdlUXVvdGE7CiAj
ZW5kaWYKLSAgICAgICAgdW5zaWduZWQgbV9wbHVnaW5BbGxvd2VkUnVuVGltZTsKICAgICAgICAg
dW5zaWduZWQgbV9lZGl0aW5nQmVoYXZpb3JUeXBlOwogICAgICAgICB1bnNpZ25lZCBtX21heGlt
dW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoOwogICAgICAgICBib29sIG1faXNTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQgOiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHJl
dmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNkZWZpbmUgUGx1Z2luVmlld19oCiAKICNp
bmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSGFsdGFibGVQbHVnaW4uaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKQEAgLTE0MSw3ICsxNDAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAsIHByaXZhdGUgUGx1Z2luU3RyZWFt
Q2xpZW50CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFBsdWdpbk1hbnVh
bExvYWRlcgotICAgICAgICAgICAgICAgICAgICAgLCBwcml2YXRlIEhhbHRhYmxlUGx1Z2luCiAg
ICAgICAgICAgICAgICAgICAgICAsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShG
cmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBFbGVtZW50KiwgY29uc3QgS1VSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsK
QEAgLTI0NCwxNiArMjQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgICAgICAvLyBIYWx0YWJsZVBsdWdpbgotICAgICAgICB2aXJ0dWFsIHZvaWQg
aGFsdCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzdGFydCgpOwotICAgICAgICB2aXJ0dWFs
IE5vZGUqIG5vZGUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzV2luZG93ZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzV2luZG93ZWQ7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgcGx1
Z2luTmFtZSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgaXNIYWx0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzSGFsdGVkOyB9Ci0gICAgICAgIGJvb2wgaGFzQmVlbkhhbHRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQmVlbkhhbHRlZDsgfQotCiAgICAgICAgIHN0YXRpYyBib29sIGlzQ2FsbGluZ1Bs
dWdpbigpOwogCiAgICAgICAgIGJvb2wgc3RhcnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTQg
KzEyMCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KCkKIHsKIH0KIAot
dm9pZCBQbHVnaW5WaWV3OjpoYWx0KCkKLXsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpyZXN0YXJ0
KCkKLXsKLX0KLQogI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUZvY3VzSW5FdmVudCgpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkocmV2aXNpb24gOTIzODQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE2LDEyICsyMTYsNiBAQCB2b2lkIFJlbmRlcldpZGdldDo6c3R5bGVEaWRDaGFu
Z2UoU3R5bGVECiAgICAgfQogfQogCi12b2lkIFJlbmRlcldpZGdldDo6c2hvd1N1YnN0aXR1dGVJ
bWFnZShQYXNzUmVmUHRyPEltYWdlPiBwcnBJbWFnZSkKLXsKLSAgICBtX3N1YnN0aXR1dGVJbWFn
ZSA9IHBycEltYWdlOwotICAgIHJlcGFpbnQoKTsKLX0KLQogdm9pZCBSZW5kZXJXaWRnZXQ6Om5v
dGlmeVdpZGdldChXaWRnZXROb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewogICAgIGlmICht
X3dpZGdldCkKQEAgLTI2OCwyNSArMjYyLDIxIEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQ
YWludEluZm8mIHBhaW4KICAgICBpZiAobV93aWRnZXQpIHsKICAgICAgICAgLy8gVGVsbCB0aGUg
d2lkZ2V0IHRvIHBhaW50IG5vdy4gIFRoaXMgaXMgdGhlIG9ubHkgdGltZSB0aGUgd2lkZ2V0IGlz
IGFsbG93ZWQKICAgICAgICAgLy8gdG8gcGFpbnQgaXRzZWxmLiAgVGhhdCB3YXkgaXQgd2lsbCBj
b21wb3NpdGUgcHJvcGVybHkgd2l0aCB6LWluZGV4ZWQgbGF5ZXJzLgotICAgICAgICBpZiAobV9z
dWJzdGl0dXRlSW1hZ2UpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdl
KG1fc3Vic3RpdHV0ZUltYWdlLmdldCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIG1fd2lkZ2V0
LT5mcmFtZVJlY3QoKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTGF5b3V0UG9pbnQg
d2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdldC0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKTsKLSAgICAg
ICAgICAgIExheW91dFBvaW50IHBhaW50TG9jYXRpb24oYWRqdXN0ZWRQYWludE9mZnNldC54KCkg
KyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSAr
IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKLSAgICAgICAgICAgIExheW91dFJlY3QgcGFp
bnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7Ci0KLSAgICAgICAgICAgIExheW91dFNpemUgd2lkZ2V0
UGFpbnRPZmZzZXQgPSBwYWludExvY2F0aW9uIC0gd2lkZ2V0TG9jYXRpb247Ci0gICAgICAgICAg
ICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMgaW50byBjb21wb3NpdGluZyBsYXllcnMsIHR4IGFu
ZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZyBjb21wb3NpdGluZyBsYXllciwKLSAg
ICAgICAgICAgIC8vIG5vdCB0aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFu
ZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBiZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWlu
IGRyYXdpbmcuCi0gICAgICAgICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKSB7
Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh3aWRnZXRQYWlu
dE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zm
c2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fd2lkZ2V0LT5wYWludChwYWludElu
Zm8uY29udGV4dCwgcGFpbnRSZWN0KTsKLQotICAgICAgICAgICAgaWYgKCF3aWRnZXRQYWludE9m
ZnNldC5pc1plcm8oKSkKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNs
YXRlKC13aWRnZXRQYWludE9mZnNldCk7CisgICAgICAgIExheW91dFBvaW50IHdpZGdldExvY2F0
aW9uID0gbV93aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgIExheW91dFBv
aW50IHBhaW50TG9jYXRpb24oYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkg
KyBwYWRkaW5nTGVmdCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsg
cGFkZGluZ1RvcCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8u
cmVjdDsKKworICAgICAgICBMYXlvdXRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2Nh
dGlvbiAtIHdpZGdldExvY2F0aW9uOworICAgICAgICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMg
aW50byBjb21wb3NpdGluZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVu
Y2xvc2luZyBjb21wb3NpdGluZyBsYXllciwKKyAgICAgICAgLy8gbm90IHRoZSByb290LiBJbiB0
aGlzIGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJv
b3QtcmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KKyAgICAgICAgaWYgKCF3aWRnZXRQ
YWludE9mZnNldC5pc1plcm8oKSkgeworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRy
YW5zbGF0ZSh3aWRnZXRQYWludE9mZnNldCk7CisgICAgICAgICAgICBwYWludFJlY3QubW92ZSgt
d2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAgICB9CisgICAgICAgIG1fd2lkZ2V0LT5wYWludChw
YWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0KTsKKworICAgICAgICBpZiAoIXdpZGdldFBhaW50
T2Zmc2V0LmlzWmVybygpKQorICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0
ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogCiAgICAgICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZp
ZXcoKSkgewogICAgICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxG
cmFtZVZpZXcqPihtX3dpZGdldC5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWRnZXRQb3NpdGlvbnNVcGRhdGVkKCk7CiAgICAgSW50UmVjdCB3aW5k
b3dDbGlwUmVjdCgpIGNvbnN0OwogCi0gICAgdm9pZCBzaG93U3Vic3RpdHV0ZUltYWdlKFBhc3NS
ZWZQdHI8SW1hZ2U+KTsKLQogICAgIHZvaWQgbm90aWZ5V2lkZ2V0KFdpZGdldE5vdGlmaWNhdGlv
bik7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMo
KTsKQEAgLTc0LDcgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIHNldFdpZGdldEdlb21ldHJ5
KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJik7CiAKICAgICBSZWZQdHI8V2lkZ2V0PiBt
X3dpZGdldDsKLSAgICBSZWZQdHI8SW1hZ2U+IG1fc3Vic3RpdHV0ZUltYWdlOwogICAgIEZyYW1l
VmlldyogbV9mcmFtZVZpZXc7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OyAvLyBUaGUgcmVjdGFu
Z2xlIG5lZWRzIHRvIHJlbWFpbiBjb3JyZWN0IGFmdGVyIHNjcm9sbGluZywgc28gaXQgaXMgc3Rv
cmVkIGluIGNvbnRlbnQgdmlldyBjb29yZGluYXRlcywgYW5kIG5vdCBjbGlwcGVkIHRvIHdpbmRv
dy4KICAgICBpbnQgbV9yZWZDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQyMikKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBkZWxldGVkIGZpbGVzIGZyb20gWGNvZGUgcHJvamVjdC4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDExLTA3
LTI4ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHNxbCB0
byBzdm46aWdub3JlIGFuZCByZW1vdmUgYXBwLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTExLDggKzExLDYgQEAKIAkJMDY1QUQ1QTQwQjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDY1QUQ1QTIwQjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50Lm1t
ICovOyB9OwogCQkwNjY5M0REQzBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjY5M0RE
QTBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggKi87IH07CiAJCTA2Njkz
REREMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjY5M0REQjBCRkJBODUyMDAyMTYw
NzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Lm1tICovOyB9OwotCQkwQTJEODdGRDEwN0FGNTJCMDBD
RERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTJEODdGQjEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1
Z2luSGFsdGVyQ2xpZW50LmggKi87IH07Ci0JCTBBMkQ4N0ZFMTA3QUY1MkIwMENEREVFMyAvKiBX
ZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQTJEODdGQzEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVy
Q2xpZW50Lm1tICovOyB9OwogCQkwQUI3NTIzNzBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2Nh
cGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQUI3NTIzNTBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2Nh
cGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmggKi87IH07CiAJCTBBQjc1MjM4MEZBMkU0REIw
MEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUI3NTIzNjBGQTJFNERC
MDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tICovOyB9
OwogCQkwQUNFOTE3MzEwRkU0N0UzMDA5NkE0NUYgLyogT3BlbkdMLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBQ0U5MTcyMTBGRTQ3
RTMwMDk2QTQ1RiAvKiBPcGVuR0wuZnJhbWV3b3JrICovOyB9OwpAQCAtMzg5LDggKzM4Nyw2IEBA
CiAJCTA2NUFENUEyMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUNs
aWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDY2OTNEREEwQkZCQTg1MjAw
MjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA2NjkzRERCMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JDbGllbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBBMkQ4N0ZCMTA3QUY1MkIwMENEREVF
MyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBBMkQ4N0ZDMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQbHVnaW5IYWx0ZXJD
bGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQjc1MjM1MEZBMkU0REIw
MEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRl
eHRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQjc1MjM2MEZBMkU0REIw
MEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOZXRzY2FwZUNvbnRhaW5lckNo
ZWNrQ29udGV4dEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQ0U5MTcy
MTBGRTQ3RTMwMDk2QTQ1RiAvKiBPcGVuR0wuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBP
cGVuR0wuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTEzMjIsOCArMTMx
OCw2IEBACiAJCQkJODQ3MjNCRTQwNTZENzE5RTAwNDRCRkVBIC8qIFdlYktleUdlbmVyYXRvci5t
bSAqLywKIAkJCQkxQUE4NzlCNDExQ0JFOUJGMDAzQzY2NEYgLyogV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmggKi8sCiAJCQkJMUFBODc5QjUxMUNCRTlCRjAwM0M2NjRGIC8qIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbSAqLywKLQkJCQkwQTJEODdGQjEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50LmggKi8sCi0JCQkJMEEyRDg3RkMxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBs
dWdpbkhhbHRlckNsaWVudC5tbSAqLywKIAkJCQlBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyog
V2ViU2VjdXJpdHlPcmlnaW4ubW0gKi8sCiAJCQkJQTVERUZDMDgxMUQ1MzMxQzAwODg1MjczIC8q
IFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCAqLywKIAkJCQlBNURFRkMwOTExRDUzMzFDMDA4
ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmggKi8sCkBAIC0xNTc1LDcgKzE1Njks
NiBAQAogCQkJCTkzOTgxMEIwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXJQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAzNzA4MjRCRjAxMDA4REYwMzggLyog
V2ViUGx1Z2luQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMzgwODI0QkYw
MTAwOERGMDM4IC8qIFdlYlBsdWdpbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwQTJE
ODdGRDEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTAzOTA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luUGFja2FnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjI1Rjg4MTUwOUY5N0U4QTAwNDIzQTQwIC8qIFdlYlBsdWdp
blByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzdCMDJFMEVFNzczMDUwMEM4QTFGOSAv
KiBXZWJQbHVnaW5SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE5NjcsNyArMTk2MCw2IEBA
CiAJCQkJOTM5ODExMjYwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNr
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwREEwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBs
dWdpbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBEQjA4MjRCRjAxMDA4
REYwMzggLyogV2ViUGx1Z2luRGF0YWJhc2UubW0gaW4gU291cmNlcyAqLywKLQkJCQkwQTJEODdG
RTEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM5ODEwREMwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpblBhY2thZ2UubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQTc3QjAyRjBFRTc3MzA1MDBDOEExRjkgLyogV2ViUGx1Z2lu
UmVxdWVzdC5tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjI0MTAwRjkwOTE4MTkwMTAwRDJEMjY2IC8q
IFdlYlBsdWdpbnNQcml2YXRlLm0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDkyNDIyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBwbHVnLWluIGhh
bHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNl
TmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IGluaXRX
aXRoRnJhbWU6cGx1Z2luUGFja2FnZTpVUkw6YmFzZVVSTDpNSU1FVHlwZTphdHRyaWJ1dGVLZXlz
OmF0dHJpYnV0ZVZhbHVlczpsb2FkTWFudWFsbHk6ZWxlbWVudDpXZWJDb3JlOjpdKToKKyAgICAg
ICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBzdGFydF0pOgorICAgICAgICAoLVtXZWJC
YXNlTmV0c2NhcGVQbHVnaW5WaWV3IHN0b3BdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnaW5IYWx0ZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9X
ZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTpncm91cE5hbWU6dXNlc0RvY3VtZW50Vmlld3M6XSk6CisgICAgICAgICgtW1dlYlZp
ZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmg6CisKIDIwMTEtMDgtMDMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEZpeCBpbmNvcnJlY3QgY2hlY2tzIGZvciBIVE1MTWVkaWFFbGVtZW50CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcuaAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiB9
CiAKLWNsYXNzIFdlYkhhbHRhYmxlUGx1Z2luOwotCiAvLyBBbHNvIGRlY2xhcmVkIGluIFdlYkNv
cmUvV2lkZ2V0TWFjLm1tCiBAaW50ZXJmYWNlIE5TVmlldyAoV2lkZ2V0KQogLSAodm9pZCl2aXNp
YmxlUmVjdERpZENoYW5nZTsKQEAgLTY4LDggKzY2LDYgQEAgQGludGVyZmFjZSBXZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3IDogTgogICAgIEJPT0wgX2hhc0ZvY3VzOwogICAgIEJPT0wgX2lzQ29t
cGxldGVseU9ic2N1cmVkOwogICAgIEJPT0wgX2lzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKLSAg
ICBCT09MIF9pc0hhbHRlZDsKLSAgICBCT09MIF9oYXNCZWVuSGFsdGVkOwogICAgIEJPT0wgX3Nu
YXBzaG90dGluZzsKICAgICAKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+
IF9lbGVtZW50OwpAQCAtNzgsOCArNzQsNiBAQCBAaW50ZXJmYWNlIFdlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcgOiBOCiAgICAgUmV0YWluUHRyPE5TVVJMPiBfc291cmNlVVJMOwogICAgIFJldGFp
blB0cjxOU0ltYWdlPiBfY2FjaGVkU25hcHNob3Q7CiAgICAgCi0gICAgT3duUHRyPFdlYkhhbHRh
YmxlUGx1Z2luPiBfaGFsdGFibGU7Ci0gICAgCiAgICAgTlNUcmFja2luZ1JlY3RUYWcgX3RyYWNr
aW5nVGFnOwogfQogCkBAIC0xMjIsMTEgKzExNiw2IEBAIEBpbnRlcmZhY2UgV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldyA6IE4KIC0gKHZvaWQpc3RhcnQ7CiAtICh2b2lkKXN0b3A7CiAKLS0gKHZv
aWQpaGFsdDsKLS0gKHZvaWQpcmVzdW1lRnJvbUhhbHQ7Ci0tIChCT09MKWlzSGFsdGVkOwotLSAo
Qk9PTCloYXNCZWVuSGFsdGVkOwotCiAtICh2b2lkKWFkZFdpbmRvd09ic2VydmVyczsKIC0gKHZv
aWQpcmVtb3ZlV2luZG93T2JzZXJ2ZXJzOwogLSAoQk9PTClzaG91bGRDbGlwT3V0UGx1Z2luOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvSGFsdGFibGVQbHVnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVuZGVyVmlldy5oPgpAQCAtNzEsNDggKzcwLDYgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVy
dmFsIENsZWFyU3Vic3RpdAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotY2xhc3MgV2Vi
SGFsdGFibGVQbHVnaW4gOiBwdWJsaWMgSGFsdGFibGVQbHVnaW4gewotcHVibGljOgotICAgIFdl
YkhhbHRhYmxlUGx1Z2luKFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcqIHZpZXcpCi0gICAgICAg
IDogbV92aWV3KHZpZXcpCi0gICAgewotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIGhhbHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdGFydCgpOwotICAgIHZpcnR1YWwg
Tm9kZSogbm9kZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z2luTmFtZSgpIGNvbnN0OwotCi0gICAgV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldyogbV92aWV3OwotfTsKLQotdm9pZCBXZWJIYWx0YWJsZVBsdWdpbjo6
aGFsdCgpCi17Ci0gICAgW21fdmlldyBoYWx0XTsKLX0KLQotdm9pZCBXZWJIYWx0YWJsZVBsdWdp
bjo6cmVzdGFydCgpCi17IAotICAgIFttX3ZpZXcgcmVzdW1lRnJvbUhhbHRdOwotfQotICAgIAot
Tm9kZSogV2ViSGFsdGFibGVQbHVnaW46Om5vZGUoKSBjb25zdAotewotICAgIHJldHVybiBbbV92
aWV3IGVsZW1lbnRdOwotfQotCi1ib29sIFdlYkhhbHRhYmxlUGx1Z2luOjppc1dpbmRvd2VkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBXZWJIYWx0YWJsZVBsdWdp
bjo6cGx1Z2luTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtbbV92aWV3IHBsdWdpblBhY2th
Z2VdIHBsdWdpbkluZm9dLm5hbWU7Ci19Ci0KIEBpbXBsZW1lbnRhdGlvbiBXZWJCYXNlTmV0c2Nh
cGVQbHVnaW5WaWV3CiAKICsgKHZvaWQpaW5pdGlhbGl6ZQpAQCAtMTYzLDcgKzEyMCw2IEBAIC0g
KGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQogICAgICAgICBfbW9kZSA9IE5QX0VNQkVE
OwogICAgIAogICAgIF9sb2FkTWFudWFsbHkgPSBsb2FkTWFudWFsbHk7Ci0gICAgX2hhbHRhYmxl
ID0gYWRvcHRQdHIobmV3IFdlYkhhbHRhYmxlUGx1Z2luKHNlbGYpKTsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIApAQCAtNDU0LDcgKzQxMCw2IEBAIC0gKHZvaWQpc3RhcnQKICAgICB9CiAgICAgCiAg
ICAgX2lzU3RhcnRlZCA9IFlFUzsKLSAgICBwYWdlLT5kaWRTdGFydFBsdWdpbihfaGFsdGFibGUu
Z2V0KCkpOwogCiAgICAgW1tzZWxmIHdlYlZpZXddIGFkZFBsdWdpbkluc3RhbmNlVmlldzpzZWxm
XTsKIApAQCAtNDg0LDExICs0MzksNiBAQCAtICh2b2lkKXN0b3AKICAgICBpZiAoIV9pc1N0YXJ0
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb3JlKFtzZWxm
IHdlYkZyYW1lXSkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQot
ICAgICAgICAgICAgcGFnZS0+ZGlkU3RvcFBsdWdpbihfaGFsdGFibGUuZ2V0KCkpOwotICAgIH0K
LSAgICAKICAgICBfaXNTdGFydGVkID0gTk87CiAgICAgCiAgICAgW1tzZWxmIHdlYlZpZXddIHJl
bW92ZVBsdWdpbkluc3RhbmNlVmlldzpzZWxmXTsKQEAgLTUwMiw2MSArNDUyLDYgQEAgLSAodm9p
ZClzdG9wCiAgICAgW3NlbGYgZGVzdHJveVBsdWdpbl07CiB9CiAKLS0gKHZvaWQpaGFsdAotewot
ICAgIEFTU0VSVCghX2lzSGFsdGVkKTsKLSAgICBBU1NFUlQoX2lzU3RhcnRlZCk7Ci0gICAgRWxl
bWVudCAqZWxlbWVudCA9IFtzZWxmIGVsZW1lbnRdOwotI2lmbmRlZiBCVUlMRElOR19PTl9MRU9Q
QVJECi0gICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gQ0dJbWFnZVJldGFpbihbY29yZShbc2VsZiB3
ZWJGcmFtZV0pLT5ub2RlSW1hZ2UoZWxlbWVudCkuZ2V0KCkgQ0dJbWFnZUZvclByb3Bvc2VkUmVj
dDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSk7Ci0jZWxzZQotICAgIFJldGFpblB0cjxDR0lt
YWdlU291cmNlUmVmPiBpbWFnZVJlZihBZG9wdENGLCBDR0ltYWdlU291cmNlQ3JlYXRlV2l0aERh
dGEoKENGRGF0YVJlZilbY29yZShbc2VsZiB3ZWJGcmFtZV0pLT5ub2RlSW1hZ2UoZWxlbWVudCku
Z2V0KCkgVElGRlJlcHJlc2VudGF0aW9uXSwgMCkpOwotICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9
IENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoaW1hZ2VSZWYuZ2V0KCksIDAsIDApOwot
I2VuZGlmCi0gICAgQVNTRVJUKGNnSW1hZ2UpOwotICAgIAotICAgIC8vIEJpdG1hcEltYWdlIHdp
bGwgcmVsZWFzZSB0aGUgcGFzc2VkIGluIENHSW1hZ2Ugb24gZGVzdHJ1Y3Rpb24uCi0gICAgUmVm
UHRyPEltYWdlPiBub2RlSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNnSW1hZ2UpOwotICAg
IEFTU0VSVChlbGVtZW50LT5yZW5kZXJlcigpKTsKLSAgICB0b1JlbmRlcldpZGdldChlbGVtZW50
LT5yZW5kZXJlcigpKS0+c2hvd1N1YnN0aXR1dGVJbWFnZShub2RlSW1hZ2UpOwotICAgIFtzZWxm
IHN0b3BdOwotICAgIF9pc0hhbHRlZCA9IFlFUzsgIAotICAgIF9oYXNCZWVuSGFsdGVkID0gWUVT
OwotfQotCi0tICh2b2lkKV9jbGVhclN1YnN0aXR1dGVJbWFnZQotewotICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBbc2VsZiBlbGVtZW50XTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgdG9SZW5k
ZXJXaWRnZXQocmVuZGVyZXIpLT5zaG93U3Vic3RpdHV0ZUltYWdlKDApOwotfQotCi0tICh2b2lk
KXJlc3VtZUZyb21IYWx0Ci17Ci0gICAgQVNTRVJUKF9pc0hhbHRlZCk7Ci0gICAgQVNTRVJUKCFf
aXNTdGFydGVkKTsKLSAgICBbc2VsZiBzdGFydF07Ci0gICAgCi0gICAgaWYgKF9pc1N0YXJ0ZWQp
Ci0gICAgICAgIF9pc0hhbHRlZCA9IE5POwotICAgIAotICAgIEFTU0VSVChbc2VsZiBlbGVtZW50
XS0+cmVuZGVyZXIoKSk7Ci0gICAgLy8gRklYTUUgNzQxNzQ4NDogVGhpcyBpcyBhIHdvcmthcm91
bmQgZm9yIHBsdWctaW5zIG5vdCBkcmF3aW5nIGltbWVkaWF0ZWx5LiBXZSdkIGxpa2UgdG8gZGV0
ZWN0IHdoZW4gdGhlCi0gICAgLy8gcGx1Zy1pbiBhY3R1YWxseSBkcmF3cyBpbnN0ZWFkIG9mIGp1
c3QgYXNzdW1pbmcgaXQgd2lsbCBkbyBzbyB3aXRoaW4gMC41IHNlY29uZHMgb2YgYmVpbmcgcmVz
dGFydGVkLgotICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2NsZWFyU3Vic3Rp
dHV0ZUltYWdlKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OkNsZWFyU3Vic3RpdHV0ZUltYWdl
RGVsYXldOwotfQotCi0tIChCT09MKWlzSGFsdGVkCi17Ci0gICAgcmV0dXJuIF9pc0hhbHRlZDsK
LX0KLQogLSAoQk9PTClzaG91bGRDbGlwT3V0UGx1Z2luCiB7CiAgICAgTlNXaW5kb3cgKndpbmRv
dyA9IFtzZWxmIHdpbmRvd107CkBAIC01OTYsMTEgKzQ5MSw2IEBAIC0gKHZvaWQpY2xlYXJDYWNo
ZWRTbmFwc2hvdAogICAgIF9jYWNoZWRTbmFwc2hvdC5jbGVhcigpOwogfQogCi0tIChCT09MKWhh
c0JlZW5IYWx0ZWQKLXsKLSAgICByZXR1cm4gX2hhc0JlZW5IYWx0ZWQ7Ci19Ci0KIC0gKHZvaWQp
dmlld1dpbGxNb3ZlVG9XaW5kb3c6KE5TV2luZG93ICopbmV3V2luZG93CiB7CiAgICAgLy8gV2Ug
bXVzdCByZW1vdmUgdGhlIHRyYWNraW5nIHJlY3QgYmVmb3JlIHdlIG1vdmUgdG8gdGhlIG5ldyB3
aW5kb3cuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5I
YWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luSGFsdGVyQ2xpZW50Lmg+Ci0j
aW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3Mg
Tm9kZTsKLX0KLQotQGNsYXNzIFdlYlZpZXc7Ci0KLWNsYXNzIFdlYlBsdWdpbkhhbHRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5IYWx0ZXJDbGllbnQgewotcHVibGljOgotICAgIFdl
YlBsdWdpbkhhbHRlckNsaWVudChXZWJWaWV3ICopOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRIYWx0UGx1Z2luKFdlYkNvcmU6Ok5vZGUqLCBib29sLCBjb25zdCBXVEY6OlN0cmluZyYp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3Q7Ci0gICAgCi1wcml2YXRl
OgotICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKLX07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tCShy
ZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkhhbHRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgIldlYlBs
dWdpbkhhbHRlckNsaWVudC5oIgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBv
cnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCi0jaW1wb3J0ICJXZWJWaWV3
LmgiCi0jaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1XZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OldlYlBsdWdpbkhhbHRlckNsaWVu
dChXZWJWaWV3ICp3ZWJWaWV3KQotICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgQVNT
RVJUX0FSRyh3ZWJWaWV3LCB3ZWJWaWV3KTsKLX0KLQotYm9vbCBXZWJQbHVnaW5IYWx0ZXJDbGll
bnQ6OnNob3VsZEhhbHRQbHVnaW4oTm9kZSogcGx1Z2luTm9kZSwgYm9vbCBpc1dpbmRvd2VkLCBj
b25zdCBTdHJpbmcmIHBsdWdpbk5hbWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FSRyhwbHVnaW5O
b2RlLCBwbHVnaW5Ob2RlKTsKLSAgICByZXR1cm4gQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29s
ZWFuKE5PLCBtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZEhhbHRQbHVnaW46aXNX
aW5kb3dlZDpwbHVnaW5OYW1lOiksIGtpdChwbHVnaW5Ob2RlKSwgaXNXaW5kb3dlZCwgKE5TU3Ry
aW5nICopcGx1Z2luTmFtZSk7Ci19Ci0KLWJvb2wgV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjplbmFi
bGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZEhhbHRQbHVnaW46aXNXaW5kb3dl
ZDpwbHVnaW5OYW1lOildOwotfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDYgQEAKICNkZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2Vi
R0xFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkdMRW5hYmxlZCIKICNkZWZpbmUgV2Vi
S2l0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWNjZWxl
cmF0ZWQyZENhbnZhc0VuYWJsZWQiCi0jZGVmaW5lIFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1l
UHJlZmVyZW5jZUtleSBAIldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lIgogI2RlZmluZSBXZWJL
aXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZl
cmVuY2VLZXkgQCJXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktp
dFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQiCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzY3LDcgKzM2Nyw2
IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
Tk9dLCAgIFdlYktpdFNob3dSZXBhaW50Q291bnRlclByZWZlcmVuY2VLZXksCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0V2ViR0xFbmFibGVkUHJlZmVyZW5j
ZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRBY2Nl
bGVyYXRlZDJkQ2FudmFzRW5hYmxlZFByZWZlcmVuY2VLZXksCi0gICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoVW5zaWduZWRJbnQ6NF0sIFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJl
bmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgV2ViS2l0RE5T
UHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTEzMzMsMTYgKzEzMzIsNiBAQCAt
ICh2b2lkKXNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkOihCCiAgICAgW3NlbGYgX3NldEJv
b2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZFBy
ZWZlcmVuY2VLZXldOwogfQogCi0tICh1bnNpZ25lZClwbHVnaW5BbGxvd2VkUnVuVGltZQotewot
ICAgIHJldHVybiBbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdFBsdWdpbkFsbG93ZWRS
dW5UaW1lUHJlZmVyZW5jZUtleV07Ci19Ci0KLS0gKHZvaWQpc2V0UGx1Z2luQWxsb3dlZFJ1blRp
bWU6KHVuc2lnbmVkKWFsbG93ZWRSdW5UaW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9zZXRJbnRl
Z2VyVmFsdWU6YWxsb3dlZFJ1blRpbWUgZm9yS2V5OldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1l
UHJlZmVyZW5jZUtleV07Ci19Ci0KIC0gKEJPT0wpaXNGcmFtZUZsYXR0ZW5pbmdFbmFibGVkCiB7
CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0RnJhbWVGbGF0dGVuaW5n
RW5hYmxlZFByZWZlcmVuY2VLZXldOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw5ICsxMjYsNiBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2
YXRlKQogLSAoQk9PTClleHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDsKIC0gKHZvaWQp
c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQ6KEJPT0wpbm90aWZpY2F0aW9uc0Vu
YWJsZWQ7CiAKLS0gKHVuc2lnbmVkKXBsdWdpbkFsbG93ZWRSdW5UaW1lOwotLSAodm9pZClzZXRQ
bHVnaW5BbGxvd2VkUnVuVGltZToodW5zaWduZWQpYWxsb3dlZFJ1blRpbWU7Ci0KIC0gKEJPT0wp
aXNGcmFtZUZsYXR0ZW5pbmdFbmFibGVkOwogLSAodm9pZClzZXRGcmFtZUZsYXR0ZW5pbmdFbmFi
bGVkOihCT09MKWZsYWc7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw2IEBACiAjaW1wb3J0ICJXZWJQYW5lbEF1dGhl
bnRpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAj
aW1wb3J0ICJXZWJQbHVnaW5EYXRhYmFzZS5oIgotI2ltcG9ydCAiV2ViUGx1Z2luSGFsdGVyQ2xp
ZW50LmgiCiAjaW1wb3J0ICJXZWJQb2xpY3lEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKQEAg
LTc0NCw3ICs3NDMsNiBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5h
CiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkVkaXRvckNsaWVudChzZWxm
KTsKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQoc2VsZik7
CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVu
dChzZWxmKTsKLSAgICBwYWdlQ2xpZW50cy5wbHVnaW5IYWx0ZXJDbGllbnQgPSBhZG9wdFB0cihu
ZXcgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KHNlbGYpKTsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQogICAgIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9uQ2xpZW50ID0gbmV3IFdl
Ykdlb2xvY2F0aW9uQ2xpZW50KHNlbGYpOwogI2VuZGlmCkBAIC0xNTYzLDcgKzE1NjEsNiBAQCAt
ICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3MtPnNl
dENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoW3ByZWZlcmVuY2VzIGNhbnZhc1VzZXNBY2Nl
bGVyYXRlZERyYXdpbmddKTsgICAgCiAgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMo
W3ByZWZlcmVuY2VzIHNob3dEZWJ1Z0JvcmRlcnNdKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd1Jl
cGFpbnRDb3VudGVyKFtwcmVmZXJlbmNlcyBzaG93UmVwYWludENvdW50ZXJdKTsKLSAgICBzZXR0
aW5ncy0+c2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUoW3ByZWZlcmVuY2VzIHBsdWdpbkFsbG93ZWRS
dW5UaW1lXSk7CiAgICAgc2V0dGluZ3MtPnNldFdlYkF1ZGlvRW5hYmxlZChbcHJlZmVyZW5jZXMg
d2ViQXVkaW9FbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldFdlYkdMRW5hYmxlZChbcHJlZmVy
ZW5jZXMgd2ViR0xFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkMmRDYW52
YXNFbmFibGVkKFtwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZF0pOwpAQCAt
MjUzOSw1OSArMjUzNiw2IEBAIC0gKEJPT0wpX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdM
YXkKICAgICByZXR1cm4gX3ByaXZhdGUtPmluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXll
cnNXaGVuRHJhd2luZ1RvQml0bWFwOwogfQogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi1zdGF0aWMgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqX3BsdWdpblZpZXdGb3JOb2Rl
KERPTU5vZGUgKm5vZGUpCi17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIAotICAgIE5vZGUqIGNvcmVOb2RlID0gY29yZShub2RlKTsKLSAgICBpZiAoIWNvcmVOb2Rl
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+
aXNXaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBXaWRnZXQqIHdpZGdl
dCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7Ci0gICAgaWYgKCF3aWRnZXQg
fHwgIXdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBOU1ZpZXcgKnZpZXcgPSB3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCk7Ci0gICAgaWYgKCFb
dmlldyBpc0tpbmRPZkNsYXNzOltXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IGNsYXNzXV0pCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmV0dXJuIChXZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3ICopdmlldzsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LQotKyAoQk9PTClfaXNOb2RlSGFsdGVkUGx1Z2luOihET01Ob2RlICopbm9kZQotewotI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHJldHVybiBbX3BsdWdpblZpZXdGb3JOb2Rl
KG5vZGUpIGlzSGFsdGVkXTsKLSNlbHNlCi0gICAgcmV0dXJuIFlFUzsKLSNlbmRpZgotfQotCi0r
IChCT09MKV9oYXNQbHVnaW5Gb3JOb2RlQmVlbkhhbHRlZDooRE9NTm9kZSAqKW5vZGUKLXsKLSNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICByZXR1cm4gW19wbHVnaW5WaWV3Rm9y
Tm9kZShub2RlKSBoYXNCZWVuSGFsdGVkXTsKLSNlbHNlCi0gICAgcmV0dXJuIFlFUzsKLSNlbmRp
ZgotfQotKyAodm9pZClfcmVzdGFydEhhbHRlZFBsdWdpbkZvck5vZGU6KERPTU5vZGUgKilub2Rl
Ci17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgaWYgKCFub2RlKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgW19wbHVnaW5WaWV3Rm9yTm9kZShub2RlKSByZXN1bWVG
cm9tSGFsdF07Ci0jZW5kaWYKLX0KLQogLSAoTlNQYXN0ZWJvYXJkICopX2luc2VydGlvblBhc3Rl
Ym9hcmQKIHsKICAgICByZXR1cm4gX3ByaXZhdGUgPyBfcHJpdmF0ZS0+aW5zZXJ0aW9uUGFzdGVi
b2FyZCA6IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MDMsMTEgKzUwMyw2IEBAIENvdWxkIGJl
IHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9pZClfc2V0SW5jbHVkZXNGbGF0dGVuZWRD
b21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA6KEJPT0wpZmxhZzsKIC0gKEJPT0wp
X2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOwog
Ci0vLyBTUEkgZm9yIFBsdWdpbkhhbHRlcgotKyAoQk9PTClfaXNOb2RlSGFsdGVkUGx1Z2luOihE
T01Ob2RlICopbm9kZTsKLSsgKEJPT0wpX2hhc1BsdWdpbkZvck5vZGVCZWVuSGFsdGVkOihET01O
b2RlICopbm9kZTsKLSsgKHZvaWQpX3Jlc3RhcnRIYWx0ZWRQbHVnaW5Gb3JOb2RlOihET01Ob2Rl
ICopbm9kZTsKLQogLy8gV2hpY2ggcGFzdGVib2FyZCB0ZXh0IGlzIGNvbWluZyBmcm9tIGluIGVk
aXRpbmcgZGVsZWdhdGUgbWV0aG9kcyBzdWNoIGFzIHNob3VsZEluc2VydE5vZGUuCiAtIChOU1Bh
c3RlYm9hcmQgKilfaW5zZXJ0aW9uUGFzdGVib2FyZDsKIApJbmRleDogU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gOTI0MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMS0wOC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzI5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHBsdWctaW4gaGFs
dGVyIGFuZCBhc3NvY2lhdGVkIGNsYXNzZXMuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJQ
bHVnaW5IYWx0ZXJEZWxlZ2F0ZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9J
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3
UHJpdmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvajoKKyAgICAgICAgKiBXZWJL
aXQudmNwcm9qL1dlYktpdC52Y3Byb2o6CisgICAgICAgICogV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmg6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVy
ZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MpOgorICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViVmlldzo6Y2xvc2UpOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhG
cmFtZSk6CisgICAgICAgIChXZWJWaWV3Ojp1bnVzZWQxKToKKyAgICAgICAgKFdlYlZpZXc6OnVu
dXNlZDIpOgorICAgICAgICAoV2ViVmlldzo6dW51c2VkMyk6CisgICAgICAgICogV2ViVmlldy5o
OgorCiAyMDExLTA4LTA0ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyB3aGV0aGVyIEFWRm91bmRhdGlv
biBpcyBlbmFibGVkIHRvIElXZWJQcmVmZXJlbmNlcwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw4ICsxMzYsNiBAQAogCiAjZGVmaW5lIFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJz
UHJlZmVyZW5jZUtleSAiV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnMiCiAKLSNkZWZpbmUg
V2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5ICJXZWJLaXRQbHVnaW5BbGxv
d2VkUnVuVGltZSIKLQogI2RlZmluZSBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSAiV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCIKIAogI2RlZmluZSBXZWJLaXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkIgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw5ICsyNTYsNiBAQCB2b2lkIFdlYlByZWZlcmVu
Y2VzOjppbml0aWFsaXplRGVmYXVsdFNlCiAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwbHVnaW5BbGxv
d2VkUnVuVGltZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIo
IiV1IiksIG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVm
ZXJlbmNlS2V5KSwgcGx1Z2luQWxsb3dlZFJ1blRpbWUuZ2V0KCkpOwotCiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgCiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKQEAgLTE0OTAsMTggKzE0ODcsNiBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKFVJTlQg
YWxsb3dlZFJ1blRpbWUpCi17Ci0gICAgc2V0SW50ZWdlclZhbHVlKENGU1RSKFdlYktpdFBsdWdp
bkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSksIGFsbG93ZWRSdW5UaW1lKTsKLSAgICByZXR1
cm4gU19PSzsKLX0KLQotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6cGx1Z2luQWxsb3dlZFJ1blRp
bWUoVUlOVCogYWxsb3dlZFJ1blRpbWUpCi17Ci0gICAgKmFsbG93ZWRSdW5UaW1lID0gaW50ZWdl
clZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtl
eSkpOwotICAgIHJldHVybiBTX09LOwotfQotCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQ
cmVmZXJlbmNlRm9yVGVzdChCU1RSIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0
cmluZ0xlbihrZXkpIHx8ICFTeXNTdHJpbmdMZW4odmFsdWUpKQpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJXZWJNdXRhYmxlVVJM
UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUg
IldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIldlYlBsdWdpbkhhbHRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0V29y
bGQuaCIKICNpbmNsdWRlICJyZXNvdXJjZS5oIgpAQCAtNzA4LDcgKzcwNyw2IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2xvc2UKICAgICBzZXRSZXNvdXJjZUxvYWREZWxl
Z2F0ZSgwKTsKICAgICBzZXRVSURlbGVnYXRlKDApOwogICAgIHNldEZvcm1EZWxlZ2F0ZSgwKTsK
LSAgICBzZXRQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSgwKTsKIAogICAgIGlmIChtX3dlYkluc3BlY3Rv
cikKICAgICAgICAgbV93ZWJJbnNwZWN0b3ItPndlYlZpZXdDbG9zZWQoKTsKQEAgLTI2NDMsNyAr
MjY0MSw2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcKICAgICBw
YWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpOwogICAg
IHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKICAgICBw
YWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMp
OwotICAgIHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJQ
bHVnaW5IYWx0ZXJDbGllbnQodGhpcykpOwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCiAgICAgcGFnZUNsaWVudHMuZ2VvbG9jYXRpb25DbGllbnQgPSBuZXcgV2ViR2VvbG9j
YXRpb25DbGllbnQodGhpcyk7CiAjZW5kaWYKQEAgLTY0NjAsODUgKzY0NTcsMjIgQEAgdm9pZCBX
ZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKAogfQogI2VuZGlmCiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0UGx1Z2luSGFsdGVyRGVsZWdhdGUoSVdlYlBs
dWdpbkhhbHRlckRlbGVnYXRlKiBkKQorSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQxKCkKIHsKLSAg
ICBtX3BsdWdpbkhhbHRlckRlbGVnYXRlID0gZDsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2Vi
UGx1Z2luSGFsdGVyRGVsZWdhdGUqKiBkKQotewotICAgIGlmICghZCkKLSAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKLQotICAgIGlmICghbV9wbHVnaW5IYWx0ZXJEZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIEVfRkFJTDsKLQotICAgIHJldHVybiBtX3BsdWdpbkhhbHRlckRlbGVnYXRlLmNvcHlS
ZWZUbyhkKTsKLX0KLQotc3RhdGljIFBsdWdpblZpZXcqIHBsdWdpblZpZXdGb3JOb2RlKElET01O
b2RlKiBkb21Ob2RlKQotewotICAgIENPTVB0cjxET01Ob2RlPiB3ZWJLaXRET01Ob2RlKFF1ZXJ5
LCBkb21Ob2RlKTsKLSAgICBpZiAoIXdlYktpdERPTU5vZGUpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgTm9kZSogbm9kZSA9IHdlYktpdERPTU5vZGUtPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdl
dChyZW5kZXJlciktPndpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1
Z2luVmlldygpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQ
bHVnaW5WaWV3Kj4od2lkZ2V0KTsKLX0KLQotSFJFU1VMVCBXZWJWaWV3Ojppc05vZGVIYWx0ZWRQ
bHVnaW4oSURPTU5vZGUqIGRvbU5vZGUsIEJPT0wqIHJlc3VsdCkKLXsKLSAgICBpZiAoIWRvbU5v
ZGUgfHwgIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgICpyZXN1bHQg
PSBGQUxTRTsKLQotICAgIFBsdWdpblZpZXcqIHZpZXcgPSBwbHVnaW5WaWV3Rm9yTm9kZShkb21O
b2RlKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAgICAqcmVz
dWx0ID0gdmlldy0+aXNIYWx0ZWQoKTsKLSAgICByZXR1cm4gU19PSzsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnJl
c3RhcnRIYWx0ZWRQbHVnaW5Gb3JOb2RlKElET01Ob2RlKiBkb21Ob2RlKQorSFJFU1VMVCBXZWJW
aWV3Ojp1bnVzZWQyKCkKIHsKLSAgICBpZiAoIWRvbU5vZGUpCi0gICAgICAgIHJldHVybiBFX1BP
SU5URVI7Ci0KLSAgICBQbHVnaW5WaWV3KiB2aWV3ID0gcGx1Z2luVmlld0Zvck5vZGUoZG9tTm9k
ZSk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgdmlldy0+
cmVzdGFydCgpOwotICAgIHJldHVybiBTX09LOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgV2ViVmlldzo6aGFzUGx1Z2luRm9yTm9k
ZUJlZW5IYWx0ZWQoSURPTU5vZGUqIGRvbU5vZGUsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2Vi
Vmlldzo6dW51c2VkMygpCiB7Ci0gICAgaWYgKCFkb21Ob2RlIHx8ICFyZXN1bHQpCi0gICAgICAg
IHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICAqcmVzdWx0ID0gRkFMU0U7Ci0KLSAgICBQbHVnaW5W
aWV3KiB2aWV3ID0gcGx1Z2luVmlld0Zvck5vZGUoZG9tTm9kZSk7Ci0gICAgaWYgKCF2aWV3KQot
ICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgKnJlc3VsdCA9IHZpZXctPmhhc0JlZW5IYWx0
ZWQoKTsKLSAgICByZXR1cm4gU19PSzsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gRV9GQUlMOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OnNldEdlb2xvY2F0aW9uUHJvdmlk
ZXIoSVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqIGxvY2F0aW9uUHJvdmlkZXIpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtODAyLDggKzgwMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbUdyb3Vw
KEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXAoQlNUUiBncm91
cE5hbWUpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFBsdWdp
bkhhbHRlckRlbGVnYXRlKElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSopOwotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2ViUGx1Z2lu
SGFsdGVyRGVsZWdhdGUqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHVudXNlZDEoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2Vk
MigpOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGludmFsaWRhdGVC
YWNraW5nU3RvcmUoY29uc3QgUkVDVCopOwogCkBAIC0xMDU5LDcgKzEwNTksNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgQ09NUHRyPElXZWJIaXN0b3J5RGVsZWdhdGU+IG1faGlzdG9yeURlbGVnYXRlOwog
ICAgIENPTVB0cjxXZWJQcmVmZXJlbmNlcz4gbV9wcmVmZXJlbmNlczsKICAgICBDT01QdHI8V2Vi
SW5zcGVjdG9yPiBtX3dlYkluc3BlY3RvcjsKLSAgICBDT01QdHI8SVdlYlBsdWdpbkhhbHRlckRl
bGVnYXRlPiBtX3BsdWdpbkhhbHRlckRlbGVnYXRlOwogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRp
b25Qcm92aWRlcj4gbV9nZW9sb2NhdGlvblByb3ZpZGVyOwogCiAgICAgYm9vbCBtX3VzZXJBZ2Vu
dE92ZXJyaWRkZW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQbHVn
aW5IYWx0ZXJEZWxlZ2F0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUuaWRsCShyZXZpc2lvbiA5MjM4NCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgRE9fTk9fSU1QT1JUUwotaW1wb3J0ICJv
YWlkbC5pZGwiOwotaW1wb3J0ICJvY2lkbC5pZGwiOwotI2VuZGlmCi0KLWludGVyZmFjZSBJRE9N
Tm9kZTsKLWludGVyZmFjZSBJV2ViVmlldzsKLQotWwotICAgIG9iamVjdCwKLSAgICBvbGVhdXRv
bWF0aW9uLAotICAgIHV1aWQoMmUwZTVkOWUtZmZjOS00MTg1LWFhMTUtZTY2ODY4ZDU0OGVlKSwK
LSAgICBwb2ludGVyX2RlZmF1bHQodW5pcXVlKQotXQotaW50ZXJmYWNlIElXZWJQbHVnaW5IYWx0
ZXJEZWxlZ2F0ZSA6IElVbmtub3duCi17Ci0gICAgSFJFU1VMVCBzaG91bGRIYWx0UGx1Z2luKFtp
bl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSURPTU5vZGUqLCBbaW5dIEJPT0wgaXNXaW5kb3dl
ZCwgW2luXSBCU1RSIHBsdWdpbk5hbWUsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKLX0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmlkbAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC05Miw4ICs5Miw4IEBAIGludGVyZmFjZSBJV2ViUHJlZmVyZW5jZXNQcml2YXRlIDogSVVua24K
ICAgICAvLyBVc2VkIGJ5IER1bXBSZW5kZXJUcmVlLgogICAgIEhSRVNVTFQgc2V0UHJlZmVyZW5j
ZUZvclRlc3QoW2luXSBCU1RSIGtleSwgW2luXSBCU1RSIHZhbHVlKTsKIAotICAgIEhSRVNVTFQg
c2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUoW2luXSBVSU5UIGFsbG93ZWRSdW5UaW1lKTsKLSAgICBI
UkVTVUxUIHBsdWdpbkFsbG93ZWRSdW5UaW1lKFtvdXQsIHJldHZhbF0gVUlOVCogYWxsb3dlZFJ1
blRpbWUpOworICAgIEhSRVNVTFQgdW51c2VkMSgpOworICAgIEhSRVNVTFQgdW51c2VkMigpOwog
CiAgICAgSFJFU1VMVCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChbaW5dIEJPT0wp
OwogICAgIEhSRVNVTFQgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoW291dCwgcmV0dmFs
XSBCT09MKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJp
dmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2Vi
Vmlld1ByaXZhdGUuaWRsCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTsKIGludGVyZmFjZSBJ
V2ViSGlzdG9yeURlbGVnYXRlOwogaW50ZXJmYWNlIElXZWJJbnNwZWN0b3I7CiBpbnRlcmZhY2Ug
SVdlYkluc3BlY3RvclByaXZhdGU7Ci1pbnRlcmZhY2UgSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRl
OwogaW50ZXJmYWNlIElXZWJVUkxSZXF1ZXN0OwogaW50ZXJmYWNlIElXZWJWaWV3OwogCkBAIC0x
OTcsOCArMTk2LDggQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAg
SFJFU1VMVCByZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tR3JvdXAoW2luXSBCU1RSIGdyb3VwTmFt
ZSwgW2luXSBJV2ViU2NyaXB0V29ybGQqKTsKICAgICBIUkVTVUxUIHJlbW92ZUFsbFVzZXJDb250
ZW50RnJvbUdyb3VwKFtpbl0gQlNUUiBncm91cE5hbWUpOwogCi0gICAgSFJFU1VMVCBzZXRQbHVn
aW5IYWx0ZXJEZWxlZ2F0ZShbaW5dIElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSogZCk7Ci0gICAg
SFJFU1VMVCBwbHVnaW5IYWx0ZXJEZWxlZ2F0ZShbcmV0dmFsLCBvdXRdIElXZWJQbHVnaW5IYWx0
ZXJEZWxlZ2F0ZSoqIGQpOworICAgIEhSRVNVTFQgdW51c2VkMSgpOworICAgIEhSRVNVTFQgdW51
c2VkMigpOwogCiAgICAgLy8gSWYgcmVjdCBpcyAwLCB0aGUgZW50aXJlIGJhY2tpbmcgc3RvcmUg
d2lsbCBiZSBpbnZhbGlkYXRlZC4KICAgICBIUkVTVUxUIGludmFsaWRhdGVCYWNraW5nU3RvcmUo
W2luXSBjb25zdCBSRUNUKiByZWN0KTsKQEAgLTIxOSw5ICsyMTgsOSBAQCBpbnRlcmZhY2UgSVdl
YlZpZXdQcml2YXRlIDogSVVua25vd24KICAgICBIUkVTVUxUIGhpc3RvcnlEZWxlZ2F0ZShbb3V0
LHJldHZhbF0gSVdlYkhpc3RvcnlEZWxlZ2F0ZSoqIGhpc3RvcnlEZWxlZ2F0ZSk7CiAgICAgSFJF
U1VMVCBhZGRWaXNpdGVkTGlua3MoW2luXSBCU1RSKiB2aXNpdGVkVVJMcywgW2luXSB1bnNpZ25l
ZCB2aXNpdGVkVVJMQ291bnQpOwogCi0gICAgSFJFU1VMVCBpc05vZGVIYWx0ZWRQbHVnaW4oW2lu
XSBJRE9NTm9kZSosIFtyZXR2YWwsIG91dF0gQk9PTCopOwotICAgIEhSRVNVTFQgcmVzdGFydEhh
bHRlZFBsdWdpbkZvck5vZGUoW2luXSBJRE9NTm9kZSopOwotICAgIEhSRVNVTFQgaGFzUGx1Z2lu
Rm9yTm9kZUJlZW5IYWx0ZWQoW2luXSBJRE9NTm9kZSosIFtyZXR2YWwsIG91dF0gQk9PTCopOwor
ICAgIEhSRVNVTFQgdW51c2VkMSgpOworICAgIEhSRVNVTFQgdW51c2VkMigpOworICAgIEhSRVNV
TFQgdW51c2VkMygpOwogCiAgICAgSFJFU1VMVCBzZXRHZW9sb2NhdGlvblByb3ZpZGVyKFtpbl0g
SVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqIGxvY2F0aW9uUHJvdmlkZXIpOwogICAgIEhSRVNVTFQg
Z2VvbG9jYXRpb25Qcm92aWRlcihbb3V0LCByZXR2YWxdIElXZWJHZW9sb2NhdGlvblByb3ZpZGVy
KiogbG9jYXRpb25Qcm92aWRlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L1dlYktpdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9X
ZWJLaXQuaWRsCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvV2ViS2l0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw2IEBAIGltcG9ydCAi
b2NpZGwuaWRsIjsKICNpbmNsdWRlICJJV2ViTm90aWZpY2F0aW9uLmlkbCIKICNpbmNsdWRlICJJ
V2ViTm90aWZpY2F0aW9uQ2VudGVyLmlkbCIKICNpbmNsdWRlICJJV2ViTm90aWZpY2F0aW9uT2Jz
ZXJ2ZXIuaWRsIgotI2luY2x1ZGUgIklXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5pZGwiCiAjaW5j
bHVkZSAiSVdlYlBvbGljeURlbGVnYXRlLmlkbCIKICNpbmNsdWRlICJJV2ViUG9saWN5RGVsZWdh
dGVQcml2YXRlLmlkbCIKICNpbmNsdWRlICJJV2ViUHJlZmVyZW5jZXMuaWRsIgpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5I
YWx0ZXJDbGllbnQuY3BwCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJQbHVnaW5IYWx0ZXJDbGll
bnQuaCIKLQotI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvTm9kZS5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1XZWJQbHVnaW5IYWx0ZXJDbGllbnQ6Oldl
YlBsdWdpbkhhbHRlckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQotICAgIDogbV93ZWJWaWV3KHdl
YlZpZXcpCi17Ci0gICAgQVNTRVJUX0FSRyh3ZWJWaWV3LCB3ZWJWaWV3KTsKLX0KLQotYm9vbCBX
ZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OnNob3VsZEhhbHRQbHVnaW4oTm9kZSogbiwgYm9vbCBpc1dp
bmRvd2VkLCBjb25zdCBTdHJpbmcmIHBsdWdpbk5hbWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FS
RyhuLCBuKTsKLQotICAgIElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSogZDsKLSAgICBpZiAoRkFJ
TEVEKG1fd2ViVmlldy0+cGx1Z2luSGFsdGVyRGVsZWdhdGUoJmQpKSB8fCAhZCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgQ09NUHRyPElET01Ob2RlPiBkb21Ob2RlKEFkb3B0Q09NLCBE
T01Ob2RlOjpjcmVhdGVJbnN0YW5jZShuKSk7Ci0KLSAgICBCT09MIHNob3VsZEhhbHQ7Ci0gICAg
aWYgKEZBSUxFRChkLT5zaG91bGRIYWx0UGx1Z2luKG1fd2ViVmlldywgZG9tTm9kZS5nZXQoKSwg
aXNXaW5kb3dlZCwgQlN0cmluZyhwbHVnaW5OYW1lKSwgJnNob3VsZEhhbHQpKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHNob3VsZEhhbHQ7Ci19Ci0KLWJvb2wgV2ViUGx1
Z2luSGFsdGVyQ2xpZW50OjplbmFibGVkKCkgY29uc3QKLXsKLSAgICBJV2ViUGx1Z2luSGFsdGVy
RGVsZWdhdGUqIGQ7Ci0gICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnBsdWdpbkhhbHRlckRlbGVn
YXRlKCZkKSkgfHwgIWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVl
OwotfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFs
dGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWZuZGVmIFdlYlBsdWdpbkhhbHRlckNsaWVudF9oCi0jZGVmaW5lIFdl
YlBsdWdpbkhhbHRlckNsaWVudF9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkhhbHRlckNs
aWVudC5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICBjbGFzcyBOb2RlOwotfQotCi1jbGFzcyBXZWJWaWV3OwotCi1jbGFzcyBXZWJQbHVnaW5I
YWx0ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luSGFsdGVyQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICBXZWJQbHVnaW5IYWx0ZXJDbGllbnQoV2ViVmlldyogd2ViVmlldyk7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSGFsdFBsdWdpbihXZWJDb3JlOjpOb2RlKiBuLCBib29sIGlzV2lu
ZG93ZWQsIGNvbnN0IFdURjo6U3RyaW5nJiBwbHVnaW5OYW1lKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgZW5hYmxlZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFdlYlZpZXcqIG1fd2ViVmll
dzsKLX07Ci0KLSNlbmRpZiAvLyBXZWJQbHVnaW5IYWx0ZXJDbGllbnRfaApJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCShyZXZp
c2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovSW50ZXJmYWNl
cy52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwNjUsNTggKzMwNjUsNiBAQAogCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KIAkJPC9GaWxlPgogCQk8RmlsZQotCQkJUmVsYXRpdmVQYXRoPSIuLlxJ
bnRlcmZhY2VzXElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5pZGwiCi0JCQk+Ci0JCQk8RmlsZUNv
bmZpZ3VyYXRpb24KLQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wKLQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCQkv
PgotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJPgot
CQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJLz4KLQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAotCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJ
PEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgotCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExU
b29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCi0JCQkJPgotCQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRvb2wi
Ci0JCQkJLz4KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRpb24K
LQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCi0JCQkJPgotCQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJ
Lz4KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCTwvRmlsZT4KLQkJPEZpbGUKIAkJCVJlbGF0
aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViUG9saWN5RGVsZWdhdGUuaWRsIgogCQkJPgogCQkJ
PEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L1dlYktpdC52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXQudmNwcm9qCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI0MywxNCAr
MTI0Myw2IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJDb3JlU3VwcG9ydFxXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZl
UGF0aD0iLi5cV2ViQ29yZVN1cHBvcnRcV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmNwcCIKLQkJCQk+
Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViQ29yZVN1cHBv
cnRcV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0JCQkJPgotCQkJPC9GaWxlPgogCQk8L0ZpbHRl
cj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViS2l0UHJlZml4LmNwcCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQyMikKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFs
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbid0
IGluY2x1ZGUgUGx1Z2luSGFsdGVyQ2xpZW50LmgsIGl0J3MgYmVlbiByZW1vdmVkLgorCisgICAg
ICAgICogV2ViVmlldy5jcHA6CisKIDIwMTEtMDgtMDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIE5vZGUgcGFy
YW1ldGVyIGZyb20gdGhlIEluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
Vmlldy5jcHAJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1XaGVlbEV2ZW50LmgiCi0jaW5jbHVkZSAiUGx1Z2luSGFsdGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlTWFuYWdlci5oIgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTI0MjIpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wOC0wNCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNh
bGwgdG8gc2V0IHRoZSBhbGxvd2VkIHBsdWctaW4gcnVuIHRpbWUuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChyZXNldERlZmF1bHRz
VG9Db25zaXN0ZW50VmFsdWVzKToKKwogMjAxMS0wOC0wNCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggYXNzZXJ0aW9uIGZhaWx1cmUg
aW4gVGhyZWFkSWRlbnRpZmllckRhdGE6OmlkZW50aWZpZXIgaW4gVGVzdFNoZWxsLgpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gOTIz
ODQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ0Nyw3ICs0NDcsNiBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9D
b25zaXN0ZW50VmFsCiAgICAgW3ByZWZlcmVuY2VzIHNldENhY2hlTW9kZWw6V2ViQ2FjaGVNb2Rl
bERvY3VtZW50QnJvd3Nlcl07CiAgICAgW3ByZWZlcmVuY2VzIHNldFhTU0F1ZGl0b3JFbmFibGVk
Ok5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJs
ZWQ6Tk9dOwotICAgIFtwcmVmZXJlbmNlcyBzZXRQbHVnaW5BbGxvd2VkUnVuVGltZToxXTsKICAg
ICBbcHJlZmVyZW5jZXMgc2V0UGx1Z0luc0VuYWJsZWQ6WUVTXTsKIAogICAgIFtwcmVmZXJlbmNl
cyBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkOk5PXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102999</attachid>
            <date>2011-08-04 16:14:31 -0700</date>
            <delta_ts>2011-08-05 09:52:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65729-20110804161429.patch</filename>
            <type>text/plain</type>
            <size>80147</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFs
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0hhbHRhYmxlUGx1
Z2luLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2Uv
UGx1Z2luSGFsdGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1BsdWdpbkhhbHRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50Lmg6IFJlbW92ZWQu
CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcu
aDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcDoKKyAgICAgICAgKiBwbHVn
aW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuaDoKKwogMjAxMS0wOC0wNCAgS2VuaWNoaSBJc2hp
YmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZWR1Y2Ug
bWVtb3J5IGNvbnN1bXB0aW9uIG9mIEhhcmZidXp6RmFjZQpJbmRleDogU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTk5MCw3ICs5OTAsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGFnZS9QZXJmb3JtYW5jZS5jcHAKICAgICBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAK
ICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAotICAgIHBhZ2UvUGx1Z2luSGFsdGVyLmNw
cAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAogICAgIHBhZ2UvU2NyZWVuLmNwcAogICAgIHBh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
OTIzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjg1LDcgKzI4NSw2IEBAIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0QzFFUE5TXzVGcmFt
ZUUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMTJSZW5kZXJP
YmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU183SW50UmVjdEViCiBfX1pON1dlYkNvcmUxMlJl
bmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgotX19aTjdXZWJDb3JlMTJSZW5k
ZXJXaWRnZXQxOXNob3dTdWJzdGl0dXRlSW1hZ2VFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUltYWdl
RUVFCiBfX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI4cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBk
YXRlc0V2CiBfX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI5c3VzcGVuZFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXNFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMHdyYXBOU0RhdGFFUDZOU0Rh
dGEKQEAgLTY5OCw4ICs2OTcsNiBAQCBfX1pON1dlYkNvcmU0UGFnZTEwZmluZFN0cmluZ0VSS04z
V1RGNlN0CiBfX1pON1dlYkNvcmU0UGFnZTExUGFnZUNsaWVudHNDMUV2CiBfX1pON1dlYkNvcmU0
UGFnZTExUGFnZUNsaWVudHNEMUV2CiBfX1pON1dlYkNvcmU0UGFnZTEyc2V0R3JvdXBOYW1lRVJL
TjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlNFBhZ2UxM2RpZFN0b3BQbHVnaW5FUE5TXzE0SGFs
dGFibGVQbHVnaW5FCi1fX1pON1dlYkNvcmU0UGFnZTE0ZGlkU3RhcnRQbHVnaW5FUE5TXzE0SGFs
dGFibGVQbHVnaW5FCiBfX1pON1dlYkNvcmU0UGFnZTE0c2V0TWVkaWFWb2x1bWVFZgogX19aTjdX
ZWJDb3JlNFBhZ2UxNWFkZFNjaGVkdWxlUGFpckVOM1dURjEwUGFzc1JlZlB0cklOU18xMlNjaGVk
dWxlUGFpckVFRQogX19aTjdXZWJDb3JlNFBhZ2UxNWRpZE1vdmVPbnNjcmVlbkV2CkBAIC04OTgs
NyArODk1LDYgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRFZGl0YWJsZUxpbmtCZQogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjNzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZEViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyM3NldE5lZWRzVGlnZXJNYWlsUXVpcmtzRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczIzc2V0UGljdG9ncmFwaEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNj
cmlwdENvZGUKLV9fWk43V2ViQ29yZThTZXR0aW5nczIzc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWVF
agogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRVc2VzRW5jb2RpbmdEZXRlY3RvckViCiBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MyNHNldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyNHNldEROU1ByZWZldGNoaW5nRW5hYmxlZEViCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtOTM5LDcgKzkzOSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvUGVyZm9y
bWFuY2UuY3BwIFwKICAgICBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXAogICAgIHBh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwIFwKLSAgICBwYWdlL1BsdWdpbkhhbHRlci5jcHAgXAog
ICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAgICAgcGFnZS9TY3JlZW4uY3BwIFwKICAgICBw
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTcyNiwxMCArMTcyNiw2IEBACiAJCTc2MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5oICovOyB9OwogCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmNwcCAqLzsgfTsKIAkJNzY3Rjk5QzAxMUExMTk1NjAwODBDNTFEIC8q
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuaCAqLzsgfTsKLQkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8q
IEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3NjkzQkFEMzEw
NkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXIuY3BwICovOyB9OwotCQk3NjkzQkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2lu
SGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi87IH07Ci0JCTc2OTNC
QUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgy
MyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3Njk0NTYzQzEyMTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tl
bkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzY5NDU2M0ExMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCAqLzsgfTsKIAkJ
NzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Njk0NTYzQjEyMTREOTdDMDAwN0NC
QUUgLyogSlNET01Ub2tlbkxpc3QuaCAqLzsgfTsKIAkJNzY5NDU2NUIxMjE0REI2MzAwMDdDQkFF
IC8qIERPTURPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzY5NDU2NTkxMjE0REI2MzAwMDdDQkFFIC8qIERPTURPTVRva2VuTGlzdC5o
ICovOyB9OwpAQCAtODM1NSwxMCArODM1MSw2IEBACiAJCTc2MzdDNTQyMTEyRTdCN0UwMDNENkNE
QyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc2OTNCQUNFMTA2QzJEQ0EwMDdC
MDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIYWx0YWJsZVBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NjkzQkFD
RjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkhhbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSGFsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSGFsdGVy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTQ1NjNBMTIxNEQ5N0Mw
MDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0RPTVRva2VuTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc2OTQ1NjNCMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVRva2VuTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Njk0NTY1OTEyMTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5M
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURPTVRva2VuTGlzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1OTYsNyArMTQ1ODgsNiBAQAogCQkJ
CUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgKi8sCiAJCQkJQzUw
QjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovLAogCQkJCUM1MEI1
NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggKi8sCi0JCQkJNzY5M0JBQ0Ux
MDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggKi8sCiAJCQkJQkM5NEQxNTAwQzI3
NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3BwICovLAogCQkJCUJDOTREMTUxMEMyNzVDOEIwMDZC
QzYxNyAvKiBIaXN0b3J5LmggKi8sCiAJCQkJQkM5NEQxNTIwQzI3NUM4QjAwNkJDNjE3IC8qIEhp
c3RvcnkuaWRsICovLApAQCAtMTQ2NDYsOSArMTQ2MzcsNiBAQAogCQkJCThBRjRFNTU4MTFEQzVB
NjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5jcHAgKi8sCiAJCQkJOEFGNEU1NTkxMURD
NUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi8sCiAJCQkJOEFGNEU1NUExMURD
NUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmlkbCAqLywKLQkJCQk3NjkzQkFDRjEw
NkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLywKLQkJCQk3NjkzQkFEMDEwNkMy
RENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8sCi0JCQkJNzY5M0JBRDExMDZDMkRDQTAw
N0IwODIzIC8qIFBsdWdpbkhhbHRlckNsaWVudC5oICovLAogCQkJCUZFODBEN0JEMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJNTkzQUI2OTcxMzU1Q0Q5MjAw
RkM4MjExIC8qIFBvc2l0aW9uQ2FsbGJhY2suaWRsICovLAogCQkJCUZFODBEN0JGMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmggKi8sCkBAIC0yMTQ4Nyw3ICsyMTQ3NSw2IEBACiAJ
CQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc3QTE3QTdCMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGljc1R5cGVzM0QuaCBp
biBIZWFkZXJzICovLAogCQkJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRp
bmdzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3NjkzQkFEMjEwNkMyRENBMDA3QjA4MjMgLyogSGFs
dGFibGVQbHVnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzQ2MTE5OEMzNTQwMEJGQjAw
NSAvKiBIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzQ4QkUwMTJDQkYy
REMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREMwMTI1
MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjI0
NzksOCArMjI0NjYsNiBAQAogCQkJCTkzNUM0NzZCMDlBQzRENEYwMEE2QUFCNCAvKiBQbGF0Zm9y
bVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgwMDY0NDJF
OSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCQzEyMzkyOTI3MDBC
MTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTc2OTNCQUQ0MTA2
QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTc2OTNC
QUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBREExNDExMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4Nzk5MDExQ0JFODQ2MDAzQzY2NEYgLyogUGx1
Z2luU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNE
MiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ1NSw3ICsyNTQ0MCw2
IEBACiAJCQkJMUFEOEY4MUMxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRGMzBENzQ1RTQ4MDA2NDQyRTkgLyogUGx1Z2lu
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzIwNUFCQjEyMzkyOTI3MDBCMTczODAgLyog
UGx1Z2luRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzY5M0JBRDMxMDZDMkRDQTAw
N0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURBMTQxMDBF
MUFFNUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3NkZGMTdFMzExMjM1NjczMDAxRDYxQjUgLyogUGx1Z2luVmlld05vbmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJCMUY3MTYwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJF
dmVudHNIaXRSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAiUGx1Z2luSGFsdGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJv
ci5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9IYWx0YWJsZVBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
SGFsdGFibGVQbHVnaW4uaAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0hhbHRhYmxlUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEhhbHRhYmxl
UGx1Z2luX2gKLSNkZWZpbmUgSGFsdGFibGVQbHVnaW5faAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIE5vZGU7Ci0KLWNsYXNzIEhhbHRhYmxlUGx1Z2luIHsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5IYWx0YWJsZVBsdWdpbigpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGhhbHQoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3RhcnQoKSA9IDA7Ci0gICAgdmlydHVhbCBOb2RlKiBu
b2RlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdpbk5hbWUoKSBjb25zdCA9IDA7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBIYWx0YWJsZVBsdWdpbl9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIk5ldHdv
cmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGx1
Z2luRGF0YS5oIgotI2luY2x1ZGUgIlBsdWdpbkhhbHRlci5oIgogI2luY2x1ZGUgIlBsdWdpblZp
ZXcuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJh
Y2tlci5oIgpAQCAtMTc2LDExICsxNzUsNiBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdl
Q2xpZW50cykKICAgICBBU1NFUlQoIWFsbFBhZ2VzLT5jb250YWlucyh0aGlzKSk7CiAgICAgYWxs
UGFnZXMtPmFkZCh0aGlzKTsKIAotICAgIGlmIChwYWdlQ2xpZW50cy5wbHVnaW5IYWx0ZXJDbGll
bnQpIHsKLSAgICAgICAgbV9wbHVnaW5IYWx0ZXIgPSBhZG9wdFB0cihuZXcgUGx1Z2luSGFsdGVy
KHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVudC5yZWxlYXNlKCkpKTsKLSAgICAgICAgbV9w
bHVnaW5IYWx0ZXItPnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKG1fc2V0dGluZ3MtPnBsdWdpbkFs
bG93ZWRSdW5UaW1lKCkpOwotICAgIH0KLQogI2lmbmRlZiBOREVCVUcKICAgICBwYWdlQ291bnRl
ci5pbmNyZW1lbnQoKTsKICNlbmRpZgpAQCAtODg2LDI0ICs4ODAsNiBAQCB2b2lkIFBhZ2U6OnBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCiAgICAgICAgIHBsdWdpblZpZXdCYXNlc1tpXS0+
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogfQog
Ci12b2lkIFBhZ2U6OnBsdWdpbkFsbG93ZWRSdW5UaW1lQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1f
cGx1Z2luSGFsdGVyKQotICAgICAgICBtX3BsdWdpbkhhbHRlci0+c2V0UGx1Z2luQWxsb3dlZFJ1
blRpbWUobV9zZXR0aW5ncy0+cGx1Z2luQWxsb3dlZFJ1blRpbWUoKSk7Ci19Ci0KLXZvaWQgUGFn
ZTo6ZGlkU3RhcnRQbHVnaW4oSGFsdGFibGVQbHVnaW4qIG9iaikKLXsKLSAgICBpZiAobV9wbHVn
aW5IYWx0ZXIpCi0gICAgICAgIG1fcGx1Z2luSGFsdGVyLT5kaWRTdGFydFBsdWdpbihvYmopOwot
fQotCi12b2lkIFBhZ2U6OmRpZFN0b3BQbHVnaW4oSGFsdGFibGVQbHVnaW4qIG9iaikKLXsKLSAg
ICBpZiAobV9wbHVnaW5IYWx0ZXIpCi0gICAgICAgIG1fcGx1Z2luSGFsdGVyLT5kaWRTdG9wUGx1
Z2luKG9iaik7Ci19Ci0KIHZvaWQgUGFnZTo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFy
ZWEqIHNjcm9sbGFibGVBcmVhKQogewogICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYVNldCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVn
aW5EYXRhOwotICAgIGNsYXNzIFBsdWdpbkhhbHRlcjsKLSAgICBjbGFzcyBQbHVnaW5IYWx0ZXJD
bGllbnQ7CiAgICAgY2xhc3MgUHJvZ3Jlc3NUcmFja2VyOwogICAgIGNsYXNzIFJlbmRlclRoZW1l
OwogICAgIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC0xMTMsNyArMTExLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQ7CiAg
ICAgICAgICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50OwogICAgICAgICAgICAgSW5zcGVjdG9y
Q2xpZW50KiBpbnNwZWN0b3JDbGllbnQ7Ci0gICAgICAgICAgICBPd25QdHI8UGx1Z2luSGFsdGVy
Q2xpZW50PiBwbHVnaW5IYWx0ZXJDbGllbnQ7CiAgICAgICAgICAgICBHZW9sb2NhdGlvbkNsaWVu
dCogZ2VvbG9jYXRpb25DbGllbnQ7CiAgICAgICAgICAgICBEZXZpY2VNb3Rpb25DbGllbnQqIGRl
dmljZU1vdGlvbkNsaWVudDsKICAgICAgICAgICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBk
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKQEAgLTI1MywxMCArMjUwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAg
ICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCk7CiAKLSAgICAgICAgdm9pZCBk
aWRTdGFydFBsdWdpbihIYWx0YWJsZVBsdWdpbiopOwotICAgICAgICB2b2lkIGRpZFN0b3BQbHVn
aW4oSGFsdGFibGVQbHVnaW4qKTsKLSAgICAgICAgdm9pZCBwbHVnaW5BbGxvd2VkUnVuVGltZUNo
YW5nZWQoKTsKLQogICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKEpT
Qzo6RGVidWdnZXIqKTsKICAgICAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7
CiAgICAgICAgIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlcjsgfQpAQCAtMzkzLDggKzM4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBib29sIG1fY2FuU3RhcnRNZWRpYTsKIAotICAgICAgICBPd25QdHI8UGx1Z2luSGFsdGVyPiBt
X3BsdWdpbkhhbHRlcjsKLQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IG1fc2Vzc2lvblN0b3JhZ2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BsdWdpbkhhbHRlci5jcHAJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5IYWx0ZXIuaCIKLQotI2luY2x1ZGUgIkhh
bHRhYmxlUGx1Z2luLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1QbHVnaW5IYWx0ZXI6OlBsdWdpbkhhbHRlcihQYXNzT3duUHRyPFBsdWdpbkhhbHRl
ckNsaWVudD4gY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV90aW1lcih0
aGlzLCAmUGx1Z2luSGFsdGVyOjp0aW1lckZpcmVkKQotICAgICwgbV9wbHVnaW5BbGxvd2VkUnVu
VGltZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotewotICAgIEFTU0VSVF9BUkco
bV9jbGllbnQsIG1fY2xpZW50KTsKLX0KLQotdm9pZCBQbHVnaW5IYWx0ZXI6OmRpZFN0YXJ0UGx1
Z2luKEhhbHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgQVNTRVJUX0FSRyhvYmosIG9iaik7Ci0g
ICAgQVNTRVJUX0FSRyhvYmosICFtX3BsdWdpbnMuY29udGFpbnMob2JqKSk7Ci0KLSAgICBpZiAo
IW1fY2xpZW50LT5lbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBjdXJy
ZW50VGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKLQotICAgIG1fcGx1Z2lucy5hZGQob2JqLCBj
dXJyZW50VGltZSk7Ci0KLSAgICBpZiAobV9wbHVnaW5zLnNpemUoKSA9PSAxKQotICAgICAgICBt
X29sZGVzdFN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lOwotCi0gICAgc3RhcnRUaW1lcklmTmVjZXNz
YXJ5KCk7Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVyOjpkaWRTdG9wUGx1Z2luKEhhbHRhYmxlUGx1
Z2luKiBvYmopCi17Ci0gICAgaWYgKCFtX2NsaWVudC0+ZW5hYmxlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3BsdWdpbnMucmVtb3ZlKG9iaik7Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVy
Ojp0aW1lckZpcmVkKFRpbWVyPFBsdWdpbkhhbHRlcj4qKQotewotICAgIGlmIChtX3BsdWdpbnMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8SGFsdGFibGVQbHVnaW4q
PiBwbHVnaW5zOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9wbHVnaW5zLCBwbHVnaW5zKTsKLQot
ICAgIC8vIFBsdWctaW5zIG9sZGVyIHRoYW4gdGhpcyBhcmUgY2FuZGlkYXRlcyB0byBiZSBoYWx0
ZWQuCi0gICAgZG91YmxlIHBsdWdpbkN1dE9mZlRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSBt
X3BsdWdpbkFsbG93ZWRSdW5UaW1lOwotCi0gICAgbV9vbGRlc3RTdGFydFRpbWUgPSBudW1lcmlj
X2xpbWl0czxkb3VibGU+OjptYXgoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGx1
Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBkb3VibGUgdGhpc1N0YXJ0VGltZSA9IG1fcGx1
Z2lucy5nZXQocGx1Z2luc1tpXSk7Ci0gICAgICAgIGlmICh0aGlzU3RhcnRUaW1lID4gcGx1Z2lu
Q3V0T2ZmVGltZSkgewotICAgICAgICAgICAgLy8gVGhpcyBwbHVnLWluIGlzIHRvbyB5b3VuZyB0
byBiZSBoYWx0ZWQuIFdlIGZpbmQgdGhlIG9sZGVzdAotICAgICAgICAgICAgLy8gcGx1Zy1pbiB0
aGF0IGlzIG5vdCBvbGQgZW5vdWdoIHRvIGJlIGhhbHRlZCBhbmQgdXNlIGl0IHRvIHNldAotICAg
ICAgICAgICAgLy8gdGhlIHRpbWVyJ3MgbmV4dCBmaXJlIHRpbWUuCi0gICAgICAgICAgICBpZiAo
dGhpc1N0YXJ0VGltZSA8IG1fb2xkZXN0U3RhcnRUaW1lKQotICAgICAgICAgICAgICAgIG1fb2xk
ZXN0U3RhcnRUaW1lID0gdGhpc1N0YXJ0VGltZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKG1fY2xpZW50LT5zaG91bGRIYWx0UGx1Z2luKHBsdWdpbnNb
aV0tPm5vZGUoKSwgcGx1Z2luc1tpXS0+aXNXaW5kb3dlZCgpLCBwbHVnaW5zW2ldLT5wbHVnaW5O
YW1lKCkpKQotICAgICAgICAgICAgcGx1Z2luc1tpXS0+aGFsdCgpOwotCi0gICAgICAgIG1fcGx1
Z2lucy5yZW1vdmUocGx1Z2luc1tpXSk7Ci0gICAgfQotCi0gICAgc3RhcnRUaW1lcklmTmVjZXNz
YXJ5KCk7Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVyOjpzdGFydFRpbWVySWZOZWNlc3NhcnkoKQot
ewotICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX3BsdWdpbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgbmV4
dEZpcmVJbnRlcnZhbCA9IHN0YXRpY19jYXN0PGRvdWJsZT4obV9wbHVnaW5BbGxvd2VkUnVuVGlt
ZSkgLSAoY3VycmVudFRpbWUoKSAtIG1fb2xkZXN0U3RhcnRUaW1lKTsKLSAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdChuZXh0RmlyZUludGVydmFsIDwgMCA/IDAgOiBuZXh0RmlyZUludGVydmFsKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnaW5IYWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhh
bHRlci5oCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFs
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBsdWdpbkhhbHRlcl9oCi0jZGVm
aW5lIFBsdWdpbkhhbHRlcl9oCi0KLSNpbmNsdWRlICJQbHVnaW5IYWx0ZXJDbGllbnQuaCIKLSNp
bmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhhbHRhYmxlUGx1Z2lu
OwotCi1jbGFzcyBQbHVnaW5IYWx0ZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsdWdp
bkhhbHRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFBsdWdpbkhh
bHRlcihQYXNzT3duUHRyPFBsdWdpbkhhbHRlckNsaWVudD4pOwotCi0gICAgdm9pZCBkaWRTdGFy
dFBsdWdpbihIYWx0YWJsZVBsdWdpbiopOwotICAgIHZvaWQgZGlkU3RvcFBsdWdpbihIYWx0YWJs
ZVBsdWdpbiopOwotCi0gICAgdm9pZCBzZXRQbHVnaW5BbGxvd2VkUnVuVGltZSh1bnNpZ25lZCBy
dW5UaW1lKSB7IG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUgPSBydW5UaW1lOyB9Ci0KLXByaXZhdGU6
Ci0gICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPFBsdWdpbkhhbHRlcj4qKTsKLSAgICB2b2lkIHN0
YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOwotCi0gICAgT3duUHRyPFBsdWdpbkhhbHRlckNsaWVudD4g
bV9jbGllbnQ7Ci0gICAgVGltZXI8UGx1Z2luSGFsdGVyPiBtX3RpbWVyOwotICAgIHVuc2lnbmVk
IG1fcGx1Z2luQWxsb3dlZFJ1blRpbWU7Ci0gICAgZG91YmxlIG1fb2xkZXN0U3RhcnRUaW1lOwot
ICAgIEhhc2hNYXA8SGFsdGFibGVQbHVnaW4qLCBkb3VibGU+IG1fcGx1Z2luczsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBsdWdpbkhhbHRlcl9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDkyMzg0KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpZm5kZWYgUGx1Z2luSGFsdGVyQ2xpZW50X2gKLSNkZWZpbmUgUGx1Z2luSGFs
dGVyQ2xpZW50X2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgTm9kZTsKLQotY2xhc3MgUGx1Z2luSGFsdGVyQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5QbHVnaW5IYWx0ZXJDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRIYWx0UGx1Z2luKE5vZGUqLCBib29sIGlzV2luZG93ZWQsIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luTmFtZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29u
c3QgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUGx1Z2lu
SGFsdGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiA5
MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsNyArMTE4LDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQogICAgICwgbV9zZXNzaW9uU3RvcmFnZVF1b3RhKFN0b3JhZ2VN
YXA6Om5vUXVvdGEpCiAjZW5kaWYKLSAgICAsIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUobnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAsIG1fZWRpdGluZ0JlaGF2aW9yVHlwZShl
ZGl0aW5nQmVoYXZpb3JUeXBlRm9yUGxhdGZvcm0oKSkKICAgICAsIG1fbWF4aW11bUhUTUxQYXJz
ZXJET01UcmVlRGVwdGgoZGVmYXVsdE1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoKQogICAg
ICwgbV9pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChmYWxzZSkKQEAgLTc0OCwxMiArNzQ3LDYg
QEAgdm9pZCBTZXR0aW5nczo6c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aQogICAgIG1fZXhwZXJp
bWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi12b2lkIFNldHRpbmdz
OjpzZXRQbHVnaW5BbGxvd2VkUnVuVGltZSh1bnNpZ25lZCBydW5UaW1lKQotewotICAgIG1fcGx1
Z2luQWxsb3dlZFJ1blRpbWUgPSBydW5UaW1lOwotICAgIG1fcGFnZS0+cGx1Z2luQWxsb3dlZFJ1
blRpbWVDaGFuZ2VkKCk7Ci19Ci0KICNpZiBQTEFURk9STShXSU4pIHx8IChPUyhXSU5ET1dTKSAm
JiBQTEFURk9STShXWCkpCiB2b2lkIFNldHRpbmdzOjpzZXRTaG91bGRVc2VIaWdoUmVzb2x1dGlv
blRpbWVycyhib29sIHNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw5ICszNDQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGlt
ZXJzKCkgeyByZXR1cm4gZ1Nob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzOyB9CiAjZW5kaWYK
IAotICAgICAgICB2b2lkIHNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKHVuc2lnbmVkKTsKLSAgICAg
ICAgdW5zaWduZWQgcGx1Z2luQWxsb3dlZFJ1blRpbWUoKSBjb25zdCB7IHJldHVybiBtX3BsdWdp
bkFsbG93ZWRSdW5UaW1lOyB9Ci0KICAgICAgICAgdm9pZCBzZXRXZWJBdWRpb0VuYWJsZWQoYm9v
bCk7CiAgICAgICAgIGJvb2wgd2ViQXVkaW9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJB
dWRpb0VuYWJsZWQ7IH0KIApAQCAtNDc4LDcgKzQ3NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIHVuc2lnbmVkIG1fc2Vzc2lvblN0b3Jh
Z2VRdW90YTsKICNlbmRpZgotICAgICAgICB1bnNpZ25lZCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1l
OwogICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvclR5cGU7CiAgICAgICAgIHVuc2ln
bmVkIG1fbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGg7CiAgICAgICAgIGJvb2wgbV9pc1Nw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCA6IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDkgKzI3MSw2IEBAIGJvb2wgUGx1
Z2luVmlldzo6c3RhcnQoKQogICAgIGlmIChtX3N0YXR1cyAhPSBQbHVnaW5TdGF0dXNMb2FkZWRT
dWNjZXNzZnVsbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChwYXJlbnRGcmFt
ZSgpLT5wYWdlKCkpCi0gICAgICAgIHBhcmVudEZyYW1lKCktPnBhZ2UoKS0+ZGlkU3RhcnRQbHVn
aW4odGhpcyk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzE4LDkgKzMxNSw2IEBAIHZv
aWQgUGx1Z2luVmlldzo6c3RvcCgpCiAgICAgaWYgKCFtX2lzU3RhcnRlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKHBhcmVudEZyYW1lKCktPnBhZ2UoKSkKLSAgICAgICAgcGFyZW50RnJh
bWUoKS0+cGFnZSgpLT5kaWRTdG9wUGx1Z2luKHRoaXMpOwotCiAgICAgTE9HKFBsdWdpbnMsICJQ
bHVnaW5WaWV3OjpzdG9wKCk6IFN0b3BwaW5nIHBsdWctaW4gJyVzJyIsIG1fcGx1Z2luLT5uYW1l
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+ID4g
c3RyZWFtcyA9IG1fc3RyZWFtczsKQEAgLTg4MCw4ICs4NzQsNiBAQCBQbHVnaW5WaWV3OjpQbHVn
aW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtCiAgICAgLCBtX2xvYWRNYW51YWxseShsb2FkTWFudWFs
bHkpCiAgICAgLCBtX21hbnVhbFN0cmVhbSgwKQogICAgICwgbV9pc0phdmFTY3JpcHRQYXVzZWQo
ZmFsc2UpCi0gICAgLCBtX2lzSGFsdGVkKGZhbHNlKQotICAgICwgbV9oYXNCZWVuSGFsdGVkKGZh
bHNlKQogICAgICwgbV9oYXZlQ2FsbGVkU2V0V2luZG93KGZhbHNlKQogewogICAgIGlmICghbV9w
bHVnaW4pIHsKQEAgLTEyOTAsMTYgKzEyODIsNiBAQCBjb25zdCBjaGFyKiBQbHVnaW5WaWV3Ojp1
c2VyQWdlbnRTdGF0aWMoCiAjZW5kaWYKIAogCi1Ob2RlKiBQbHVnaW5WaWV3Ojpub2RlKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50OwotfQotCi1TdHJpbmcgUGx1Z2luVmlldzo6cGx1
Z2luTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGx1Z2luLT5uYW1lKCk7Ci19Ci0KIHZv
aWQgUGx1Z2luVmlldzo6bGlmZVN1cHBvcnRUaW1lckZpcmVkKFRpbWVyPFBsdWdpblZpZXc+KikK
IHsKICAgICBkZXJlZigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHJl
dmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNkZWZpbmUgUGx1Z2luVmlld19oCiAKICNp
bmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSGFsdGFibGVQbHVnaW4uaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKQEAgLTE0MSw3ICsxNDAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAsIHByaXZhdGUgUGx1Z2luU3RyZWFt
Q2xpZW50CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFBsdWdpbk1hbnVh
bExvYWRlcgotICAgICAgICAgICAgICAgICAgICAgLCBwcml2YXRlIEhhbHRhYmxlUGx1Z2luCiAg
ICAgICAgICAgICAgICAgICAgICAsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShG
cmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBFbGVtZW50KiwgY29uc3QgS1VSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsK
QEAgLTI0NCwxNiArMjQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgICAgICAvLyBIYWx0YWJsZVBsdWdpbgotICAgICAgICB2aXJ0dWFsIHZvaWQg
aGFsdCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzdGFydCgpOwotICAgICAgICB2aXJ0dWFs
IE5vZGUqIG5vZGUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzV2luZG93ZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzV2luZG93ZWQ7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgcGx1
Z2luTmFtZSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgaXNIYWx0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzSGFsdGVkOyB9Ci0gICAgICAgIGJvb2wgaGFzQmVlbkhhbHRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQmVlbkhhbHRlZDsgfQotCiAgICAgICAgIHN0YXRpYyBib29sIGlzQ2FsbGluZ1Bs
dWdpbigpOwogCiAgICAgICAgIGJvb2wgc3RhcnQoKTsKQEAgLTQ2MSw5ICs0NDksNiBAQCBwcml2
YXRlOgogCiAgICAgICAgIGJvb2wgbV9pc0phdmFTY3JpcHRQYXVzZWQ7CiAKLSAgICAgICAgYm9v
bCBtX2lzSGFsdGVkOwotICAgICAgICBib29sIG1faGFzQmVlbkhhbHRlZDsKLQogICAgICAgICBi
b29sIG1faGF2ZUNhbGxlZFNldFdpbmRvdzsKIAogICAgICAgICBzdGF0aWMgUGx1Z2luVmlldyog
c19jdXJyZW50UGx1Z2luVmlldzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
Vmlld05vbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
Vmlld05vbmUuY3BwCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlld05vbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTQgKzEyMCw2IEBAIHZv
aWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KCkKIHsKIH0KIAotdm9pZCBQbHVnaW5W
aWV3OjpoYWx0KCkKLXsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpyZXN0YXJ0KCkKLXsKLX0KLQog
I2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lk
IFBsdWdpblZpZXc6OmhhbmRsZUZvY3VzSW5FdmVudCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAkocmV2aXNpb24gOTIzODQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA2NiwzNCArMTA2Niw0IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFBsdWdpblZpZXc6OnNu
YXBzaG90KCkKICNlbmRpZgogfQogCi12b2lkIFBsdWdpblZpZXc6OmhhbHQoKQotewotICAgIEFT
U0VSVCghbV9pc0hhbHRlZCk7Ci0gICAgQVNTRVJUKG1faXNTdGFydGVkKTsKLQotI2lmICFQTEFU
Rk9STShRVCkKLSAgICAvLyBTaG93IGEgc2NyZWVuc2hvdCBvZiB0aGUgcGx1Zy1pbi4KLSAgICB0
b1JlbmRlcldpZGdldChtX2VsZW1lbnQtPnJlbmRlcmVyKCkpLT5zaG93U3Vic3RpdHV0ZUltYWdl
KHNuYXBzaG90KCkpOwotI2VuZGlmCi0KLSAgICBtX2lzSGFsdGVkID0gdHJ1ZTsKLSAgICBtX2hh
c0JlZW5IYWx0ZWQgPSB0cnVlOwotCi0gICAgc3RvcCgpOwotICAgIHBsYXRmb3JtRGVzdHJveSgp
OwotfQotCi12b2lkIFBsdWdpblZpZXc6OnJlc3RhcnQoKQotewotICAgIEFTU0VSVCghbV9pc1N0
YXJ0ZWQpOwotICAgIEFTU0VSVChtX2lzSGFsdGVkKTsKLQotICAgIC8vIENsZWFyIGFueSBzdWJz
dGl0dXRlIGltYWdlLgotICAgIHRvUmVuZGVyV2lkZ2V0KG1fZWxlbWVudC0+cmVuZGVyZXIoKSkt
PnNob3dTdWJzdGl0dXRlSW1hZ2UoMCk7Ci0KLSAgICBtX2lzSGFsdGVkID0gZmFsc2U7Ci0gICAg
bV9oYXZlVXBkYXRlZFBsdWdpbldpZGdldCA9IGZhbHNlOwotICAgIHN0YXJ0KCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsMTIgKzIxNiw2IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpzdHlsZURpZENoYW5nZShTdHlsZUQKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyV2lkZ2V0OjpzaG93U3Vic3RpdHV0ZUltYWdlKFBhc3NSZWZQdHI8SW1hZ2U+IHBycElt
YWdlKQotewotICAgIG1fc3Vic3RpdHV0ZUltYWdlID0gcHJwSW1hZ2U7Ci0gICAgcmVwYWludCgp
OwotfQotCiB2b2lkIFJlbmRlcldpZGdldDo6bm90aWZ5V2lkZ2V0KFdpZGdldE5vdGlmaWNhdGlv
biBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKG1fd2lkZ2V0KQpAQCAtMjY4LDI1ICsyNjIsMjEg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbgogICAgIGlmIChtX3dp
ZGdldCkgewogICAgICAgICAvLyBUZWxsIHRoZSB3aWRnZXQgdG8gcGFpbnQgbm93LiAgVGhpcyBp
cyB0aGUgb25seSB0aW1lIHRoZSB3aWRnZXQgaXMgYWxsb3dlZAogICAgICAgICAvLyB0byBwYWlu
dCBpdHNlbGYuICBUaGF0IHdheSBpdCB3aWxsIGNvbXBvc2l0ZSBwcm9wZXJseSB3aXRoIHotaW5k
ZXhlZCBsYXllcnMuCi0gICAgICAgIGlmIChtX3N1YnN0aXR1dGVJbWFnZSkKLSAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UobV9zdWJzdGl0dXRlSW1hZ2UuZ2V0KCksIHN0
eWxlKCktPmNvbG9yU3BhY2UoKSwgbV93aWRnZXQtPmZyYW1lUmVjdCgpKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRMb2NhdGlvbiA9IG1fd2lkZ2V0LT5m
cmFtZVJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICAgICAgTGF5b3V0UG9pbnQgcGFpbnRMb2Nh
dGlvbihhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkp
OwotICAgICAgICAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKLQot
ICAgICAgICAgICAgTGF5b3V0U2l6ZSB3aWRnZXRQYWludE9mZnNldCA9IHBhaW50TG9jYXRpb24g
LSB3aWRnZXRMb2NhdGlvbjsKLSAgICAgICAgICAgIC8vIFdoZW4gcGFpbnRpbmcgd2lkZ2V0cyBp
bnRvIGNvbXBvc2l0aW5nIGxheWVycywgdHggYW5kIHR5IGFyZSByZWxhdGl2ZSB0byB0aGUgZW5j
bG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLAotICAgICAgICAgICAgLy8gbm90IHRoZSByb290LiBJ
biB0aGlzIGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJl
IHJvb3QtcmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KLSAgICAgICAgICAgIGlmICgh
d2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpIHsKLSAgICAgICAgICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+dHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBw
YWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QpOwotCi0g
ICAgICAgICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQotICAgICAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXdpZGdldFBhaW50T2Zmc2V0KTsKKyAg
ICAgICAgTGF5b3V0UG9pbnQgd2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdldC0+ZnJhbWVSZWN0KCku
bG9jYXRpb24oKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgcGFpbnRMb2NhdGlvbihhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGFkanVzdGVkUGFp
bnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOworICAgICAgICBMYXlv
dXRSZWN0IHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OworCisgICAgICAgIExheW91dFNpemUg
d2lkZ2V0UGFpbnRPZmZzZXQgPSBwYWludExvY2F0aW9uIC0gd2lkZ2V0TG9jYXRpb247CisgICAg
ICAgIC8vIFdoZW4gcGFpbnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0aW5nIGxheWVycywgdHgg
YW5kIHR5IGFyZSByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLAor
ICAgICAgICAvLyBub3QgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2hpZnQgdGhlIENUTSBhbmQg
YWRqdXN0IHRoZSBwYWludFJlY3QgdG8gYmUgcm9vdC1yZWxhdGl2ZSB0byBmaXggcGx1Zy1pbiBk
cmF3aW5nLgorICAgICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKSB7CisgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsK
KyAgICAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9mZnNldCk7CiAgICAgICAg
IH0KKyAgICAgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3Qp
OworCisgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpCisgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7CiAKICAg
ICAgICAgaWYgKG1fd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7CiAgICAgICAgICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fd2lkZ2V0LmdldCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHJldmlzaW9uIDky
Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpZGdldFBvc2l0aW9u
c1VwZGF0ZWQoKTsKICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Q7CiAKLSAgICB2
b2lkIHNob3dTdWJzdGl0dXRlSW1hZ2UoUGFzc1JlZlB0cjxJbWFnZT4pOwotCiAgICAgdm9pZCBu
b3RpZnlXaWRnZXQoV2lkZ2V0Tm90aWZpY2F0aW9uKTsKICAgICAKICAgICBzdGF0aWMgdm9pZCBz
dXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwpAQCAtNzQsNyArNzIsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgc2V0V2lkZ2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNp
emUmKTsKIAogICAgIFJlZlB0cjxXaWRnZXQ+IG1fd2lkZ2V0OwotICAgIFJlZlB0cjxJbWFnZT4g
bV9zdWJzdGl0dXRlSW1hZ2U7CiAgICAgRnJhbWVWaWV3KiBtX2ZyYW1lVmlldzsKICAgICBJbnRS
ZWN0IG1fY2xpcFJlY3Q7IC8vIFRoZSByZWN0YW5nbGUgbmVlZHMgdG8gcmVtYWluIGNvcnJlY3Qg
YWZ0ZXIgc2Nyb2xsaW5nLCBzbyBpdCBpcyBzdG9yZWQgaW4gY29udGVudCB2aWV3IGNvb3JkaW5h
dGVzLCBhbmQgbm90IGNsaXBwZWQgdG8gd2luZG93LgogICAgIGludCBtX3JlZkNvdW50OwpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDkyNDIyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wOC0wNCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzI5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRlbGV0
ZWQgZmlsZXMgZnJvbSBYY29kZSBwcm9qZWN0LgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTEtMDctMjggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBZGQgc3FsIHRvIHN2bjppZ25vcmUgYW5kIHJlbW92ZSBhcHAu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEsNiBAQAogCQkwNjVBRDVB
NDBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjVBRDVBMjBCMEMzMkM3MDA1QTJC
MUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQubW0gKi87IH07CiAJCTA2NjkzRERDMEJGQkE4NTIw
MDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NjkzRERBMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNw
ZWN0b3JDbGllbnQuaCAqLzsgfTsKIAkJMDY2OTNEREQwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYklu
c3BlY3RvckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA2NjkzRERCMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQubW0g
Ki87IH07Ci0JCTBBMkQ4N0ZEMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBMkQ4
N0ZCMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLzsgfTsKLQkJ
MEEyRDg3RkUxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBMkQ4N0ZDMTA3QUY1
MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0gKi87IH07CiAJCTBBQjc1MjM3
MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBQjc1MjM1
MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8u
aCAqLzsgfTsKIAkJMEFCNzUyMzgwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFp
bmVyQ2hlY2tDb250ZXh0SW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRh
aW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi87IH07CiAJCTBBQ0U5MTczMTBGRTQ3RTMwMDk2QTQ1
RiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEFDRTkxNzIxMEZFNDdFMzAwOTZBNDVGIC8qIE9wZW5HTC5mcmFtZXdv
cmsgKi87IH07CkBAIC0zODksOCArMzg3LDYgQEAKIAkJMDY1QUQ1QTIwQjBDMzJDNzAwNUEyQjFE
IC8qIFdlYkNvbnRleHRNZW51Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51Q2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNjY5M0REQTBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDY2OTNEREIwQkZCQTg1MjAwMjE2MDcy
IC8qIFdlYkluc3BlY3RvckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkluc3BlY3RvckNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEEyRDg3RkIxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbHVnaW5IYWx0ZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEEyRDg3RkMxMDdBRjUyQjAwQ0RERUUz
IC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEFCNzUyMzUwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFp
bmVyQ2hlY2tDb250ZXh0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFp
bmVyQ2hlY2tDb250ZXh0SW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEFDRTkxNzIxMEZFNDdFMzAwOTZBNDVGIC8qIE9wZW5HTC5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IE9wZW5HTC5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwpAQCAtMTMyMiw4ICsxMzE4LDYgQEAKIAkJCQk4NDcyM0JFNDA1NkQ3MTlF
MDA0NEJGRUEgLyogV2ViS2V5R2VuZXJhdG9yLm1tICovLAogCQkJCTFBQTg3OUI0MTFDQkU5QkYw
MDNDNjY0RiAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLywKIAkJCQkxQUE4NzlCNTExQ0JF
OUJGMDAzQzY2NEYgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tICovLAotCQkJCTBBMkQ4N0ZC
MTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLywKLQkJCQkwQTJE
ODdGQzEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tICovLAogCQkJ
CUE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLywKIAkJ
CQlBNURFRkMwODExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5o
ICovLAogCQkJCUE1REVGQzA5MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpblBy
aXZhdGUuaCAqLywKQEAgLTE1NzUsNyArMTU2OSw2IEBACiAJCQkJOTM5ODEwQjAwODI0QkYwMTAw
OERGMDM4IC8qIFdlYlBsdWdpbkNvbnRhaW5lclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzOTgxMDM3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5Mzk4MTAzODA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luRGF0YWJh
c2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBBMkQ4N0ZEMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQ
bHVnaW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDM5MDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJQbHVnaW5QYWNrYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjVGODgx
NTA5Rjk3RThBMDA0MjNBNDAgLyogV2ViUGx1Z2luUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE3N0IwMkUwRUU3NzMwNTAwQzhBMUY5IC8qIFdlYlBsdWdpblJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTk2Nyw3ICsxOTYwLDYgQEAKIAkJCQk5Mzk4MTEyNjA4MjRCRjAxMDA4REYw
MzggLyogV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4
MTBEQTA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udHJvbGxlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzOTgxMERCMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5EYXRhYmFzZS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTBBMkQ4N0ZFMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVn
aW5IYWx0ZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBEQzA4MjRCRjAxMDA4
REYwMzggLyogV2ViUGx1Z2luUGFja2FnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNzdCMDJG
MEVFNzczMDUwMEM4QTFGOSAvKiBXZWJQbHVnaW5SZXF1ZXN0Lm0gaW4gU291cmNlcyAqLywKIAkJ
CQkyMjQxMDBGOTA5MTgxOTAxMDBEMkQyNjYgLyogV2ViUGx1Z2luc1ByaXZhdGUubSBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gOTI0MjIpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAx
MS0wOC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBQbHVnaW5IYWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1NzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlIHBsdWctaW4gaGFsdGVyIGFuZCBhc3NvY2lhdGVkIGNsYXNzZXMu
CisKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgaW5pdFdpdGhGcmFtZTpwbHVnaW5QYWNrYWdlOlVSTDpi
YXNlVVJMOk1JTUVUeXBlOmF0dHJpYnV0ZUtleXM6YXR0cmlidXRlVmFsdWVzOmxvYWRNYW51YWxs
eTplbGVtZW50OldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3IHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgc3RvcF0p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZl
cmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTp1c2VzRG9jdW1l
bnRWaWV3czpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMS0wOC0wMyAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGluY29ycmVjdCBjaGVj
a3MgZm9yIEhUTUxNZWRpYUVsZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCShyZXZpc2lvbiA5MjM4NCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIH0KIAotY2xhc3MgV2ViSGFsdGFibGVQbHVnaW47
Ci0KIC8vIEFsc28gZGVjbGFyZWQgaW4gV2ViQ29yZS9XaWRnZXRNYWMubW0KIEBpbnRlcmZhY2Ug
TlNWaWV3IChXaWRnZXQpCiAtICh2b2lkKXZpc2libGVSZWN0RGlkQ2hhbmdlOwpAQCAtNjgsOCAr
NjYsNiBAQCBAaW50ZXJmYWNlIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgOiBOCiAgICAgQk9P
TCBfaGFzRm9jdXM7CiAgICAgQk9PTCBfaXNDb21wbGV0ZWx5T2JzY3VyZWQ7CiAgICAgQk9PTCBf
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOwotICAgIEJPT0wgX2lzSGFsdGVkOwotICAgIEJPT0wg
X2hhc0JlZW5IYWx0ZWQ7CiAgICAgQk9PTCBfc25hcHNob3R0aW5nOwogICAgIAogICAgIFJlZlB0
cjxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudD4gX2VsZW1lbnQ7CkBAIC03OCw4ICs3NCw2IEBA
IEBpbnRlcmZhY2UgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyA6IE4KICAgICBSZXRhaW5QdHI8
TlNVUkw+IF9zb3VyY2VVUkw7CiAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9jYWNoZWRTbmFwc2hv
dDsKICAgICAKLSAgICBPd25QdHI8V2ViSGFsdGFibGVQbHVnaW4+IF9oYWx0YWJsZTsKLSAgICAK
ICAgICBOU1RyYWNraW5nUmVjdFRhZyBfdHJhY2tpbmdUYWc7CiB9CiAKQEAgLTEyMiwxMSArMTE2
LDYgQEAgQGludGVyZmFjZSBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IDogTgogLSAodm9pZClz
dGFydDsKIC0gKHZvaWQpc3RvcDsKIAotLSAodm9pZCloYWx0OwotLSAodm9pZClyZXN1bWVGcm9t
SGFsdDsKLS0gKEJPT0wpaXNIYWx0ZWQ7Ci0tIChCT09MKWhhc0JlZW5IYWx0ZWQ7Ci0KIC0gKHZv
aWQpYWRkV2luZG93T2JzZXJ2ZXJzOwogLSAodm9pZClyZW1vdmVXaW5kb3dPYnNlcnZlcnM7CiAt
IChCT09MKXNob3VsZENsaXBPdXRQbHVnaW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiA5
MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IYWx0YWJsZVBsdWdp
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rp
b25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC03MSw0OCArNzAs
NiBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgQ2xlYXJTdWJzdGl0CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1jbGFzcyBXZWJIYWx0YWJsZVBsdWdpbiA6IHB1YmxpYyBIYWx0
YWJsZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgV2ViSGFsdGFibGVQbHVnaW4oV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldyogdmlldykKLSAgICAgICAgOiBtX3ZpZXcodmlldykKLSAgICB7Ci0gICAg
fQotICAgIAotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaGFsdCgpOwotICAgIHZpcnR1YWwg
dm9pZCByZXN0YXJ0KCk7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzV2luZG93ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBwbHVnaW5O
YW1lKCkgY29uc3Q7Ci0KLSAgICBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3KiBtX3ZpZXc7Ci19
OwotCi12b2lkIFdlYkhhbHRhYmxlUGx1Z2luOjpoYWx0KCkKLXsKLSAgICBbbV92aWV3IGhhbHRd
OwotfQotCi12b2lkIFdlYkhhbHRhYmxlUGx1Z2luOjpyZXN0YXJ0KCkKLXsgCi0gICAgW21fdmll
dyByZXN1bWVGcm9tSGFsdF07Ci19Ci0gICAgCi1Ob2RlKiBXZWJIYWx0YWJsZVBsdWdpbjo6bm9k
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3ZpZXcgZWxlbWVudF07Ci19Ci0KLWJvb2wgV2Vi
SGFsdGFibGVQbHVnaW46OmlzV2luZG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotU3RyaW5nIFdlYkhhbHRhYmxlUGx1Z2luOjpwbHVnaW5OYW1lKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gW1ttX3ZpZXcgcGx1Z2luUGFja2FnZV0gcGx1Z2luSW5mb10ubmFtZTsKLX0KLQog
QGltcGxlbWVudGF0aW9uIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcKIAogKyAodm9pZClpbml0
aWFsaXplCkBAIC0xNjMsNyArMTIwLDYgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lCiAgICAgICAgIF9tb2RlID0gTlBfRU1CRUQ7CiAgICAgCiAgICAgX2xvYWRNYW51YWxseSA9
IGxvYWRNYW51YWxseTsKLSAgICBfaGFsdGFibGUgPSBhZG9wdFB0cihuZXcgV2ViSGFsdGFibGVQ
bHVnaW4oc2VsZikpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC00NTQsNyArNDEwLDYgQEAg
LSAodm9pZClzdGFydAogICAgIH0KICAgICAKICAgICBfaXNTdGFydGVkID0gWUVTOwotICAgIHBh
Z2UtPmRpZFN0YXJ0UGx1Z2luKF9oYWx0YWJsZS5nZXQoKSk7CiAKICAgICBbW3NlbGYgd2ViVmll
d10gYWRkUGx1Z2luSW5zdGFuY2VWaWV3OnNlbGZdOwogCkBAIC00ODQsMTEgKzQzOSw2IEBAIC0g
KHZvaWQpc3RvcAogICAgIGlmICghX2lzU3RhcnRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgd2ViRnJhbWVdKSkgewotICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5kaWRTdG9wUGx1
Z2luKF9oYWx0YWJsZS5nZXQoKSk7Ci0gICAgfQotICAgIAogICAgIF9pc1N0YXJ0ZWQgPSBOTzsK
ICAgICAKICAgICBbW3NlbGYgd2ViVmlld10gcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3OnNlbGZd
OwpAQCAtNTAyLDYxICs0NTIsNiBAQCAtICh2b2lkKXN0b3AKICAgICBbc2VsZiBkZXN0cm95UGx1
Z2luXTsKIH0KIAotLSAodm9pZCloYWx0Ci17Ci0gICAgQVNTRVJUKCFfaXNIYWx0ZWQpOwotICAg
IEFTU0VSVChfaXNTdGFydGVkKTsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW3NlbGYgZWxlbWVu
dF07Ci0jaWZuZGVmIEJVSUxESU5HX09OX0xFT1BBUkQKLSAgICBDR0ltYWdlUmVmIGNnSW1hZ2Ug
PSBDR0ltYWdlUmV0YWluKFtjb3JlKFtzZWxmIHdlYkZyYW1lXSktPm5vZGVJbWFnZShlbGVtZW50
KS5nZXQoKSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KTsKLSNlbHNlCi0gICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IGltYWdlUmVmKEFkb3B0
Q0YsIENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgoQ0ZEYXRhUmVmKVtjb3JlKFtzZWxmIHdl
YkZyYW1lXSktPm5vZGVJbWFnZShlbGVtZW50KS5nZXQoKSBUSUZGUmVwcmVzZW50YXRpb25dLCAw
KSk7Ci0gICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJ
bmRleChpbWFnZVJlZi5nZXQoKSwgMCwgMCk7Ci0jZW5kaWYKLSAgICBBU1NFUlQoY2dJbWFnZSk7
Ci0gICAgCi0gICAgLy8gQml0bWFwSW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQgaW4gQ0dJ
bWFnZSBvbiBkZXN0cnVjdGlvbi4KLSAgICBSZWZQdHI8SW1hZ2U+IG5vZGVJbWFnZSA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoY2dJbWFnZSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQtPnJlbmRlcmVyKCkp
OwotICAgIHRvUmVuZGVyV2lkZ2V0KGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5zaG93U3Vic3RpdHV0
ZUltYWdlKG5vZGVJbWFnZSk7Ci0gICAgW3NlbGYgc3RvcF07Ci0gICAgX2lzSGFsdGVkID0gWUVT
OyAgCi0gICAgX2hhc0JlZW5IYWx0ZWQgPSBZRVM7Ci19Ci0KLS0gKHZvaWQpX2NsZWFyU3Vic3Rp
dHV0ZUltYWdlCi17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFtzZWxmIGVsZW1lbnRdOwotICAg
IGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICB0b1JlbmRlcldpZGdldChyZW5kZXJlciktPnNob3dTdWJz
dGl0dXRlSW1hZ2UoMCk7Ci19Ci0KLS0gKHZvaWQpcmVzdW1lRnJvbUhhbHQKLXsKLSAgICBBU1NF
UlQoX2lzSGFsdGVkKTsKLSAgICBBU1NFUlQoIV9pc1N0YXJ0ZWQpOwotICAgIFtzZWxmIHN0YXJ0
XTsKLSAgICAKLSAgICBpZiAoX2lzU3RhcnRlZCkKLSAgICAgICAgX2lzSGFsdGVkID0gTk87Ci0g
ICAgCi0gICAgQVNTRVJUKFtzZWxmIGVsZW1lbnRdLT5yZW5kZXJlcigpKTsKLSAgICAvLyBGSVhN
RSA3NDE3NDg0OiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgcGx1Zy1pbnMgbm90IGRyYXdpbmcg
aW1tZWRpYXRlbHkuIFdlJ2QgbGlrZSB0byBkZXRlY3Qgd2hlbiB0aGUKLSAgICAvLyBwbHVnLWlu
IGFjdHVhbGx5IGRyYXdzIGluc3RlYWQgb2YganVzdCBhc3N1bWluZyBpdCB3aWxsIGRvIHNvIHdp
dGhpbiAwLjUgc2Vjb25kcyBvZiBiZWluZyByZXN0YXJ0ZWQuCi0gICAgW3NlbGYgcGVyZm9ybVNl
bGVjdG9yOkBzZWxlY3RvcihfY2xlYXJTdWJzdGl0dXRlSW1hZ2UpIHdpdGhPYmplY3Q6bmlsIGFm
dGVyRGVsYXk6Q2xlYXJTdWJzdGl0dXRlSW1hZ2VEZWxheV07Ci19Ci0KLS0gKEJPT0wpaXNIYWx0
ZWQKLXsKLSAgICByZXR1cm4gX2lzSGFsdGVkOwotfQotCiAtIChCT09MKXNob3VsZENsaXBPdXRQ
bHVnaW4KIHsKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKQEAgLTU5Niwx
MSArNDkxLDYgQEAgLSAodm9pZCljbGVhckNhY2hlZFNuYXBzaG90CiAgICAgX2NhY2hlZFNuYXBz
aG90LmNsZWFyKCk7CiB9CiAKLS0gKEJPT0wpaGFzQmVlbkhhbHRlZAotewotICAgIHJldHVybiBf
aGFzQmVlbkhhbHRlZDsKLX0KLQogLSAodm9pZCl2aWV3V2lsbE1vdmVUb1dpbmRvdzooTlNXaW5k
b3cgKiluZXdXaW5kb3cKIHsKICAgICAvLyBXZSBtdXN0IHJlbW92ZSB0aGUgdHJhY2tpbmcgcmVj
dCBiZWZvcmUgd2UgbW92ZSB0byB0aGUgbmV3IHdpbmRvdy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5o
CShyZXZpc2lvbiA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdpbkhhbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2Vi
Q29yZS9QbHVnaW5IYWx0ZXJDbGllbnQuaD4KLSNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBOb2RlOwotfQotCi1AY2xhc3MgV2ViVmlldzsK
LQotY2xhc3MgV2ViUGx1Z2luSGFsdGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkhh
bHRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KFdlYlZpZXcg
Kik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZEhhbHRQbHVnaW4oV2ViQ29yZTo6Tm9k
ZSosIGJvb2wsIGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGVu
YWJsZWQoKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAgV2ViVmlldyAqbV93ZWJWaWV3Owot
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0JKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0KLSNpbXBv
cnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hpbmcuaCIKLSNpbXBvcnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZv
cm1TdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVdlYlBsdWdpbkhhbHRl
ckNsaWVudDo6V2ViUGx1Z2luSGFsdGVyQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCi0gICAgOiBt
X3dlYlZpZXcod2ViVmlldykKLXsKLSAgICBBU1NFUlRfQVJHKHdlYlZpZXcsIHdlYlZpZXcpOwot
fQotCi1ib29sIFdlYlBsdWdpbkhhbHRlckNsaWVudDo6c2hvdWxkSGFsdFBsdWdpbihOb2RlKiBw
bHVnaW5Ob2RlLCBib29sIGlzV2luZG93ZWQsIGNvbnN0IFN0cmluZyYgcGx1Z2luTmFtZSkgY29u
c3QKLXsKLSAgICBBU1NFUlRfQVJHKHBsdWdpbk5vZGUsIHBsdWdpbk5vZGUpOwotICAgIHJldHVy
biBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oTk8sIG1fd2ViVmlldywgQHNlbGVjdG9y
KHdlYlZpZXc6c2hvdWxkSGFsdFBsdWdpbjppc1dpbmRvd2VkOnBsdWdpbk5hbWU6KSwga2l0KHBs
dWdpbk5vZGUpLCBpc1dpbmRvd2VkLCAoTlNTdHJpbmcgKilwbHVnaW5OYW1lKTsKLX0KLQotYm9v
bCBXZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OmVuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBb
W21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZp
ZXc6c2hvdWxkSGFsdFBsdWdpbjppc1dpbmRvd2VkOnBsdWdpbk5hbWU6KV07Ci19CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNiBAQAog
I2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQXVk
aW9FbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2Vi
S2l0V2ViR0xFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCIKLSNkZWZp
bmUgV2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UGx1Z2lu
QWxsb3dlZFJ1blRpbWUiCiAjZGVmaW5lIFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5IEAiV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFNwYXRpYWxOYXZp
Z2F0aW9uRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24g
OTIzODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjcsNyArMzY3LDYgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0U2hvd1JlcGFpbnRDb3Vu
dGVyUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwg
ICBXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkUHJlZmVy
ZW5jZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDo0XSwgV2Vi
S2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpOT10sICBXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5LApAQCAtMTMzMywxNiArMTMzMiw2IEBAIC0gKHZvaWQpc2V0QWNjZWxlcmF0ZWQyZENhbnZh
c0VuYWJsZWQ6KEIKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktp
dEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKLS0gKHVuc2ln
bmVkKXBsdWdpbkFsbG93ZWRSdW5UaW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9pbnRlZ2VyVmFs
dWVGb3JLZXk6V2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5XTsKLX0KLQot
LSAodm9pZClzZXRQbHVnaW5BbGxvd2VkUnVuVGltZToodW5zaWduZWQpYWxsb3dlZFJ1blRpbWUK
LXsKLSAgICByZXR1cm4gW3NlbGYgX3NldEludGVnZXJWYWx1ZTphbGxvd2VkUnVuVGltZSBmb3JL
ZXk6V2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5XTsKLX0KLQogLSAoQk9P
TClpc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleV07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDkgKzEyNiw2IEBAIEBpbnRl
cmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAtIChCT09MKWV4cGVyaW1lbnRhbE5v
dGlmaWNhdGlvbnNFbmFibGVkOwogLSAodm9pZClzZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25z
RW5hYmxlZDooQk9PTClub3RpZmljYXRpb25zRW5hYmxlZDsKIAotLSAodW5zaWduZWQpcGx1Z2lu
QWxsb3dlZFJ1blRpbWU7Ci0tICh2b2lkKXNldFBsdWdpbkFsbG93ZWRSdW5UaW1lOih1bnNpZ25l
ZClhbGxvd2VkUnVuVGltZTsKLQogLSAoQk9PTClpc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQ7CiAt
ICh2b2lkKXNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQ6KEJPT0wpZmxhZzsKIApJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkx
LDYgQEAKICNpbXBvcnQgIldlYlBhbmVsQXV0aGVudGljYXRpb25IYW5kbGVyLmgiCiAjaW1wb3J0
ICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIldlYlBsdWdpbkRhdGFiYXNlLmgi
Ci0jaW1wb3J0ICJXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCIKICNpbXBvcnQgIldlYlBvbGljeURl
bGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCIKICNpbXBvcnQg
IldlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIgpAQCAtNzQ0LDcgKzc0Myw2IEBAIC0gKHZvaWQpX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGll
bnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGll
bnQgPSBuZXcgV2ViRHJhZ0NsaWVudChzZWxmKTsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JD
bGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwotICAgIHBhZ2VDbGllbnRzLnBs
dWdpbkhhbHRlckNsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQoc2Vs
ZikpOwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgcGFnZUNsaWVu
dHMuZ2VvbG9jYXRpb25DbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoc2VsZik7CiAj
ZW5kaWYKQEAgLTE1NjMsNyArMTU2MSw2IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDoo
V2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2lu
ZyhbcHJlZmVyZW5jZXMgY2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZ10pOyAgICAKICAgICBz
ZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhbcHJlZmVyZW5jZXMgc2hvd0RlYnVnQm9yZGVy
c10pOwogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoW3ByZWZlcmVuY2VzIHNo
b3dSZXBhaW50Q291bnRlcl0pOwotICAgIHNldHRpbmdzLT5zZXRQbHVnaW5BbGxvd2VkUnVuVGlt
ZShbcHJlZmVyZW5jZXMgcGx1Z2luQWxsb3dlZFJ1blRpbWVdKTsKICAgICBzZXR0aW5ncy0+c2V0
V2ViQXVkaW9FbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJBdWRpb0VuYWJsZWRdKTsKICAgICBzZXR0
aW5ncy0+c2V0V2ViR0xFbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJHTEVuYWJsZWRdKTsKICAgICBz
ZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGFjY2Vs
ZXJhdGVkMmRDYW52YXNFbmFibGVkXSk7CkBAIC0yNTM5LDU5ICsyNTM2LDYgQEAgLSAoQk9PTClf
aW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheQogICAgIHJldHVybiBfcHJpdmF0ZS0+aW5j
bHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7CiB9CiAK
LSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXN0YXRpYyBXZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3ICpfcGx1Z2luVmlld0Zvck5vZGUoRE9NTm9kZSAqbm9kZSkKLXsKLSAgICBpZiAo
IW5vZGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgTm9kZSogY29yZU5vZGUgPSBj
b3JlKG5vZGUpOwotICAgIGlmICghY29yZU5vZGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmVOb2RlLT5yZW5kZXJlcigpOwotICAg
IGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIAotICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIp
LT53aWRnZXQoKTsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgp
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIE5TVmlldyAqdmlldyA9IHdpZGdldC0+
cGxhdGZvcm1XaWRnZXQoKTsKLSAgICBpZiAoIVt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAg
ICByZXR1cm4gKFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgKil2aWV3OwotfQotI2VuZGlmIC8v
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotCi0rIChCT09MKV9pc05vZGVIYWx0ZWRQbHVn
aW46KERPTU5vZGUgKilub2RlCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgcmV0dXJuIFtfcGx1Z2luVmlld0Zvck5vZGUobm9kZSkgaXNIYWx0ZWRdOwotI2Vsc2UKLSAg
ICByZXR1cm4gWUVTOwotI2VuZGlmCi19Ci0KLSsgKEJPT0wpX2hhc1BsdWdpbkZvck5vZGVCZWVu
SGFsdGVkOihET01Ob2RlICopbm9kZQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotICAgIHJldHVybiBbX3BsdWdpblZpZXdGb3JOb2RlKG5vZGUpIGhhc0JlZW5IYWx0ZWRdOwot
I2Vsc2UKLSAgICByZXR1cm4gWUVTOwotI2VuZGlmCi19Ci0rICh2b2lkKV9yZXN0YXJ0SGFsdGVk
UGx1Z2luRm9yTm9kZTooRE9NTm9kZSAqKW5vZGUKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBbX3Bs
dWdpblZpZXdGb3JOb2RlKG5vZGUpIHJlc3VtZUZyb21IYWx0XTsKLSNlbmRpZgotfQotCiAtIChO
U1Bhc3RlYm9hcmQgKilfaW5zZXJ0aW9uUGFzdGVib2FyZAogewogICAgIHJldHVybiBfcHJpdmF0
ZSA/IF9wcml2YXRlLT5pbnNlcnRpb25QYXN0ZWJvYXJkIDogbmlsOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gOTIzODQpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwMywxMSArNTAzLDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAt
ICh2b2lkKV9zZXRJbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdU
b0JpdG1hcDooQk9PTClmbGFnOwogLSAoQk9PTClfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGlu
Z0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7CiAKLS8vIFNQSSBmb3IgUGx1Z2luSGFsdGVyCi0r
IChCT09MKV9pc05vZGVIYWx0ZWRQbHVnaW46KERPTU5vZGUgKilub2RlOwotKyAoQk9PTClfaGFz
UGx1Z2luRm9yTm9kZUJlZW5IYWx0ZWQ6KERPTU5vZGUgKilub2RlOwotKyAodm9pZClfcmVzdGFy
dEhhbHRlZFBsdWdpbkZvck5vZGU6KERPTU5vZGUgKilub2RlOwotCiAvLyBXaGljaCBwYXN0ZWJv
YXJkIHRleHQgaXMgY29taW5nIGZyb20gaW4gZWRpdGluZyBkZWxlZ2F0ZSBtZXRob2RzIHN1Y2gg
YXMgc2hvdWxkSW5zZXJ0Tm9kZS4KIC0gKE5TUGFzdGVib2FyZCAqKV9pbnNlcnRpb25QYXN0ZWJv
YXJkOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQyMikKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEx
LTA4LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgcGx1Zy1pbiBoYWx0ZXIgYW5kIGFzc29jaWF0ZWQgY2xhc3Nlcy4K
KworICAgICAgICAqIEludGVyZmFjZXMvSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsOgor
ICAgICAgICAqIEludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRl
cmZhY2VzL1dlYktpdC5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFs
dGVyQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVn
aW5IYWx0ZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL0ludGVy
ZmFjZXMudmNwcm9qOgorICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvajoKKyAg
ICAgICAgKiBXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0
aW5ncyk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpjbG9zZSk6
CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAgICAgKFdlYlZpZXc6OnVu
dXNlZDEpOgorICAgICAgICAoV2ViVmlldzo6dW51c2VkMik6CisgICAgICAgIChXZWJWaWV3Ojp1
bnVzZWQzKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTEtMDgtMDQgIEplZmYgTWlsbGVy
ICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZXR0aW5nIGFu
ZCBnZXR0aW5nIHdoZXRoZXIgQVZGb3VuZGF0aW9uIGlzIGVuYWJsZWQgdG8gSVdlYlByZWZlcmVu
Y2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aAkocmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDggKzEzNiw2IEBACiAKICNkZWZpbmUg
V2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5ICJXZWJLaXRVc2VIaWdo
UmVzb2x1dGlvblRpbWVycyIKIAotI2RlZmluZSBXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVBy
ZWZlcmVuY2VLZXkgIldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lIgotCiAjZGVmaW5lIFdlYktp
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkIgogCiAjZGVmaW5lIFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
UHJlZmVyZW5jZUtleSAiV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQiCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA5MjM4NCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2
LDkgKzI1Niw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2UKIAog
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VIaWdoUmVz
b2x1dGlvblRpbWVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHBsdWdpbkFsbG93ZWRSdW5UaW1lKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJXUiKSwgbnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXkpLCBwbHVnaW5BbGxvd2VkUnVu
VGltZS5nZXQoKSk7Ci0KICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKICAgICAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwpAQCAtMTQ5MCwxOCArMTQ4Nyw2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJl
ZmVyZW5jZXMKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6
c2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUoVUlOVCBhbGxvd2VkUnVuVGltZSkKLXsKLSAgICBzZXRJ
bnRlZ2VyVmFsdWUoQ0ZTVFIoV2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5
KSwgYWxsb3dlZFJ1blRpbWUpOwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjpwbHVnaW5BbGxvd2VkUnVuVGltZShVSU5UKiBhbGxvd2VkUnVuVGltZSkKLXsK
LSAgICAqYWxsb3dlZFJ1blRpbWUgPSBpbnRlZ2VyVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0UGx1
Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5KSk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0K
IEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFByZWZlcmVuY2VGb3JUZXN0KEJTVFIga2V5LCBC
U1RSIHZhbHVlKQogewogICAgIGlmICghU3lzU3RyaW5nTGVuKGtleSkgfHwgIVN5c1N0cmluZ0xl
bih2YWx1ZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gOTIzODQpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcs
NiBAQAogI2luY2x1ZGUgIldlYk11dGFibGVVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViTm90
aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0j
aW5jbHVkZSAiV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXMuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRXb3JsZC5oIgogI2luY2x1ZGUgInJlc291cmNlLmgi
CkBAIC03MDgsNyArNzA3LDYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpj
bG9zZQogICAgIHNldFJlc291cmNlTG9hZERlbGVnYXRlKDApOwogICAgIHNldFVJRGVsZWdhdGUo
MCk7CiAgICAgc2V0Rm9ybURlbGVnYXRlKDApOwotICAgIHNldFBsdWdpbkhhbHRlckRlbGVnYXRl
KDApOwogCiAgICAgaWYgKG1fd2ViSW5zcGVjdG9yKQogICAgICAgICBtX3dlYkluc3BlY3Rvci0+
d2ViVmlld0Nsb3NlZCgpOwpAQCAtMjY0Myw3ICsyNjQxLDYgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojppbml0VwogICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5l
dyBXZWJFZGl0b3JDbGllbnQodGhpcyk7CiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IG5l
dyBXZWJEcmFnQ2xpZW50KHRoaXMpOwogICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9
IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7Ci0gICAgcGFnZUNsaWVudHMucGx1Z2luSGFs
dGVyQ2xpZW50ID0gYWRvcHRQdHIobmV3IFdlYlBsdWdpbkhhbHRlckNsaWVudCh0aGlzKSk7CiAj
aWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBwYWdlQ2xpZW50cy5nZW9s
b2NhdGlvbkNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudCh0aGlzKTsKICNlbmRpZgpA
QCAtNjQ2MCw4NSArNjQ1NywyMiBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoCiB9CiAjZW5kaWYKIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpz
ZXRQbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqIGQpCitIUkVT
VUxUIFdlYlZpZXc6OnVudXNlZDEoKQogewotICAgIG1fcGx1Z2luSGFsdGVyRGVsZWdhdGUgPSBk
OwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OnBsdWdpbkhhbHRlckRlbGVnYXRlKElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSoqIGQpCi17
Ci0gICAgaWYgKCFkKQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgaWYgKCFtX3Bs
dWdpbkhhbHRlckRlbGVnYXRlKQotICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgcmV0dXJu
IG1fcGx1Z2luSGFsdGVyRGVsZWdhdGUuY29weVJlZlRvKGQpOwotfQotCi1zdGF0aWMgUGx1Z2lu
VmlldyogcGx1Z2luVmlld0Zvck5vZGUoSURPTU5vZGUqIGRvbU5vZGUpCi17Ci0gICAgQ09NUHRy
PERPTU5vZGU+IHdlYktpdERPTU5vZGUoUXVlcnksIGRvbU5vZGUpOwotICAgIGlmICghd2ViS2l0
RE9NTm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBOb2RlKiBub2RlID0gd2ViS2l0RE9N
Tm9kZS0+bm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRl
cmVyIHx8ICFyZW5kZXJlci0+aXNXaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBX
aWRnZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7Ci0gICAg
aWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNQbHVnaW5WaWV3KCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPih3aWRnZXQpOwotfQotCi1I
UkVTVUxUIFdlYlZpZXc6OmlzTm9kZUhhbHRlZFBsdWdpbihJRE9NTm9kZSogZG9tTm9kZSwgQk9P
TCogcmVzdWx0KQotewotICAgIGlmICghZG9tTm9kZSB8fCAhcmVzdWx0KQotICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwotCi0gICAgKnJlc3VsdCA9IEZBTFNFOwotCi0gICAgUGx1Z2luVmlldyog
dmlldyA9IHBsdWdpblZpZXdGb3JOb2RlKGRvbU5vZGUpOwotICAgIGlmICghdmlldykKLSAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKLQotICAgICpyZXN1bHQgPSB2aWV3LT5pc0hhbHRlZCgpOwotICAg
IHJldHVybiBTX09LOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBFX0ZB
SUw7CiB9CiAKLUhSRVNVTFQgV2ViVmlldzo6cmVzdGFydEhhbHRlZFBsdWdpbkZvck5vZGUoSURP
TU5vZGUqIGRvbU5vZGUpCitIUkVTVUxUIFdlYlZpZXc6OnVudXNlZDIoKQogewotICAgIGlmICgh
ZG9tTm9kZSkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgIFBsdWdpblZpZXcqIHZp
ZXcgPSBwbHVnaW5WaWV3Rm9yTm9kZShkb21Ob2RlKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAg
IHJldHVybiBFX0ZBSUw7Ci0KLSAgICB2aWV3LT5yZXN0YXJ0KCk7Ci0gICAgcmV0dXJuIFNfT0s7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAotSFJF
U1VMVCBXZWJWaWV3OjpoYXNQbHVnaW5Gb3JOb2RlQmVlbkhhbHRlZChJRE9NTm9kZSogZG9tTm9k
ZSwgQk9PTCogcmVzdWx0KQorSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQzKCkKIHsKLSAgICBpZiAo
IWRvbU5vZGUgfHwgIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgICpy
ZXN1bHQgPSBGQUxTRTsKLQotICAgIFBsdWdpblZpZXcqIHZpZXcgPSBwbHVnaW5WaWV3Rm9yTm9k
ZShkb21Ob2RlKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAg
ICAqcmVzdWx0ID0gdmlldy0+aGFzQmVlbkhhbHRlZCgpOwotICAgIHJldHVybiBTX09LOworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQg
V2ViVmlldzo6c2V0R2VvbG9jYXRpb25Qcm92aWRlcihJV2ViR2VvbG9jYXRpb25Qcm92aWRlciog
bG9jYXRpb25Qcm92aWRlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDkyMzg0KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDIsOCAr
ODAyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
ZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tR3JvdXAoQlNUUiBncm91cE5hbWUsIElXZWJTY3JpcHRX
b3JsZCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBbGxV
c2VyQ29udGVudEZyb21Hcm91cChCU1RSIGdyb3VwTmFtZSk7CiAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UGx1Z2luSGFsdGVyRGVsZWdhdGUoSVdlYlBsdWdpbkhh
bHRlckRlbGVnYXRlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBs
dWdpbkhhbHRlckRlbGVnYXRlKElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSoqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMSgpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQyKCk7CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaW52YWxpZGF0ZUJhY2tpbmdTdG9yZShjb25zdCBSRUNUKik7CiAK
QEAgLTEwNTksNyArMTA1OSw2IEBAIHByb3RlY3RlZDoKICAgICBDT01QdHI8SVdlYkhpc3RvcnlE
ZWxlZ2F0ZT4gbV9oaXN0b3J5RGVsZWdhdGU7CiAgICAgQ09NUHRyPFdlYlByZWZlcmVuY2VzPiBt
X3ByZWZlcmVuY2VzOwogICAgIENPTVB0cjxXZWJJbnNwZWN0b3I+IG1fd2ViSW5zcGVjdG9yOwot
ICAgIENPTVB0cjxJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGU+IG1fcGx1Z2luSGFsdGVyRGVsZWdh
dGU7CiAgICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBtX2dlb2xvY2F0aW9uUHJv
dmlkZXI7CiAKICAgICBib29sIG1fdXNlckFnZW50T3ZlcnJpZGRlbjsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQbHVnaW5IYWx0ZXJEZWxl
Z2F0ZS5pZGwJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lm
bmRlZiBET19OT19JTVBPUlRTCi1pbXBvcnQgIm9haWRsLmlkbCI7Ci1pbXBvcnQgIm9jaWRsLmlk
bCI7Ci0jZW5kaWYKLQotaW50ZXJmYWNlIElET01Ob2RlOwotaW50ZXJmYWNlIElXZWJWaWV3Owot
Ci1bCi0gICAgb2JqZWN0LAotICAgIG9sZWF1dG9tYXRpb24sCi0gICAgdXVpZCgyZTBlNWQ5ZS1m
ZmM5LTQxODUtYWExNS1lNjY4NjhkNTQ4ZWUpLAotICAgIHBvaW50ZXJfZGVmYXVsdCh1bmlxdWUp
Ci1dCi1pbnRlcmZhY2UgSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlIDogSVVua25vd24KLXsKLSAg
ICBIUkVTVUxUIHNob3VsZEhhbHRQbHVnaW4oW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJ
RE9NTm9kZSosIFtpbl0gQk9PTCBpc1dpbmRvd2VkLCBbaW5dIEJTVFIgcGx1Z2luTmFtZSwgW291
dCwgcmV0dmFsXSBCT09MKiByZXN1bHQpOwotfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCShyZXZpc2lv
biA5MjM4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzkyLDggQEAgaW50ZXJmYWNlIElX
ZWJQcmVmZXJlbmNlc1ByaXZhdGUgOiBJVW5rbgogICAgIC8vIFVzZWQgYnkgRHVtcFJlbmRlclRy
ZWUuCiAgICAgSFJFU1VMVCBzZXRQcmVmZXJlbmNlRm9yVGVzdChbaW5dIEJTVFIga2V5LCBbaW5d
IEJTVFIgdmFsdWUpOwogCi0gICAgSFJFU1VMVCBzZXRQbHVnaW5BbGxvd2VkUnVuVGltZShbaW5d
IFVJTlQgYWxsb3dlZFJ1blRpbWUpOwotICAgIEhSRVNVTFQgcGx1Z2luQWxsb3dlZFJ1blRpbWUo
W291dCwgcmV0dmFsXSBVSU5UKiBhbGxvd2VkUnVuVGltZSk7CisgICAgSFJFU1VMVCB1bnVzZWQx
KCk7CisgICAgSFJFU1VMVCB1bnVzZWQyKCk7CiAKICAgICBIUkVTVUxUIHNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKFtpbl0gQk9PTCk7CiAgICAgSFJFU1VMVCBhY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wqKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwJKHJldmlzaW9uIDky
Mzg0KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIGludGVyZmFjZSBJV2ViRnJhbWVMb2Fk
RGVsZWdhdGVQcml2YXRlOwogaW50ZXJmYWNlIElXZWJIaXN0b3J5RGVsZWdhdGU7CiBpbnRlcmZh
Y2UgSVdlYkluc3BlY3RvcjsKIGludGVyZmFjZSBJV2ViSW5zcGVjdG9yUHJpdmF0ZTsKLWludGVy
ZmFjZSBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGU7CiBpbnRlcmZhY2UgSVdlYlVSTFJlcXVlc3Q7
CiBpbnRlcmZhY2UgSVdlYlZpZXc7CiAKQEAgLTE5Nyw4ICsxOTYsOCBAQCBpbnRlcmZhY2UgSVdl
YlZpZXdQcml2YXRlIDogSVVua25vd24KICAgICBIUkVTVUxUIHJlbW92ZVVzZXJTdHlsZVNoZWV0
c0Zyb21Hcm91cChbaW5dIEJTVFIgZ3JvdXBOYW1lLCBbaW5dIElXZWJTY3JpcHRXb3JsZCopOwog
ICAgIEhSRVNVTFQgcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXAoW2luXSBCU1RSIGdyb3Vw
TmFtZSk7CiAKLSAgICBIUkVTVUxUIHNldFBsdWdpbkhhbHRlckRlbGVnYXRlKFtpbl0gSVdlYlBs
dWdpbkhhbHRlckRlbGVnYXRlKiBkKTsKLSAgICBIUkVTVUxUIHBsdWdpbkhhbHRlckRlbGVnYXRl
KFtyZXR2YWwsIG91dF0gSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlKiogZCk7CisgICAgSFJFU1VM
VCB1bnVzZWQxKCk7CisgICAgSFJFU1VMVCB1bnVzZWQyKCk7CiAKICAgICAvLyBJZiByZWN0IGlz
IDAsIHRoZSBlbnRpcmUgYmFja2luZyBzdG9yZSB3aWxsIGJlIGludmFsaWRhdGVkLgogICAgIEhS
RVNVTFQgaW52YWxpZGF0ZUJhY2tpbmdTdG9yZShbaW5dIGNvbnN0IFJFQ1QqIHJlY3QpOwpAQCAt
MjE5LDkgKzIxOCw5IEBAIGludGVyZmFjZSBJV2ViVmlld1ByaXZhdGUgOiBJVW5rbm93bgogICAg
IEhSRVNVTFQgaGlzdG9yeURlbGVnYXRlKFtvdXQscmV0dmFsXSBJV2ViSGlzdG9yeURlbGVnYXRl
KiogaGlzdG9yeURlbGVnYXRlKTsKICAgICBIUkVTVUxUIGFkZFZpc2l0ZWRMaW5rcyhbaW5dIEJT
VFIqIHZpc2l0ZWRVUkxzLCBbaW5dIHVuc2lnbmVkIHZpc2l0ZWRVUkxDb3VudCk7CiAKLSAgICBI
UkVTVUxUIGlzTm9kZUhhbHRlZFBsdWdpbihbaW5dIElET01Ob2RlKiwgW3JldHZhbCwgb3V0XSBC
T09MKik7Ci0gICAgSFJFU1VMVCByZXN0YXJ0SGFsdGVkUGx1Z2luRm9yTm9kZShbaW5dIElET01O
b2RlKik7Ci0gICAgSFJFU1VMVCBoYXNQbHVnaW5Gb3JOb2RlQmVlbkhhbHRlZChbaW5dIElET01O
b2RlKiwgW3JldHZhbCwgb3V0XSBCT09MKik7CisgICAgSFJFU1VMVCB1bnVzZWQxKCk7CisgICAg
SFJFU1VMVCB1bnVzZWQyKCk7CisgICAgSFJFU1VMVCB1bnVzZWQzKCk7CiAKICAgICBIUkVTVUxU
IHNldEdlb2xvY2F0aW9uUHJvdmlkZXIoW2luXSBJV2ViR2VvbG9jYXRpb25Qcm92aWRlciogbG9j
YXRpb25Qcm92aWRlcik7CiAgICAgSFJFU1VMVCBnZW9sb2NhdGlvblByb3ZpZGVyKFtvdXQsIHJl
dHZhbF0gSVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqKiBsb2NhdGlvblByb3ZpZGVyKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwJKHJldmlzaW9uIDkyMzg0KQor
KysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDksNyArMTA5LDYgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOwogI2luY2x1ZGUgIklXZWJO
b3RpZmljYXRpb24uaWRsIgogI2luY2x1ZGUgIklXZWJOb3RpZmljYXRpb25DZW50ZXIuaWRsIgog
I2luY2x1ZGUgIklXZWJOb3RpZmljYXRpb25PYnNlcnZlci5pZGwiCi0jaW5jbHVkZSAiSVdlYlBs
dWdpbkhhbHRlckRlbGVnYXRlLmlkbCIKICNpbmNsdWRlICJJV2ViUG9saWN5RGVsZWdhdGUuaWRs
IgogI2luY2x1ZGUgIklXZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaWRsIgogI2luY2x1ZGUgIklX
ZWJQcmVmZXJlbmNlcy5pZGwiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5jcHAJKHJldmlzaW9uIDky
Mzg0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVy
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2luY2x1ZGUgIldlYlBsdWdpbkhhbHRlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiRE9NQ29yZUNs
YXNzZXMuaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob2RlLmg+
Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KLVdlYlBsdWdpbkhhbHRlckNsaWVudDo6V2ViUGx1Z2luSGFsdGVyQ2xpZW50KFdlYlZpZXcq
IHdlYlZpZXcpCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKLXsKLSAgICBBU1NFUlRfQVJHKHdl
YlZpZXcsIHdlYlZpZXcpOwotfQotCi1ib29sIFdlYlBsdWdpbkhhbHRlckNsaWVudDo6c2hvdWxk
SGFsdFBsdWdpbihOb2RlKiBuLCBib29sIGlzV2luZG93ZWQsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
TmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlRfQVJHKG4sIG4pOwotCi0gICAgSVdlYlBsdWdpbkhh
bHRlckRlbGVnYXRlKiBkOwotICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5wbHVnaW5IYWx0ZXJE
ZWxlZ2F0ZSgmZCkpIHx8ICFkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDT01QdHI8
SURPTU5vZGU+IGRvbU5vZGUoQWRvcHRDT00sIERPTU5vZGU6OmNyZWF0ZUluc3RhbmNlKG4pKTsK
LQotICAgIEJPT0wgc2hvdWxkSGFsdDsKLSAgICBpZiAoRkFJTEVEKGQtPnNob3VsZEhhbHRQbHVn
aW4obV93ZWJWaWV3LCBkb21Ob2RlLmdldCgpLCBpc1dpbmRvd2VkLCBCU3RyaW5nKHBsdWdpbk5h
bWUpLCAmc2hvdWxkSGFsdCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
c2hvdWxkSGFsdDsKLX0KLQotYm9vbCBXZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OmVuYWJsZWQoKSBj
b25zdAotewotICAgIElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSogZDsKLSAgICBpZiAoRkFJTEVE
KG1fd2ViVmlldy0+cGx1Z2luSGFsdGVyRGVsZWdhdGUoJmQpKSB8fCAhZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaAko
cmV2aXNpb24gOTIzODQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5IYWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgV2ViUGx1
Z2luSGFsdGVyQ2xpZW50X2gKLSNkZWZpbmUgV2ViUGx1Z2luSGFsdGVyQ2xpZW50X2gKLQotI2lu
Y2x1ZGUgPFdlYkNvcmUvUGx1Z2luSGFsdGVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIE5vZGU7Ci19Ci0KLWNsYXNz
IFdlYlZpZXc7Ci0KLWNsYXNzIFdlYlBsdWdpbkhhbHRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpQbHVnaW5IYWx0ZXJDbGllbnQgewotcHVibGljOgotICAgIFdlYlBsdWdpbkhhbHRlckNsaWVu
dChXZWJWaWV3KiB3ZWJWaWV3KTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYWx0UGx1Z2lu
KFdlYkNvcmU6Ok5vZGUqIG4sIGJvb2wgaXNXaW5kb3dlZCwgY29uc3QgV1RGOjpTdHJpbmcmIHBs
dWdpbk5hbWUpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3Q7Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViVmlldyogbV93ZWJWaWV3OwotfTsKLQotI2VuZGlmIC8vIFdlYlBsdWdp
bkhhbHRlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL0lu
dGVyZmFjZXMudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52
Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oJKHJldmlzaW9uIDkyMzg0KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzA2NSw1OCArMzA2NSw2IEBACiAJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQk8L0ZpbGU+CiAJ
CTxGaWxlCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXEludGVyZmFjZXNcSVdlYlBsdWdpbkhhbHRlckRl
bGVnYXRlLmlkbCIKLQkJCT4KLQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAot
CQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wKLQkJCQkJTmFtZT0iVkNNSURM
VG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTxGaWxlQ29uZmlndXJh
dGlvbgotCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCi0JCQkJPgotCQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJLz4K
LQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQlOYW1l
PSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJPgot
CQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJLz4KLQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJ
PFRvb2wKLQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KLQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wK
LQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
LQkJPC9GaWxlPgotCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlxJbnRlcmZhY2VzXElXZWJQ
b2xpY3lEZWxlZ2F0ZS5pZGwiCiAJCQk+CiAJCQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oJKHJldmlzaW9u
IDkyMzg0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjQzLDE0ICsxMjQzLDYgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJDb3JlU3VwcG9ydFxXZWJQ
bHVnaW5IYWx0ZXJDbGllbnQuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxXZWJDb3JlU3VwcG9ydFxXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCIK
LQkJCQk+Ci0JCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRo
PSIuLlxXZWJLaXRQcmVmaXguY3BwIgpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDIy
KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMS0wOC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgaW5jbHVkZSBQbHVnaW5IYWx0ZXJDbGllbnQu
aCwgaXQncyBiZWVuIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKwogMjAxMS0w
OC0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZW1vdmUgTm9kZSBwYXJhbWV0ZXIgZnJvbSB0aGUgSW5zcGVjdG9yQ2xp
ZW50OjpoaWdobGlnaHQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAkocmV2aXNpb24gOTIzODQpCisr
KyBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0
OSw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJQ
bHVnaW5IYWx0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA5MjQyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDExLTA4LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgY2FsbCB0byBzZXQgdGhlIGFsbG93ZWQgcGx1Zy1p
biBydW4gdGltZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbToKKyAgICAgICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDEx
LTA4LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIEZpeCBhc3NlcnRpb24gZmFpbHVyZSBpbiBUaHJlYWRJZGVudGlmaWVyRGF0YTo6aWRl
bnRpZmllciBpbiBUZXN0U2hlbGwuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA5MjM4NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQ3LDcgKzQ0Nyw2IEBA
IHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWwKICAgICBbcHJlZmVyZW5j
ZXMgc2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0WFNTQXVkaXRvckVuYWJsZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRF
eHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDpOT107Ci0gICAgW3ByZWZlcmVuY2VzIHNl
dFBsdWdpbkFsbG93ZWRSdW5UaW1lOjFdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRQbHVnSW5zRW5h
YmxlZDpZRVNdOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQ6
Tk9dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103082</attachid>
            <date>2011-08-05 09:52:56 -0700</date>
            <delta_ts>2011-08-05 10:26:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65729-20110805095255.patch</filename>
            <type>text/plain</type>
            <size>81631</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFs
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0hhbHRhYmxlUGx1
Z2luLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2Uv
UGx1Z2luSGFsdGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1BsdWdpbkhhbHRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50Lmg6IFJlbW92ZWQu
CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcu
aDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcDoKKyAgICAgICAgKiBwbHVn
aW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuaDoKKwogMjAxMS0wOC0wNSAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgZGlyPWF1dG8gbmVlZHMgdG8gd29y
ayBvbiB2YWx1ZSBvZiBpbnB1dCBhbmQgdGV4dGFyZWEgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC05OTIsNyArOTkyLDYgQEAgU0VUKFdlYkNvcmVfU09VUkNF
UwogICAgIHBhZ2UvUGVyZm9ybWFuY2UuY3BwCiAgICAgcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRp
b24uY3BwCiAgICAgcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKLSAgICBwYWdlL1BsdWdpbkhh
bHRlci5jcHAKICAgICBwYWdlL1ByaW50Q29udGV4dC5jcHAKICAgICBwYWdlL1NjcmVlbi5jcHAK
ICAgICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI4NSw3ICsyODUsNiBAQCBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBO
U181RnJhbWVFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKIF9fWk43V2ViQ29yZTEy
UmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJlY3RFYgogX19aTjdXZWJD
b3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWIKLV9fWk43V2ViQ29y
ZTEyUmVuZGVyV2lkZ2V0MTlzaG93U3Vic3RpdHV0ZUltYWdlRU4zV1RGMTBQYXNzUmVmUHRySU5T
XzVJbWFnZUVFRQogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOHJlc3VtZVdpZGdldEhpZXJh
cmNoeVVwZGF0ZXNFdgogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOXN1c3BlbmRXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTB3cmFwTlNEYXRh
RVA2TlNEYXRhCkBAIC02OTgsOCArNjk3LDYgQEAgX19aTjdXZWJDb3JlNFBhZ2UxMGZpbmRTdHJp
bmdFUktOM1dURjZTdAogX19aTjdXZWJDb3JlNFBhZ2UxMVBhZ2VDbGllbnRzQzFFdgogX19aTjdX
ZWJDb3JlNFBhZ2UxMVBhZ2VDbGllbnRzRDFFdgogX19aTjdXZWJDb3JlNFBhZ2UxMnNldEdyb3Vw
TmFtZUVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTRQYWdlMTNkaWRTdG9wUGx1Z2luRVBO
U18xNEhhbHRhYmxlUGx1Z2luRQotX19aTjdXZWJDb3JlNFBhZ2UxNGRpZFN0YXJ0UGx1Z2luRVBO
U18xNEhhbHRhYmxlUGx1Z2luRQogX19aTjdXZWJDb3JlNFBhZ2UxNHNldE1lZGlhVm9sdW1lRWYK
IF9fWk43V2ViQ29yZTRQYWdlMTVhZGRTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
MTJTY2hlZHVsZVBhaXJFRUUKIF9fWk43V2ViQ29yZTRQYWdlMTVkaWRNb3ZlT25zY3JlZW5FdgpA
QCAtODk4LDcgKzg5NSw2IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczIzc2V0RWRpdGFibGVMaW5r
QmUKIF9fWk43V2ViQ29yZThTZXR0aW5nczIzc2V0TG9hZERlZmVycmluZ0VuYWJsZWRFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjNzZXROZWVkc1RpZ2VyTWFpbFF1aXJrc0ViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyM3NldFBpY3RvZ3JhcGhGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0UxMVVTY3JpcHRDb2RlCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldFBsdWdpbkFsbG93ZWRS
dW5UaW1lRWoKIF9fWk43V2ViQ29yZThTZXR0aW5nczIzc2V0VXNlc0VuY29kaW5nRGV0ZWN0b3JF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRBcHBsaWNhdGlvbkNocm9tZU1vZGVFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjRzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWRFYgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTk0MSw3ICs5NDEsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdl
L1BlcmZvcm1hbmNlLmNwcCBcCiAgICAgcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwK
ICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBcCi0gICAgcGFnZS9QbHVnaW5IYWx0ZXIu
Y3BwIFwKICAgICBwYWdlL1ByaW50Q29udGV4dC5jcHAgXAogICAgIHBhZ2UvU2NyZWVuLmNwcCBc
CiAgICAgcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTI0ODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE3MzAsMTAgKzE3MzAsNiBAQAogCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZD
REMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLzsgfTsKIAkJNzY3Rjk5QkUxMUExMTk0QTAwODBDNTFE
IC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi87IH07CiAJCTc2N0Y5OUMwMTFBMTE5NTYwMDgw
QzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi87IH07Ci0JCTc2OTNCQUQyMTA2QzJEQ0EwMDdC
MDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzY5M0JBQ0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2lu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzY5
M0JBRDMxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMg
LyogUGx1Z2luSGFsdGVyLmNwcCAqLzsgfTsKLQkJNzY5M0JBRDQxMDZDMkRDQTAwN0IwODIzIC8q
IFBsdWdpbkhhbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovOyB9Owot
CQk3NjkzQkFENTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMTEwNkMyRENB
MDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzY5NDU2M0MxMjE0RDk3QzAwMDdDQkFFIC8qIEpT
RE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2OTQ1NjNBMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgKi87
IH07CiAJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5NDU2M0IxMjE0RDk3
QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmggKi87IH07CiAJCTc2OTQ1NjVCMTIxNERCNjMw
MDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTQ1NjU5MTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tl
bkxpc3QuaCAqLzsgfTsKQEAgLTgzNjYsMTAgKzgzNjIsNiBAQAogCQk3NjM3QzU0MjExMkU3QjdF
MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NjkzQkFDRTEwNkMy
RENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGFsdGFibGVQbHVnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5IYWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NjkzQkFEMTEwNkMyRENBMDA3QjA4MjMgLyogUGx1
Z2luSGFsdGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdp
bkhhbHRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njk0NTYzQTEy
MTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tlbkxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNET01Ub2tlbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Njk0NTYzQjEyMTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tlbkxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Ub2tlbkxpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5NDU2NTkxMjE0REI2MzAwMDdDQkFFIC8qIERPTURP
TVRva2VuTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01ET01Ub2tl
bkxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NjEwLDcgKzE0NjAyLDYg
QEAKIAkJCQlGRTgwRDdCQzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaWRsICovLAog
CQkJCUM1MEI1NjE0MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLywKIAkJ
CQlDNTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovLAotCQkJCTc2
OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovLAogCQkJCUJDOTRE
MTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCAqLywKIAkJCQlCQzk0RDE1MTBDMjc1
QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oICovLAogCQkJCUJDOTREMTUyMEMyNzVDOEIwMDZCQzYx
NyAvKiBIaXN0b3J5LmlkbCAqLywKQEAgLTE0NjYwLDkgKzE0NjUxLDYgQEAKIAkJCQk4QUY0RTU1
ODExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuY3BwICovLAogCQkJCThBRjRF
NTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovLAogCQkJCThBRjRF
NTVBMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5pZGwgKi8sCi0JCQkJNzY5
M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi8sCi0JCQkJNzY5M0JB
RDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovLAotCQkJCTc2OTNCQUQxMTA2
QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLywKIAkJCQlGRTgwRDdCRDBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovLAogCQkJCTU5M0FCNjk3MTM1
NUNEOTIwMEZDODIxMSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLywKIAkJCQlGRTgwRDdCRjBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oICovLApAQCAtMjE1MTEsNyArMjE0OTks
NiBAQAogCQkJCUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3N0ExN0E3QjEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NUeXBl
czNELmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIz
IC8qIEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0
MDBCRkIwMDUgLyogSGFzaENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODc0OEJF
MDEyQ0JGMkRDMDAxRkJBNDEgLyogSGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVC
M0RDMDEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTIyNTAzLDggKzIyNDkwLDYgQEAKIAkJCQk5MzVDNDc2QjA5QUM0RDRGMDBBNkFBQjQgLyog
UGxhdGZvcm1XaGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2RTRGNDBENzQ1RTQ4
MDA2NDQyRTkgLyogUGx1Z2luRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQkMxMjM5
MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3Njkz
QkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3NjkzQkFENTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQURBMTQxMTBFMUFFNUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFpblRocmVh
ZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRG
IC8qIFBsdWdpblN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhD
MDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0ODMsNyAr
MjU0NjgsNiBAQAogCQkJCTFBRDhGODFDMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RjMwRDc0NUU0ODAwNjQ0MkU5IC8q
IFBsdWdpbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcyMDVBQkIxMjM5MjkyNzAwQjE3
MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTc2OTNCQUQzMTA2
QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFE
QTE0MTAwRTFBRTVEOTAwMDIzRUU1IC8qIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzZGRjE3RTMxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdO
b25lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQjFGNzE2MEQwMENBQTgwMDRBRUE2NCAvKiBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIlBsdWdp
bkhhbHRlckNsaWVudC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIlJlc291
cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvSGFsdGFibGVQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0hhbHRhYmxlUGx1Z2luLmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9IYWx0YWJsZVBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBI
YWx0YWJsZVBsdWdpbl9oCi0jZGVmaW5lIEhhbHRhYmxlUGx1Z2luX2gKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBOb2RlOwotCi1jbGFzcyBIYWx0YWJsZVBsdWdpbiB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+SGFsdGFibGVQbHVnaW4oKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBo
YWx0KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXN0YXJ0KCkgPSAwOwotICAgIHZpcnR1YWwg
Tm9kZSogbm9kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBwbHVnaW5OYW1lKCkgY29uc3QgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSGFsdGFibGVQbHVnaW5faApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRl
ICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRlICJQbHVnaW5IYWx0ZXIuaCIKICNpbmNsdWRlICJQ
bHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKQEAgLTE3NiwxMSArMTc1LDYgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50
cyYgcGFnZUNsaWVudHMpCiAgICAgQVNTRVJUKCFhbGxQYWdlcy0+Y29udGFpbnModGhpcykpOwog
ICAgIGFsbFBhZ2VzLT5hZGQodGhpcyk7CiAKLSAgICBpZiAocGFnZUNsaWVudHMucGx1Z2luSGFs
dGVyQ2xpZW50KSB7Ci0gICAgICAgIG1fcGx1Z2luSGFsdGVyID0gYWRvcHRQdHIobmV3IFBsdWdp
bkhhbHRlcihwYWdlQ2xpZW50cy5wbHVnaW5IYWx0ZXJDbGllbnQucmVsZWFzZSgpKSk7Ci0gICAg
ICAgIG1fcGx1Z2luSGFsdGVyLT5zZXRQbHVnaW5BbGxvd2VkUnVuVGltZShtX3NldHRpbmdzLT5w
bHVnaW5BbGxvd2VkUnVuVGltZSgpKTsKLSAgICB9Ci0KICNpZm5kZWYgTkRFQlVHCiAgICAgcGFn
ZUNvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKQEAgLTg4NiwyNCArODgwLDYgQEAgdm9pZCBQ
YWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICBwbHVnaW5WaWV3QmFz
ZXNbaV0tPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKIH0KIAotdm9pZCBQYWdlOjpwbHVnaW5BbGxvd2VkUnVuVGltZUNoYW5nZWQoKQotewotICAg
IGlmIChtX3BsdWdpbkhhbHRlcikKLSAgICAgICAgbV9wbHVnaW5IYWx0ZXItPnNldFBsdWdpbkFs
bG93ZWRSdW5UaW1lKG1fc2V0dGluZ3MtPnBsdWdpbkFsbG93ZWRSdW5UaW1lKCkpOwotfQotCi12
b2lkIFBhZ2U6OmRpZFN0YXJ0UGx1Z2luKEhhbHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgaWYg
KG1fcGx1Z2luSGFsdGVyKQotICAgICAgICBtX3BsdWdpbkhhbHRlci0+ZGlkU3RhcnRQbHVnaW4o
b2JqKTsKLX0KLQotdm9pZCBQYWdlOjpkaWRTdG9wUGx1Z2luKEhhbHRhYmxlUGx1Z2luKiBvYmop
Ci17Ci0gICAgaWYgKG1fcGx1Z2luSGFsdGVyKQotICAgICAgICBtX3BsdWdpbkhhbHRlci0+ZGlk
U3RvcFBsdWdpbihvYmopOwotfQotCiB2b2lkIFBhZ2U6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFT
ZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CiAgICAgY2xh
c3MgUGx1Z2luRGF0YTsKLSAgICBjbGFzcyBQbHVnaW5IYWx0ZXI7Ci0gICAgY2xhc3MgUGx1Z2lu
SGFsdGVyQ2xpZW50OwogICAgIGNsYXNzIFByb2dyZXNzVHJhY2tlcjsKICAgICBjbGFzcyBSZW5k
ZXJUaGVtZTsKICAgICBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAtMTEzLDcgKzExMSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIEVkaXRvckNsaWVudCogZWRpdG9yQ2xp
ZW50OwogICAgICAgICAgICAgRHJhZ0NsaWVudCogZHJhZ0NsaWVudDsKICAgICAgICAgICAgIElu
c3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50OwotICAgICAgICAgICAgT3duUHRyPFBsdWdp
bkhhbHRlckNsaWVudD4gcGx1Z2luSGFsdGVyQ2xpZW50OwogICAgICAgICAgICAgR2VvbG9jYXRp
b25DbGllbnQqIGdlb2xvY2F0aW9uQ2xpZW50OwogICAgICAgICAgICAgRGV2aWNlTW90aW9uQ2xp
ZW50KiBkZXZpY2VNb3Rpb25DbGllbnQ7CiAgICAgICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CkBAIC0yNTMsMTAgKzI1MCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgp
OwogICAgICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgICAg
IHZvaWQgZGlkU3RhcnRQbHVnaW4oSGFsdGFibGVQbHVnaW4qKTsKLSAgICAgICAgdm9pZCBkaWRT
dG9wUGx1Z2luKEhhbHRhYmxlUGx1Z2luKik7Ci0gICAgICAgIHZvaWQgcGx1Z2luQWxsb3dlZFJ1
blRpbWVDaGFuZ2VkKCk7Ci0KICAgICAgICAgc3RhdGljIHZvaWQgc2V0RGVidWdnZXJGb3JBbGxQ
YWdlcyhKU0M6OkRlYnVnZ2VyKik7CiAgICAgICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1
Z2dlciopOwogICAgICAgICBKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdnZXI7IH0KQEAgLTM5Myw4ICszODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgYm9vbCBtX2NhblN0YXJ0TWVkaWE7CiAKLSAgICAgICAgT3duUHRyPFBsdWdpbkhh
bHRlcj4gbV9wbHVnaW5IYWx0ZXI7Ci0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAg
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z2luSGFsdGVyLmgiCi0KLSNpbmNs
dWRlICJIYWx0YWJsZVBsdWdpbi5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUGx1Z2luSGFsdGVyOjpQbHVnaW5IYWx0ZXIoUGFzc093blB0cjxQbHVn
aW5IYWx0ZXJDbGllbnQ+IGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1f
dGltZXIodGhpcywgJlBsdWdpbkhhbHRlcjo6dGltZXJGaXJlZCkKLSAgICAsIG1fcGx1Z2luQWxs
b3dlZFJ1blRpbWUobnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLXsKLSAgICBBU1NF
UlRfQVJHKG1fY2xpZW50LCBtX2NsaWVudCk7Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVyOjpkaWRT
dGFydFBsdWdpbihIYWx0YWJsZVBsdWdpbiogb2JqKQotewotICAgIEFTU0VSVF9BUkcob2JqLCBv
YmopOwotICAgIEFTU0VSVF9BUkcob2JqLCAhbV9wbHVnaW5zLmNvbnRhaW5zKG9iaikpOwotCi0g
ICAgaWYgKCFtX2NsaWVudC0+ZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3Vi
bGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0KLSAgICBtX3BsdWdpbnMuYWRk
KG9iaiwgY3VycmVudFRpbWUpOwotCi0gICAgaWYgKG1fcGx1Z2lucy5zaXplKCkgPT0gMSkKLSAg
ICAgICAgbV9vbGRlc3RTdGFydFRpbWUgPSBjdXJyZW50VGltZTsKLQotICAgIHN0YXJ0VGltZXJJ
Zk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIFBsdWdpbkhhbHRlcjo6ZGlkU3RvcFBsdWdpbihIYWx0
YWJsZVBsdWdpbiogb2JqKQotewotICAgIGlmICghbV9jbGllbnQtPmVuYWJsZWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9wbHVnaW5zLnJlbW92ZShvYmopOwotfQotCi12b2lkIFBsdWdp
bkhhbHRlcjo6dGltZXJGaXJlZChUaW1lcjxQbHVnaW5IYWx0ZXI+KikKLXsKLSAgICBpZiAobV9w
bHVnaW5zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPEhhbHRhYmxl
UGx1Z2luKj4gcGx1Z2luczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fcGx1Z2lucywgcGx1Z2lu
cyk7Ci0KLSAgICAvLyBQbHVnLWlucyBvbGRlciB0aGFuIHRoaXMgYXJlIGNhbmRpZGF0ZXMgdG8g
YmUgaGFsdGVkLgotICAgIGRvdWJsZSBwbHVnaW5DdXRPZmZUaW1lID0gV1RGOjpjdXJyZW50VGlt
ZSgpIC0gbV9wbHVnaW5BbGxvd2VkUnVuVGltZTsKLQotICAgIG1fb2xkZXN0U3RhcnRUaW1lID0g
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZG91YmxlIHRoaXNTdGFydFRpbWUg
PSBtX3BsdWdpbnMuZ2V0KHBsdWdpbnNbaV0pOwotICAgICAgICBpZiAodGhpc1N0YXJ0VGltZSA+
IHBsdWdpbkN1dE9mZlRpbWUpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGx1Zy1pbiBpcyB0b28g
eW91bmcgdG8gYmUgaGFsdGVkLiBXZSBmaW5kIHRoZSBvbGRlc3QKLSAgICAgICAgICAgIC8vIHBs
dWctaW4gdGhhdCBpcyBub3Qgb2xkIGVub3VnaCB0byBiZSBoYWx0ZWQgYW5kIHVzZSBpdCB0byBz
ZXQKLSAgICAgICAgICAgIC8vIHRoZSB0aW1lcidzIG5leHQgZmlyZSB0aW1lLgotICAgICAgICAg
ICAgaWYgKHRoaXNTdGFydFRpbWUgPCBtX29sZGVzdFN0YXJ0VGltZSkKLSAgICAgICAgICAgICAg
ICBtX29sZGVzdFN0YXJ0VGltZSA9IHRoaXNTdGFydFRpbWU7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX2NsaWVudC0+c2hvdWxkSGFsdFBsdWdpbihw
bHVnaW5zW2ldLT5ub2RlKCksIHBsdWdpbnNbaV0tPmlzV2luZG93ZWQoKSwgcGx1Z2luc1tpXS0+
cGx1Z2luTmFtZSgpKSkKLSAgICAgICAgICAgIHBsdWdpbnNbaV0tPmhhbHQoKTsKLQotICAgICAg
ICBtX3BsdWdpbnMucmVtb3ZlKHBsdWdpbnNbaV0pOwotICAgIH0KLQotICAgIHN0YXJ0VGltZXJJ
Zk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIFBsdWdpbkhhbHRlcjo6c3RhcnRUaW1lcklmTmVjZXNz
YXJ5KCkKLXsKLSAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAobV9wbHVnaW5zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91
YmxlIG5leHRGaXJlSW50ZXJ2YWwgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1fcGx1Z2luQWxsb3dl
ZFJ1blRpbWUpIC0gKGN1cnJlbnRUaW1lKCkgLSBtX29sZGVzdFN0YXJ0VGltZSk7Ci0gICAgbV90
aW1lci5zdGFydE9uZVNob3QobmV4dEZpcmVJbnRlcnZhbCA8IDAgPyAwIDogbmV4dEZpcmVJbnRl
cnZhbCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGx1Z2luSGFsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnaW5IYWx0ZXIuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bs
dWdpbkhhbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBQbHVnaW5IYWx0ZXJf
aAotI2RlZmluZSBQbHVnaW5IYWx0ZXJfaAotCi0jaW5jbHVkZSAiUGx1Z2luSGFsdGVyQ2xpZW50
LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIYWx0YWJs
ZVBsdWdpbjsKLQotY2xhc3MgUGx1Z2luSGFsdGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQbHVnaW5IYWx0ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQ
bHVnaW5IYWx0ZXIoUGFzc093blB0cjxQbHVnaW5IYWx0ZXJDbGllbnQ+KTsKLQotICAgIHZvaWQg
ZGlkU3RhcnRQbHVnaW4oSGFsdGFibGVQbHVnaW4qKTsKLSAgICB2b2lkIGRpZFN0b3BQbHVnaW4o
SGFsdGFibGVQbHVnaW4qKTsKLQotICAgIHZvaWQgc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUodW5z
aWduZWQgcnVuVGltZSkgeyBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lID0gcnVuVGltZTsgfQotCi1w
cml2YXRlOgotICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxQbHVnaW5IYWx0ZXI+Kik7Ci0gICAg
dm9pZCBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKLQotICAgIE93blB0cjxQbHVnaW5IYWx0ZXJD
bGllbnQ+IG1fY2xpZW50OwotICAgIFRpbWVyPFBsdWdpbkhhbHRlcj4gbV90aW1lcjsKLSAgICB1
bnNpZ25lZCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lOwotICAgIGRvdWJsZSBtX29sZGVzdFN0YXJ0
VGltZTsKLSAgICBIYXNoTWFwPEhhbHRhYmxlUGx1Z2luKiwgZG91YmxlPiBtX3BsdWdpbnM7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQbHVnaW5IYWx0ZXJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlckNsaWVudC5oCShyZXZpc2lvbiA5
MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBsdWdpbkhhbHRlckNsaWVudF9oCi0jZGVmaW5lIFBs
dWdpbkhhbHRlckNsaWVudF9oCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vZGU7Ci0KLWNsYXNzIFBsdWdpbkhhbHRlckNsaWVudCB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UGx1Z2luSGFsdGVyQ2xpZW50KCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSGFsdFBsdWdpbihOb2RlKiwgYm9vbCBpc1dpbmRvd2VkLCBjb25z
dCBTdHJpbmcmIHBsdWdpbk5hbWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxl
ZCgpIGNvbnN0ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFBsdWdpbkhhbHRlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2
aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw2IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdl
KQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAsIG1fc2Vzc2lvblN0b3JhZ2VRdW90YShT
dG9yYWdlTWFwOjpub1F1b3RhKQogI2VuZGlmCi0gICAgLCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1l
KG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgLCBtX2VkaXRpbmdCZWhhdmlv
clR5cGUoZWRpdGluZ0JlaGF2aW9yVHlwZUZvclBsYXRmb3JtKCkpCiAgICAgLCBtX21heGltdW1I
VE1MUGFyc2VyRE9NVHJlZURlcHRoKGRlZmF1bHRNYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0
aCkKICAgICAsIG1faXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZmFsc2UpCkBAIC03NDgsMTIg
Kzc0Nyw2IEBAIHZvaWQgU2V0dGluZ3M6OnNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGkKICAgICBt
X2V4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBT
ZXR0aW5nczo6c2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUodW5zaWduZWQgcnVuVGltZSkKLXsKLSAg
ICBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lID0gcnVuVGltZTsKLSAgICBtX3BhZ2UtPnBsdWdpbkFs
bG93ZWRSdW5UaW1lQ2hhbmdlZCgpOwotfQotCiAjaWYgUExBVEZPUk0oV0lOKSB8fCAoT1MoV0lO
RE9XUykgJiYgUExBVEZPUk0oV1gpKQogdm9pZCBTZXR0aW5nczo6c2V0U2hvdWxkVXNlSGlnaFJl
c29sdXRpb25UaW1lcnMoYm9vbCBzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycykKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsOSArMzQ0LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VIaWdoUmVzb2x1
dGlvblRpbWVycygpIHsgcmV0dXJuIGdTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVyczsgfQog
I2VuZGlmCiAKLSAgICAgICAgdm9pZCBzZXRQbHVnaW5BbGxvd2VkUnVuVGltZSh1bnNpZ25lZCk7
Ci0gICAgICAgIHVuc2lnbmVkIHBsdWdpbkFsbG93ZWRSdW5UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9wbHVnaW5BbGxvd2VkUnVuVGltZTsgfQotCiAgICAgICAgIHZvaWQgc2V0V2ViQXVkaW9FbmFi
bGVkKGJvb2wpOwogICAgICAgICBib29sIHdlYkF1ZGlvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViQXVkaW9FbmFibGVkOyB9CiAKQEAgLTQ3OCw3ICs0NzUsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICB1bnNpZ25lZCBtX3Nlc3Np
b25TdG9yYWdlUXVvdGE7CiAjZW5kaWYKLSAgICAgICAgdW5zaWduZWQgbV9wbHVnaW5BbGxvd2Vk
UnVuVGltZTsKICAgICAgICAgdW5zaWduZWQgbV9lZGl0aW5nQmVoYXZpb3JUeXBlOwogICAgICAg
ICB1bnNpZ25lZCBtX21heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoOwogICAgICAgICBib29s
IG1faXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQgOiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw5ICsyNzEsNiBAQCBi
b29sIFBsdWdpblZpZXc6OnN0YXJ0KCkKICAgICBpZiAobV9zdGF0dXMgIT0gUGx1Z2luU3RhdHVz
TG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocGFy
ZW50RnJhbWUoKS0+cGFnZSgpKQotICAgICAgICBwYXJlbnRGcmFtZSgpLT5wYWdlKCktPmRpZFN0
YXJ0UGx1Z2luKHRoaXMpOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxOCw5ICszMTUs
NiBAQCB2b2lkIFBsdWdpblZpZXc6OnN0b3AoKQogICAgIGlmICghbV9pc1N0YXJ0ZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChwYXJlbnRGcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgIHBh
cmVudEZyYW1lKCktPnBhZ2UoKS0+ZGlkU3RvcFBsdWdpbih0aGlzKTsKLQogICAgIExPRyhQbHVn
aW5zLCAiUGx1Z2luVmlldzo6c3RvcCgpOiBTdG9wcGluZyBwbHVnLWluICclcyciLCBtX3BsdWdp
bi0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3Ry
ZWFtPiA+IHN0cmVhbXMgPSBtX3N0cmVhbXM7CkBAIC04ODAsOCArODc0LDYgQEAgUGx1Z2luVmll
dzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbQogICAgICwgbV9sb2FkTWFudWFsbHkobG9h
ZE1hbnVhbGx5KQogICAgICwgbV9tYW51YWxTdHJlYW0oMCkKICAgICAsIG1faXNKYXZhU2NyaXB0
UGF1c2VkKGZhbHNlKQotICAgICwgbV9pc0hhbHRlZChmYWxzZSkKLSAgICAsIG1faGFzQmVlbkhh
bHRlZChmYWxzZSkKICAgICAsIG1faGF2ZUNhbGxlZFNldFdpbmRvdyhmYWxzZSkKIHsKICAgICBp
ZiAoIW1fcGx1Z2luKSB7CkBAIC0xMjkwLDE2ICsxMjgyLDYgQEAgY29uc3QgY2hhciogUGx1Z2lu
Vmlldzo6dXNlckFnZW50U3RhdGljKAogI2VuZGlmCiAKIAotTm9kZSogUGx1Z2luVmlldzo6bm9k
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZWxlbWVudDsKLX0KLQotU3RyaW5nIFBsdWdpblZp
ZXc6OnBsdWdpbk5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsdWdpbi0+bmFtZSgpOwot
fQotCiB2b2lkIFBsdWdpblZpZXc6OmxpZmVTdXBwb3J0VGltZXJGaXJlZChUaW1lcjxQbHVnaW5W
aWV3PiopCiB7CiAgICAgZGVyZWYoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmll
dy5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjZGVmaW5lIFBsdWdpblZpZXdf
aAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgotI2luY2x1ZGUgIkhhbHRhYmxlUGx1
Z2luLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCkBAIC0xNDEsNyArMTQwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgLCBwcml2YXRlIFBsdWdp
blN0cmVhbUNsaWVudAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBQbHVn
aW5NYW51YWxMb2FkZXIKLSAgICAgICAgICAgICAgICAgICAgICwgcHJpdmF0ZSBIYWx0YWJsZVBs
dWdpbgogICAgICAgICAgICAgICAgICAgICAgLCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5WaWV3PiBj
cmVhdGUoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRTaXplJiwgRWxlbWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51
YWxseSk7CkBAIC0yNDQsMTYgKzI0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAKLSAgICAgICAgLy8gSGFsdGFibGVQbHVnaW4KLSAgICAgICAgdmlydHVh
bCB2b2lkIGhhbHQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc3RhcnQoKTsKLSAgICAgICAg
dmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRv
d2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc1dpbmRvd2VkOyB9Ci0gICAgICAgIHZpcnR1YWwgU3Ry
aW5nIHBsdWdpbk5hbWUoKSBjb25zdDsKLQotICAgICAgICBib29sIGlzSGFsdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0hhbHRlZDsgfQotICAgICAgICBib29sIGhhc0JlZW5IYWx0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2hhc0JlZW5IYWx0ZWQ7IH0KLQogICAgICAgICBzdGF0aWMgYm9vbCBpc0Nh
bGxpbmdQbHVnaW4oKTsKIAogICAgICAgICBib29sIHN0YXJ0KCk7CkBAIC00NjEsOSArNDQ5LDYg
QEAgcHJpdmF0ZToKIAogICAgICAgICBib29sIG1faXNKYXZhU2NyaXB0UGF1c2VkOwogCi0gICAg
ICAgIGJvb2wgbV9pc0hhbHRlZDsKLSAgICAgICAgYm9vbCBtX2hhc0JlZW5IYWx0ZWQ7Ci0KICAg
ICAgICAgYm9vbCBtX2hhdmVDYWxsZWRTZXRXaW5kb3c7CiAKICAgICAgICAgc3RhdGljIFBsdWdp
blZpZXcqIHNfY3VycmVudFBsdWdpblZpZXc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXdOb25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXdOb25lLmNwcAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDE0ICsxMjAs
NiBAQCB2b2lkIFBsdWdpblZpZXc6OnVwZGF0ZVBsdWdpbldpZGdldCgpCiB7CiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6aGFsdCgpCi17Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6cmVzdGFydCgpCi17
Ci19Ci0KICNpZiBkZWZpbmVkKFhQX1VOSVgpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVGb2N1c0luRXZlbnQoKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAkocmV2aXNpb24gOTI0ODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNDAsMTQgKzEwNDAsNiBAQCB2b2lkIFBsdWdpblZpZXc6OnBsYXRmb3JtRGVzdHJv
eSgpCiAgICAgICAgIFhGcmVlQ29sb3JtYXAoUVgxMUluZm86OmRpc3BsYXkoKSwgbV9jb2xvcm1h
cCk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6aGFsdCgpCi17Ci19Ci0KLXZvaWQgUGx1Z2luVmll
dzo6cmVzdGFydCgpCi17Ci19Ci0gCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
UGxhdGZvcm1MYXllciogUGx1Z2luVmlldzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAkocmV2aXNp
b24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA2NiwzNCArMTA2Niw0IEBAIFBhc3NSZWZQdHI8SW1hZ2U+
IFBsdWdpblZpZXc6OnNuYXBzaG90KCkKICNlbmRpZgogfQogCi12b2lkIFBsdWdpblZpZXc6Omhh
bHQoKQotewotICAgIEFTU0VSVCghbV9pc0hhbHRlZCk7Ci0gICAgQVNTRVJUKG1faXNTdGFydGVk
KTsKLQotI2lmICFQTEFURk9STShRVCkKLSAgICAvLyBTaG93IGEgc2NyZWVuc2hvdCBvZiB0aGUg
cGx1Zy1pbi4KLSAgICB0b1JlbmRlcldpZGdldChtX2VsZW1lbnQtPnJlbmRlcmVyKCkpLT5zaG93
U3Vic3RpdHV0ZUltYWdlKHNuYXBzaG90KCkpOwotI2VuZGlmCi0KLSAgICBtX2lzSGFsdGVkID0g
dHJ1ZTsKLSAgICBtX2hhc0JlZW5IYWx0ZWQgPSB0cnVlOwotCi0gICAgc3RvcCgpOwotICAgIHBs
YXRmb3JtRGVzdHJveSgpOwotfQotCi12b2lkIFBsdWdpblZpZXc6OnJlc3RhcnQoKQotewotICAg
IEFTU0VSVCghbV9pc1N0YXJ0ZWQpOwotICAgIEFTU0VSVChtX2lzSGFsdGVkKTsKLQotICAgIC8v
IENsZWFyIGFueSBzdWJzdGl0dXRlIGltYWdlLgotICAgIHRvUmVuZGVyV2lkZ2V0KG1fZWxlbWVu
dC0+cmVuZGVyZXIoKSktPnNob3dTdWJzdGl0dXRlSW1hZ2UoMCk7Ci0KLSAgICBtX2lzSGFsdGVk
ID0gZmFsc2U7Ci0gICAgbV9oYXZlVXBkYXRlZFBsdWdpbldpZGdldCA9IGZhbHNlOwotICAgIHN0
YXJ0KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYs
MTIgKzIxNiw2IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzdHlsZURpZENoYW5nZShTdHlsZUQKICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVyV2lkZ2V0OjpzaG93U3Vic3RpdHV0ZUltYWdlKFBhc3NSZWZQ
dHI8SW1hZ2U+IHBycEltYWdlKQotewotICAgIG1fc3Vic3RpdHV0ZUltYWdlID0gcHJwSW1hZ2U7
Ci0gICAgcmVwYWludCgpOwotfQotCiB2b2lkIFJlbmRlcldpZGdldDo6bm90aWZ5V2lkZ2V0KFdp
ZGdldE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKG1fd2lkZ2V0KQpAQCAt
MjY4LDI1ICsyNjIsMjEgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFp
bgogICAgIGlmIChtX3dpZGdldCkgewogICAgICAgICAvLyBUZWxsIHRoZSB3aWRnZXQgdG8gcGFp
bnQgbm93LiAgVGhpcyBpcyB0aGUgb25seSB0aW1lIHRoZSB3aWRnZXQgaXMgYWxsb3dlZAogICAg
ICAgICAvLyB0byBwYWludCBpdHNlbGYuICBUaGF0IHdheSBpdCB3aWxsIGNvbXBvc2l0ZSBwcm9w
ZXJseSB3aXRoIHotaW5kZXhlZCBsYXllcnMuCi0gICAgICAgIGlmIChtX3N1YnN0aXR1dGVJbWFn
ZSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UobV9zdWJzdGl0dXRl
SW1hZ2UuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgbV93aWRnZXQtPmZyYW1lUmVjdCgp
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRMb2NhdGlv
biA9IG1fd2lkZ2V0LT5mcmFtZVJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICAgICAgTGF5b3V0
UG9pbnQgcGFpbnRMb2NhdGlvbihhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQo
KSArIHBhZGRpbmdMZWZ0KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCkpOwotICAgICAgICAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBwYWlu
dEluZm8ucmVjdDsKLQotICAgICAgICAgICAgTGF5b3V0U2l6ZSB3aWRnZXRQYWludE9mZnNldCA9
IHBhaW50TG9jYXRpb24gLSB3aWRnZXRMb2NhdGlvbjsKLSAgICAgICAgICAgIC8vIFdoZW4gcGFp
bnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0aW5nIGxheWVycywgdHggYW5kIHR5IGFyZSByZWxh
dGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLAotICAgICAgICAgICAgLy8g
bm90IHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUg
cGFpbnRSZWN0IHRvIGJlIHJvb3QtcmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KLSAg
ICAgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpIHsKLSAgICAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBw
YWludFJlY3QpOwotCi0gICAgICAgICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygp
KQotICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXdpZGdldFBh
aW50T2Zmc2V0KTsKKyAgICAgICAgTGF5b3V0UG9pbnQgd2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdl
dC0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgcGFpbnRMb2Nh
dGlvbihhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkp
OworICAgICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OworCisgICAg
ICAgIExheW91dFNpemUgd2lkZ2V0UGFpbnRPZmZzZXQgPSBwYWludExvY2F0aW9uIC0gd2lkZ2V0
TG9jYXRpb247CisgICAgICAgIC8vIFdoZW4gcGFpbnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0
aW5nIGxheWVycywgdHggYW5kIHR5IGFyZSByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBv
c2l0aW5nIGxheWVyLAorICAgICAgICAvLyBub3QgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2hp
ZnQgdGhlIENUTSBhbmQgYWRqdXN0IHRoZSBwYWludFJlY3QgdG8gYmUgcm9vdC1yZWxhdGl2ZSB0
byBmaXggcGx1Zy1pbiBkcmF3aW5nLgorICAgICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0Lmlz
WmVybygpKSB7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHdpZGdl
dFBhaW50T2Zmc2V0KTsKKyAgICAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9m
ZnNldCk7CiAgICAgICAgIH0KKyAgICAgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250
ZXh0LCBwYWludFJlY3QpOworCisgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJv
KCkpCisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC13aWRnZXRQYWlu
dE9mZnNldCk7CiAKICAgICAgICAgaWYgKG1fd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7CiAgICAg
ICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1f
d2lkZ2V0LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpZGdldFBvc2l0aW9uc1VwZGF0ZWQoKTsKICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHNob3dTdWJzdGl0dXRlSW1hZ2UoUGFzc1JlZlB0cjxJbWFnZT4p
OwotCiAgICAgdm9pZCBub3RpZnlXaWRnZXQoV2lkZ2V0Tm90aWZpY2F0aW9uKTsKICAgICAKICAg
ICBzdGF0aWMgdm9pZCBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwpAQCAtNzQsNyAr
NzIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0V2lkZ2V0R2VvbWV0cnkoY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFNpemUmKTsKIAogICAgIFJlZlB0cjxXaWRnZXQ+IG1fd2lkZ2V0OwotICAg
IFJlZlB0cjxJbWFnZT4gbV9zdWJzdGl0dXRlSW1hZ2U7CiAgICAgRnJhbWVWaWV3KiBtX2ZyYW1l
VmlldzsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7IC8vIFRoZSByZWN0YW5nbGUgbmVlZHMgdG8g
cmVtYWluIGNvcnJlY3QgYWZ0ZXIgc2Nyb2xsaW5nLCBzbyBpdCBpcyBzdG9yZWQgaW4gY29udGVu
dCB2aWV3IGNvb3JkaW5hdGVzLCBhbmQgbm90IGNsaXBwZWQgdG8gd2luZG93LgogICAgIGludCBt
X3JlZkNvdW50OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wOC0wNCAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQ
bHVnaW5IYWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMgZnJvbSBYY29kZSBwcm9qZWN0LgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTEtMDctMjggIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgc3FsIHRvIHN2bjppZ25vcmUg
YW5kIHJlbW92ZSBhcHAuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEs
NiBAQAogCQkwNjVBRDVBNDBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjVBRDVB
MjBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQubW0gKi87IH07CiAJCTA2
NjkzRERDMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NjkzRERBMEJGQkE4NTIwMDIx
NjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCAqLzsgfTsKIAkJMDY2OTNEREQwQkZCQTg1MjAw
MjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NjkzRERCMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNw
ZWN0b3JDbGllbnQubW0gKi87IH07Ci0JCTBBMkQ4N0ZEMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQ
bHVnaW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBBMkQ4N0ZCMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGll
bnQuaCAqLzsgfTsKLQkJMEEyRDg3RkUxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRl
ckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBBMkQ4N0ZDMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0gKi87
IH07CiAJCTBBQjc1MjM3MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNo
ZWNrQ29udGV4dEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBBQjc1MjM1MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNo
ZWNrQ29udGV4dEluZm8uaCAqLzsgfTsKIAkJMEFCNzUyMzgwRkEyRTREQjAwRDdDQkIxIC8qIFdl
Yk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAvKiBX
ZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi87IH07CiAJCTBBQ0U5MTcz
MTBGRTQ3RTMwMDk2QTQ1RiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFDRTkxNzIxMEZFNDdFMzAwOTZBNDVGIC8q
IE9wZW5HTC5mcmFtZXdvcmsgKi87IH07CkBAIC0zODksOCArMzg3LDYgQEAKIAkJMDY1QUQ1QTIw
QjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51Q2xpZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNjY5M0REQTBCRkJBODUyMDAyMTYwNzIgLyogV2Vi
SW5zcGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJ
bnNwZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDY2OTNEREIw
QkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvckNsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEEyRDg3RkIxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdp
bkhhbHRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbHVn
aW5IYWx0ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEEyRDg3RkMx
MDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEFCNzUyMzUwRkEyRTREQjAwRDdDQkIxIC8qIFdl
Yk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIxIC8qIFdl
Yk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5m
by5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEFDRTkxNzIxMEZFNDdFMzAwOTZB
NDVGIC8qIE9wZW5HTC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IE9wZW5HTC5mcmFtZXdv
cms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtMTMyMiw4ICsxMzE4LDYgQEAKIAkJCQk4
NDcyM0JFNDA1NkQ3MTlFMDA0NEJGRUEgLyogV2ViS2V5R2VuZXJhdG9yLm1tICovLAogCQkJCTFB
QTg3OUI0MTFDQkU5QkYwMDNDNjY0RiAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLywKIAkJ
CQkxQUE4NzlCNTExQ0JFOUJGMDAzQzY2NEYgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tICov
LAotCQkJCTBBMkQ4N0ZCMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQu
aCAqLywKLQkJCQkwQTJEODdGQzEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xp
ZW50Lm1tICovLAogCQkJCUE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9y
aWdpbi5tbSAqLywKIAkJCQlBNURFRkMwODExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oICovLAogCQkJCUE1REVGQzA5MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJT
ZWN1cml0eU9yaWdpblByaXZhdGUuaCAqLywKQEAgLTE1NzUsNyArMTU2OSw2IEBACiAJCQkJOTM5
ODEwQjAwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRhaW5lclByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOTgxMDM3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAzODA4MjRCRjAxMDA4REYwMzggLyog
V2ViUGx1Z2luRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBBMkQ4N0ZEMTA3QUY1MkIw
MENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
OTgxMDM5MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5QYWNrYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyMjVGODgxNTA5Rjk3RThBMDA0MjNBNDAgLyogV2ViUGx1Z2luUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE3N0IwMkUwRUU3NzMwNTAwQzhBMUY5IC8qIFdlYlBsdWdpblJl
cXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTk2Nyw3ICsxOTYwLDYgQEAKIAkJCQk5Mzk4MTEy
NjA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0gaW4gU291cmNl
cyAqLywKIAkJCQk5Mzk4MTBEQTA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udHJvbGxl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMERCMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQ
bHVnaW5EYXRhYmFzZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTBBMkQ4N0ZFMTA3QUY1MkIwMENE
REVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4
MTBEQzA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luUGFja2FnZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBNzdCMDJGMEVFNzczMDUwMEM4QTFGOSAvKiBXZWJQbHVnaW5SZXF1ZXN0Lm0gaW4g
U291cmNlcyAqLywKIAkJCQkyMjQxMDBGOTA5MTgxOTAxMDBEMkQyNjYgLyogV2ViUGx1Z2luc1By
aXZhdGUubSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOCBAQAorMjAxMS0wOC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHBsdWctaW4gaGFsdGVyIGFuZCBhc3Nv
Y2lhdGVkIGNsYXNzZXMuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcuaDoKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW06
CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgaW5pdFdpdGhGcmFtZTpwbHVn
aW5QYWNrYWdlOlVSTDpiYXNlVVJMOk1JTUVUeXBlOmF0dHJpYnV0ZUtleXM6YXR0cmlidXRlVmFs
dWVzOmxvYWRNYW51YWxseTplbGVtZW50OldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJCYXNl
TmV0c2NhcGVQbHVnaW5WaWV3IHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcgc3RvcF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRl
ckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhh
bHRlckNsaWVudC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VL
ZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAg
ICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3Vw
TmFtZTp1c2VzRG9jdW1lbnRWaWV3czpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5j
ZXNDaGFuZ2VkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAx
MS0wOC0wNCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEZ1dHVyZS1w
cm9vZiBYY29kZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgJKHJldmlz
aW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogfQogCi1jbGFzcyBXZWJIYWx0
YWJsZVBsdWdpbjsKLQogLy8gQWxzbyBkZWNsYXJlZCBpbiBXZWJDb3JlL1dpZGdldE1hYy5tbQog
QGludGVyZmFjZSBOU1ZpZXcgKFdpZGdldCkKIC0gKHZvaWQpdmlzaWJsZVJlY3REaWRDaGFuZ2U7
CkBAIC02OCw4ICs2Niw2IEBAIEBpbnRlcmZhY2UgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyA6
IE4KICAgICBCT09MIF9oYXNGb2N1czsKICAgICBCT09MIF9pc0NvbXBsZXRlbHlPYnNjdXJlZDsK
ICAgICBCT09MIF9pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAgQk9PTCBfaXNIYWx0ZWQ7
Ci0gICAgQk9PTCBfaGFzQmVlbkhhbHRlZDsKICAgICBCT09MIF9zbmFwc2hvdHRpbmc7CiAgICAg
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiBfZWxlbWVudDsKQEAgLTc4
LDggKzc0LDYgQEAgQGludGVyZmFjZSBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IDogTgogICAg
IFJldGFpblB0cjxOU1VSTD4gX3NvdXJjZVVSTDsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX2Nh
Y2hlZFNuYXBzaG90OwogICAgIAotICAgIE93blB0cjxXZWJIYWx0YWJsZVBsdWdpbj4gX2hhbHRh
YmxlOwotICAgIAogICAgIE5TVHJhY2tpbmdSZWN0VGFnIF90cmFja2luZ1RhZzsKIH0KIApAQCAt
MTIyLDExICsxMTYsNiBAQCBAaW50ZXJmYWNlIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgOiBO
CiAtICh2b2lkKXN0YXJ0OwogLSAodm9pZClzdG9wOwogCi0tICh2b2lkKWhhbHQ7Ci0tICh2b2lk
KXJlc3VtZUZyb21IYWx0OwotLSAoQk9PTClpc0hhbHRlZDsKLS0gKEJPT0wpaGFzQmVlbkhhbHRl
ZDsKLQogLSAodm9pZClhZGRXaW5kb3dPYnNlcnZlcnM7CiAtICh2b2lkKXJlbW92ZVdpbmRvd09i
c2VydmVyczsKIC0gKEJPT0wpc2hvdWxkQ2xpcE91dFBsdWdpbjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0J
KHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hh
bHRhYmxlUGx1Z2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAg
LTcxLDQ4ICs3MCw2IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBDbGVhclN1YnN0aXQK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLWNsYXNzIFdlYkhhbHRhYmxlUGx1Z2luIDog
cHVibGljIEhhbHRhYmxlUGx1Z2luIHsKLXB1YmxpYzoKLSAgICBXZWJIYWx0YWJsZVBsdWdpbihX
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3KiB2aWV3KQotICAgICAgICA6IG1fdmlldyh2aWV3KQot
ICAgIHsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBoYWx0KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlc3RhcnQoKTsKLSAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3Ry
aW5nIHBsdWdpbk5hbWUoKSBjb25zdDsKLQotICAgIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcq
IG1fdmlldzsKLX07Ci0KLXZvaWQgV2ViSGFsdGFibGVQbHVnaW46OmhhbHQoKQotewotICAgIFtt
X3ZpZXcgaGFsdF07Ci19Ci0KLXZvaWQgV2ViSGFsdGFibGVQbHVnaW46OnJlc3RhcnQoKQoteyAK
LSAgICBbbV92aWV3IHJlc3VtZUZyb21IYWx0XTsKLX0KLSAgICAKLU5vZGUqIFdlYkhhbHRhYmxl
UGx1Z2luOjpub2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fdmlldyBlbGVtZW50XTsKLX0K
LQotYm9vbCBXZWJIYWx0YWJsZVBsdWdpbjo6aXNXaW5kb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgV2ViSGFsdGFibGVQbHVnaW46OnBsdWdpbk5hbWUoKSBj
b25zdAotewotICAgIHJldHVybiBbW21fdmlldyBwbHVnaW5QYWNrYWdlXSBwbHVnaW5JbmZvXS5u
YW1lOwotfQotCiBAaW1wbGVtZW50YXRpb24gV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldwogCiAr
ICh2b2lkKWluaXRpYWxpemUKQEAgLTE2Myw3ICsxMjAsNiBAQCAtIChpZClpbml0V2l0aEZyYW1l
OihOU1JlY3QpZnJhbWUKICAgICAgICAgX21vZGUgPSBOUF9FTUJFRDsKICAgICAKICAgICBfbG9h
ZE1hbnVhbGx5ID0gbG9hZE1hbnVhbGx5OwotICAgIF9oYWx0YWJsZSA9IGFkb3B0UHRyKG5ldyBX
ZWJIYWx0YWJsZVBsdWdpbihzZWxmKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTQ1NCw3
ICs0MTAsNiBAQCAtICh2b2lkKXN0YXJ0CiAgICAgfQogICAgIAogICAgIF9pc1N0YXJ0ZWQgPSBZ
RVM7Ci0gICAgcGFnZS0+ZGlkU3RhcnRQbHVnaW4oX2hhbHRhYmxlLmdldCgpKTsKIAogICAgIFtb
c2VsZiB3ZWJWaWV3XSBhZGRQbHVnaW5JbnN0YW5jZVZpZXc6c2VsZl07CiAKQEAgLTQ4NCwxMSAr
NDM5LDYgQEAgLSAodm9pZClzdG9wCiAgICAgaWYgKCFfaXNTdGFydGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29yZShbc2VsZiB3ZWJGcmFtZV0pKSB7Ci0g
ICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2Ut
PmRpZFN0b3BQbHVnaW4oX2hhbHRhYmxlLmdldCgpKTsKLSAgICB9Ci0gICAgCiAgICAgX2lzU3Rh
cnRlZCA9IE5POwogICAgIAogICAgIFtbc2VsZiB3ZWJWaWV3XSByZW1vdmVQbHVnaW5JbnN0YW5j
ZVZpZXc6c2VsZl07CkBAIC01MDIsNjEgKzQ1Miw2IEBAIC0gKHZvaWQpc3RvcAogICAgIFtzZWxm
IGRlc3Ryb3lQbHVnaW5dOwogfQogCi0tICh2b2lkKWhhbHQKLXsKLSAgICBBU1NFUlQoIV9pc0hh
bHRlZCk7Ci0gICAgQVNTRVJUKF9pc1N0YXJ0ZWQpOwotICAgIEVsZW1lbnQgKmVsZW1lbnQgPSBb
c2VsZiBlbGVtZW50XTsKLSNpZm5kZWYgQlVJTERJTkdfT05fTEVPUEFSRAotICAgIENHSW1hZ2VS
ZWYgY2dJbWFnZSA9IENHSW1hZ2VSZXRhaW4oW2NvcmUoW3NlbGYgd2ViRnJhbWVdKS0+bm9kZUlt
YWdlKGVsZW1lbnQpLmdldCgpIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmls
IGhpbnRzOm5pbF0pOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gaW1h
Z2VSZWYoQWRvcHRDRiwgQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpW2Nv
cmUoW3NlbGYgd2ViRnJhbWVdKS0+bm9kZUltYWdlKGVsZW1lbnQpLmdldCgpIFRJRkZSZXByZXNl
bnRhdGlvbl0sIDApKTsKLSAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBDR0ltYWdlU291cmNlQ3Jl
YXRlSW1hZ2VBdEluZGV4KGltYWdlUmVmLmdldCgpLCAwLCAwKTsKLSNlbmRpZgotICAgIEFTU0VS
VChjZ0ltYWdlKTsKLSAgICAKLSAgICAvLyBCaXRtYXBJbWFnZSB3aWxsIHJlbGVhc2UgdGhlIHBh
c3NlZCBpbiBDR0ltYWdlIG9uIGRlc3RydWN0aW9uLgotICAgIFJlZlB0cjxJbWFnZT4gbm9kZUlt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKLSAgICBBU1NFUlQoZWxlbWVudC0+
cmVuZGVyZXIoKSk7Ci0gICAgdG9SZW5kZXJXaWRnZXQoZWxlbWVudC0+cmVuZGVyZXIoKSktPnNo
b3dTdWJzdGl0dXRlSW1hZ2Uobm9kZUltYWdlKTsKLSAgICBbc2VsZiBzdG9wXTsKLSAgICBfaXNI
YWx0ZWQgPSBZRVM7ICAKLSAgICBfaGFzQmVlbkhhbHRlZCA9IFlFUzsKLX0KLQotLSAodm9pZClf
Y2xlYXJTdWJzdGl0dXRlSW1hZ2UKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gW3NlbGYgZWxl
bWVudF07Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVy
KS0+c2hvd1N1YnN0aXR1dGVJbWFnZSgwKTsKLX0KLQotLSAodm9pZClyZXN1bWVGcm9tSGFsdAot
ewotICAgIEFTU0VSVChfaXNIYWx0ZWQpOwotICAgIEFTU0VSVCghX2lzU3RhcnRlZCk7Ci0gICAg
W3NlbGYgc3RhcnRdOwotICAgIAotICAgIGlmIChfaXNTdGFydGVkKQotICAgICAgICBfaXNIYWx0
ZWQgPSBOTzsKLSAgICAKLSAgICBBU1NFUlQoW3NlbGYgZWxlbWVudF0tPnJlbmRlcmVyKCkpOwot
ICAgIC8vIEZJWE1FIDc0MTc0ODQ6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBwbHVnLWlucyBu
b3QgZHJhd2luZyBpbW1lZGlhdGVseS4gV2UnZCBsaWtlIHRvIGRldGVjdCB3aGVuIHRoZQotICAg
IC8vIHBsdWctaW4gYWN0dWFsbHkgZHJhd3MgaW5zdGVhZCBvZiBqdXN0IGFzc3VtaW5nIGl0IHdp
bGwgZG8gc28gd2l0aGluIDAuNSBzZWNvbmRzIG9mIGJlaW5nIHJlc3RhcnRlZC4KLSAgICBbc2Vs
ZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9jbGVhclN1YnN0aXR1dGVJbWFnZSkgd2l0aE9i
amVjdDpuaWwgYWZ0ZXJEZWxheTpDbGVhclN1YnN0aXR1dGVJbWFnZURlbGF5XTsKLX0KLQotLSAo
Qk9PTClpc0hhbHRlZAotewotICAgIHJldHVybiBfaXNIYWx0ZWQ7Ci19Ci0KIC0gKEJPT0wpc2hv
dWxkQ2xpcE91dFBsdWdpbgogewogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3dd
OwpAQCAtNTk2LDExICs0OTEsNiBAQCAtICh2b2lkKWNsZWFyQ2FjaGVkU25hcHNob3QKICAgICBf
Y2FjaGVkU25hcHNob3QuY2xlYXIoKTsKIH0KIAotLSAoQk9PTCloYXNCZWVuSGFsdGVkCi17Ci0g
ICAgcmV0dXJuIF9oYXNCZWVuSGFsdGVkOwotfQotCiAtICh2b2lkKXZpZXdXaWxsTW92ZVRvV2lu
ZG93OihOU1dpbmRvdyAqKW5ld1dpbmRvdwogewogICAgIC8vIFdlIG11c3QgcmVtb3ZlIHRoZSB0
cmFja2luZyByZWN0IGJlZm9yZSB3ZSBtb3ZlIHRvIHRoZSBuZXcgd2luZG93LgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFs
dGVyQ2xpZW50LmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW1wb3J0IDxXZWJDb3JlL1BsdWdpbkhhbHRlckNsaWVudC5oPgotI2ltcG9ydCA8d3RmL0Zvcndh
cmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIE5vZGU7Ci19Ci0KLUBjbGFz
cyBXZWJWaWV3OwotCi1jbGFzcyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6UGx1Z2luSGFsdGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBXZWJQbHVnaW5IYWx0ZXJDbGll
bnQoV2ViVmlldyAqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGFsdFBsdWdpbihX
ZWJDb3JlOjpOb2RlKiwgYm9vbCwgY29uc3QgV1RGOjpTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0OwotICAgIAotcHJpdmF0ZToKLSAgICBXZWJWaWV3ICpt
X3dlYlZpZXc7Ci19OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z2luSGFsdGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5tbQkocmV2aXNpb24gOTI0ODIpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJXZWJQbHVnaW5IYWx0ZXJDbGllbnQu
aCIKLQotI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGluZy5oIgotI2ltcG9ydCAiV2ViVmlldy5oIgotI2ltcG9ydCA8V2Vi
Q29yZS9QbGF0Zm9ybVN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotV2Vi
UGx1Z2luSGFsdGVyQ2xpZW50OjpXZWJQbHVnaW5IYWx0ZXJDbGllbnQoV2ViVmlldyAqd2ViVmll
dykKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQotewotICAgIEFTU0VSVF9BUkcod2ViVmlldywg
d2ViVmlldyk7Ci19Ci0KLWJvb2wgV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjpzaG91bGRIYWx0UGx1
Z2luKE5vZGUqIHBsdWdpbk5vZGUsIGJvb2wgaXNXaW5kb3dlZCwgY29uc3QgU3RyaW5nJiBwbHVn
aW5OYW1lKSBjb25zdAotewotICAgIEFTU0VSVF9BUkcocGx1Z2luTm9kZSwgcGx1Z2luTm9kZSk7
Ci0gICAgcmV0dXJuIENhbGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihOTywgbV93ZWJWaWV3
LCBAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRIYWx0UGx1Z2luOmlzV2luZG93ZWQ6cGx1Z2luTmFt
ZTopLCBraXQocGx1Z2luTm9kZSksIGlzV2luZG93ZWQsIChOU1N0cmluZyAqKXBsdWdpbk5hbWUp
OwotfQotCi1ib29sIFdlYlBsdWdpbkhhbHRlckNsaWVudDo6ZW5hYmxlZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Iod2ViVmlldzpzaG91bGRIYWx0UGx1Z2luOmlzV2luZG93ZWQ6cGx1Z2luTmFtZTopXTsK
LX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlS2V5c1ByaXZhdGUuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3
ICs5OCw2IEBACiAjZGVmaW5lIFdlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRXZWJBdWRpb0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMRW5hYmxlZFByZWZlcmVu
Y2VLZXkgQCJXZWJLaXRXZWJHTEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEFjY2VsZXJhdGVkMmRD
YW52YXNFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEFjY2VsZXJhdGVkMmRDYW52YXNFbmFi
bGVkIgotI2RlZmluZSBXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZSIKICNkZWZpbmUgV2ViS2l0RnJhbWVGbGF0dGVuaW5n
RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkIgogI2Rl
ZmluZSBXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkIgogI2RlZmluZSBXZWJLaXRQYWdpbmF0ZUR1cmluZ0xh
eW91dEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFi
bGVkIgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw3ICszNjcsNiBAQCArICh2b2lkKWluaXRp
YWxpemUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRTaG93
UmVwYWludENvdW50ZXJQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Tk9dLCAgIFdlYktpdFdlYkdMRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0QWNjZWxlcmF0ZWQyZENhbnZhc0Vu
YWJsZWRQcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVk
SW50OjRdLCBXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXksCiAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10s
ICAgV2ViS2l0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgIFdlYktpdEROU1ByZWZldGNoaW5nRW5hYmxl
ZFByZWZlcmVuY2VLZXksCkBAIC0xMzMzLDE2ICsxMzMyLDYgQEAgLSAodm9pZClzZXRBY2NlbGVy
YXRlZDJkQ2FudmFzRW5hYmxlZDooQgogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBm
b3JLZXk6V2ViS2l0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKIH0K
IAotLSAodW5zaWduZWQpcGx1Z2luQWxsb3dlZFJ1blRpbWUKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2ludGVnZXJWYWx1ZUZvcktleTpXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VL
ZXldOwotfQotCi0tICh2b2lkKXNldFBsdWdpbkFsbG93ZWRSdW5UaW1lOih1bnNpZ25lZClhbGxv
d2VkUnVuVGltZQotewotICAgIHJldHVybiBbc2VsZiBfc2V0SW50ZWdlclZhbHVlOmFsbG93ZWRS
dW5UaW1lIGZvcktleTpXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXldOwot
fQotCiAtIChCT09MKWlzRnJhbWVGbGF0dGVuaW5nRW5hYmxlZAogewogICAgIHJldHVybiBbc2Vs
ZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsOSArMTI2
LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIC0gKEJPT0wpZXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQ7CiAtICh2b2lkKXNldEV4cGVyaW1lbnRhbE5v
dGlmaWNhdGlvbnNFbmFibGVkOihCT09MKW5vdGlmaWNhdGlvbnNFbmFibGVkOwogCi0tICh1bnNp
Z25lZClwbHVnaW5BbGxvd2VkUnVuVGltZTsKLS0gKHZvaWQpc2V0UGx1Z2luQWxsb3dlZFJ1blRp
bWU6KHVuc2lnbmVkKWFsbG93ZWRSdW5UaW1lOwotCiAtIChCT09MKWlzRnJhbWVGbGF0dGVuaW5n
RW5hYmxlZDsKIC0gKHZvaWQpc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZDooQk9PTClmbGFnOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA5MjQ4MikK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtOTEsNyArOTEsNiBAQAogI2ltcG9ydCAiV2ViUGFuZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIu
aCIKICNpbXBvcnQgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiV2ViUGx1Z2lu
RGF0YWJhc2UuaCIKLSNpbXBvcnQgIldlYlBsdWdpbkhhbHRlckNsaWVudC5oIgogI2ltcG9ydCAi
V2ViUG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
IgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgiCkBAIC03NDQsNyArNzQzLDYgQEAg
LSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgIHBhZ2VDbGllbnRz
LmVkaXRvckNsaWVudCA9IG5ldyBXZWJFZGl0b3JDbGllbnQoc2VsZik7CiAgICAgcGFnZUNsaWVu
dHMuZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDbGllbnRz
Lmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZik7Ci0gICAgcGFn
ZUNsaWVudHMucGx1Z2luSGFsdGVyQ2xpZW50ID0gYWRvcHRQdHIobmV3IFdlYlBsdWdpbkhhbHRl
ckNsaWVudChzZWxmKSk7CiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAg
ICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVu
dChzZWxmKTsKICNlbmRpZgpAQCAtMTU2Myw3ICsxNTYxLDYgQEAgLSAodm9pZClfcHJlZmVyZW5j
ZXNDaGFuZ2VkOihXZWJQcmVmZXJlbgogICAgIHNldHRpbmdzLT5zZXRDYW52YXNVc2VzQWNjZWxl
cmF0ZWREcmF3aW5nKFtwcmVmZXJlbmNlcyBjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nXSk7
ICAgIAogICAgIHNldHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJzKFtwcmVmZXJlbmNlcyBzaG93
RGVidWdCb3JkZXJzXSk7CiAgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihbcHJl
ZmVyZW5jZXMgc2hvd1JlcGFpbnRDb3VudGVyXSk7Ci0gICAgc2V0dGluZ3MtPnNldFBsdWdpbkFs
bG93ZWRSdW5UaW1lKFtwcmVmZXJlbmNlcyBwbHVnaW5BbGxvd2VkUnVuVGltZV0pOwogICAgIHNl
dHRpbmdzLT5zZXRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkF1ZGlvRW5hYmxlZF0p
OwogICAgIHNldHRpbmdzLT5zZXRXZWJHTEVuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkdMRW5hYmxl
ZF0pOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChbcHJlZmVy
ZW5jZXMgYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRdKTsKQEAgLTI1MzksNTkgKzI1MzYsNiBA
QCAtIChCT09MKV9pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5CiAgICAgcmV0dXJuIF9w
cml2YXRlLT5pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0Jp
dG1hcDsKIH0KIAotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotc3RhdGljIFdlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcgKl9wbHVnaW5WaWV3Rm9yTm9kZShET01Ob2RlICpub2RlKQot
ewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOb2RlKiBj
b3JlTm9kZSA9IGNvcmUobm9kZSk7Ci0gICAgaWYgKCFjb3JlTm9kZSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZU5vZGUtPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdl
dChyZW5kZXJlciktPndpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPnBsYXRm
b3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgTlNWaWV3ICp2aWV3
ID0gd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpOwotICAgIGlmICghW3ZpZXcgaXNLaW5kT2ZDbGFz
czpbV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBjbGFzc11dKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIHJldHVybiAoV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqKXZpZXc7Ci19
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLSsgKEJPT0wpX2lzTm9k
ZUhhbHRlZFBsdWdpbjooRE9NTm9kZSAqKW5vZGUKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLSAgICByZXR1cm4gW19wbHVnaW5WaWV3Rm9yTm9kZShub2RlKSBpc0hhbHRlZF07
Ci0jZWxzZQotICAgIHJldHVybiBZRVM7Ci0jZW5kaWYKLX0KLQotKyAoQk9PTClfaGFzUGx1Z2lu
Rm9yTm9kZUJlZW5IYWx0ZWQ6KERPTU5vZGUgKilub2RlCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi0gICAgcmV0dXJuIFtfcGx1Z2luVmlld0Zvck5vZGUobm9kZSkgaGFzQmVl
bkhhbHRlZF07Ci0jZWxzZQotICAgIHJldHVybiBZRVM7Ci0jZW5kaWYKLX0KLSsgKHZvaWQpX3Jl
c3RhcnRIYWx0ZWRQbHVnaW5Gb3JOb2RlOihET01Ob2RlICopbm9kZQotewotI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIFtfcGx1Z2luVmlld0Zvck5vZGUobm9kZSkgcmVzdW1lRnJvbUhhbHRdOwotI2VuZGlm
Ci19Ci0KIC0gKE5TUGFzdGVib2FyZCAqKV9pbnNlcnRpb25QYXN0ZWJvYXJkCiB7CiAgICAgcmV0
dXJuIF9wcml2YXRlID8gX3ByaXZhdGUtPmluc2VydGlvblBhc3RlYm9hcmQgOiBuaWw7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiA5
MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAzLDExICs1MDMsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8g
dGhlIEFQSS4KIC0gKHZvaWQpX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNX
aGVuRHJhd2luZ1RvQml0bWFwOihCT09MKWZsYWc7CiAtIChCT09MKV9pbmNsdWRlc0ZsYXR0ZW5l
ZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDsKIAotLy8gU1BJIGZvciBQbHVn
aW5IYWx0ZXIKLSsgKEJPT0wpX2lzTm9kZUhhbHRlZFBsdWdpbjooRE9NTm9kZSAqKW5vZGU7Ci0r
IChCT09MKV9oYXNQbHVnaW5Gb3JOb2RlQmVlbkhhbHRlZDooRE9NTm9kZSAqKW5vZGU7Ci0rICh2
b2lkKV9yZXN0YXJ0SGFsdGVkUGx1Z2luRm9yTm9kZTooRE9NTm9kZSAqKW5vZGU7Ci0KIC8vIFdo
aWNoIHBhc3RlYm9hcmQgdGV4dCBpcyBjb21pbmcgZnJvbSBpbiBlZGl0aW5nIGRlbGVnYXRlIG1l
dGhvZHMgc3VjaCBhcyBzaG91bGRJbnNlcnROb2RlLgogLSAoTlNQYXN0ZWJvYXJkICopX2luc2Vy
dGlvblBhc3RlYm9hcmQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgyKQor
KysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzEgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRl
ZCBjbGFzc2VzLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViUGx1Z2luSGFsdGVyRGVsZWdh
dGUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIEludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJp
dmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsOgorICAg
ICAgICAqIEludGVyZmFjZXMvV2ViS2l0LmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnaW5IYWx0ZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdC52
Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2o6CisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXQu
dmNwcm9qOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXpl
RGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6OmNsb3NlKToKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgorICAgICAgICAo
V2ViVmlldzo6dW51c2VkMSk6CisgICAgICAgIChXZWJWaWV3Ojp1bnVzZWQyKToKKyAgICAgICAg
KFdlYlZpZXc6OnVudXNlZDMpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxMS0wOC0wNCAg
SmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHNldHRpbmcgYW5kIGdldHRpbmcgd2hldGhlciBBVkZvdW5kYXRpb24gaXMgZW5hYmxlZCB0byBJ
V2ViUHJlZmVyZW5jZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VL
ZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsOCArMTM2LDYgQEAK
IAogI2RlZmluZSBXZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1ByZWZlcmVuY2VLZXkgIldl
YktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzIgogCi0jZGVmaW5lIFdlYktpdFBsdWdpbkFsbG93
ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSAiV2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWUiCi0KICNk
ZWZpbmUgV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQiCiAKICNkZWZpbmUgV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDky
NDgyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTYsOSArMjU2LDYgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURl
ZmF1bHRTZQogCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGx1Z2luQWxsb3dlZFJ1blRpbWUoQWRvcHRD
RiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIldSIpLCBudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSksIHBsdWdp
bkFsbG93ZWRSdW5UaW1lLmdldCgpKTsKLQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CkBAIC0xNDkwLDE4ICsxNDg3LDYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlcwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjpzZXRQbHVnaW5BbGxvd2VkUnVuVGltZShVSU5UIGFsbG93ZWRSdW5UaW1lKQot
ewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVBy
ZWZlcmVuY2VLZXkpLCBhbGxvd2VkUnVuVGltZSk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnBsdWdpbkFsbG93ZWRSdW5UaW1lKFVJTlQqIGFsbG93ZWRS
dW5UaW1lKQotewotICAgICphbGxvd2VkUnVuVGltZSA9IGludGVnZXJWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXkpKTsKLSAgICByZXR1cm4g
U19PSzsKLX0KLQogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0UHJlZmVyZW5jZUZvclRlc3Qo
QlNUUiBrZXksIEJTVFIgdmFsdWUpCiB7CiAgICAgaWYgKCFTeXNTdHJpbmdMZW4oa2V5KSB8fCAh
U3lzU3RyaW5nTGVuKHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA5
MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw3ICs1Nyw2IEBACiAjaW5jbHVkZSAiV2ViTXV0YWJsZVVSTFJlcXVlc3QuaCIKICNpbmNs
dWRlICJXZWJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKLSNpbmNsdWRlICJXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlNjcmlwdFdvcmxkLmgiCiAjaW5jbHVkZSAi
cmVzb3VyY2UuaCIKQEAgLTcwOCw3ICs3MDcsNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OmNsb3NlCiAgICAgc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGUoMCk7CiAgICAgc2V0
VUlEZWxlZ2F0ZSgwKTsKICAgICBzZXRGb3JtRGVsZWdhdGUoMCk7Ci0gICAgc2V0UGx1Z2luSGFs
dGVyRGVsZWdhdGUoMCk7CiAKICAgICBpZiAobV93ZWJJbnNwZWN0b3IpCiAgICAgICAgIG1fd2Vi
SW5zcGVjdG9yLT53ZWJWaWV3Q2xvc2VkKCk7CkBAIC0yNjQzLDcgKzI2NDEsNiBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmluaXRXCiAgICAgcGFnZUNsaWVudHMuZWRpdG9y
Q2xpZW50ID0gbmV3IFdlYkVkaXRvckNsaWVudCh0aGlzKTsKICAgICBwYWdlQ2xpZW50cy5kcmFn
Q2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVj
dG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKTsKLSAgICBwYWdlQ2xpZW50
cy5wbHVnaW5IYWx0ZXJDbGllbnQgPSBhZG9wdFB0cihuZXcgV2ViUGx1Z2luSGFsdGVyQ2xpZW50
KHRoaXMpKTsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIHBhZ2VD
bGllbnRzLmdlb2xvY2F0aW9uQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHRoaXMp
OwogI2VuZGlmCkBAIC02NDY3LDg1ICs2NDY0LDM0IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZygKIH0KICNlbmRpZgogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OnNldFBsdWdpbkhhbHRlckRlbGVnYXRlKElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0
ZSogZCkKK0hSRVNVTFQgV2ViVmlldzo6dW51c2VkMSgpCiB7Ci0gICAgbV9wbHVnaW5IYWx0ZXJE
ZWxlZ2F0ZSA9IGQ7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6cGx1Z2luSGFsdGVyRGVsZWdhdGUoSVdlYlBsdWdpbkhhbHRlckRlbGVn
YXRlKiogZCkKLXsKLSAgICBpZiAoIWQpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAg
ICBpZiAoIW1fcGx1Z2luSGFsdGVyRGVsZWdhdGUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0K
LSAgICByZXR1cm4gbV9wbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5jb3B5UmVmVG8oZCk7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAotc3RhdGljIFBsdWdp
blZpZXcqIHBsdWdpblZpZXdGb3JOb2RlKElET01Ob2RlKiBkb21Ob2RlKQorSFJFU1VMVCBXZWJW
aWV3Ojp1bnVzZWQyKCkKIHsKLSAgICBDT01QdHI8RE9NTm9kZT4gd2ViS2l0RE9NTm9kZShRdWVy
eSwgZG9tTm9kZSk7Ci0gICAgaWYgKCF3ZWJLaXRET01Ob2RlKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIE5vZGUqIG5vZGUgPSB3ZWJLaXRET01Ob2RlLT5ub2RlKCk7Ci0gICAgaWYgKCFub2Rl
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgp
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRn
ZXQocmVuZGVyZXIpLT53aWRnZXQoKTsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc1Bs
dWdpblZpZXcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
UGx1Z2luVmlldyo+KHdpZGdldCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEVfRkFJTDsKIH0KIAotSFJFU1VMVCBXZWJWaWV3Ojppc05vZGVIYWx0ZWRQbHVnaW4oSURP
TU5vZGUqIGRvbU5vZGUsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViVmlldzo6dW51c2VkMygp
CiB7Ci0gICAgaWYgKCFkb21Ob2RlIHx8ICFyZXN1bHQpCi0gICAgICAgIHJldHVybiBFX1BPSU5U
RVI7Ci0KLSAgICAqcmVzdWx0ID0gRkFMU0U7Ci0KLSAgICBQbHVnaW5WaWV3KiB2aWV3ID0gcGx1
Z2luVmlld0Zvck5vZGUoZG9tTm9kZSk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4g
RV9GQUlMOwotCi0gICAgKnJlc3VsdCA9IHZpZXctPmlzSGFsdGVkKCk7Ci0gICAgcmV0dXJuIFNf
T0s7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAot
SFJFU1VMVCBXZWJWaWV3OjpyZXN0YXJ0SGFsdGVkUGx1Z2luRm9yTm9kZShJRE9NTm9kZSogZG9t
Tm9kZSkKK0hSRVNVTFQgV2ViVmlldzo6dW51c2VkNCgpCiB7Ci0gICAgaWYgKCFkb21Ob2RlKQot
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgUGx1Z2luVmlldyogdmlldyA9IHBsdWdp
blZpZXdGb3JOb2RlKGRvbU5vZGUpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIEVf
RkFJTDsKLQotICAgIHZpZXctPnJlc3RhcnQoKTsKLSAgICByZXR1cm4gU19PSzsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVTVUxUIFdlYlZp
ZXc6Omhhc1BsdWdpbkZvck5vZGVCZWVuSGFsdGVkKElET01Ob2RlKiBkb21Ob2RlLCBCT09MKiBy
ZXN1bHQpCitIUkVTVUxUIFdlYlZpZXc6OnVudXNlZDUoKQogewotICAgIGlmICghZG9tTm9kZSB8
fCAhcmVzdWx0KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgKnJlc3VsdCA9IEZB
TFNFOwotCi0gICAgUGx1Z2luVmlldyogdmlldyA9IHBsdWdpblZpZXdGb3JOb2RlKGRvbU5vZGUp
OwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgICpyZXN1bHQg
PSB2aWV3LT5oYXNCZWVuSGFsdGVkKCk7Ci0gICAgcmV0dXJuIFNfT0s7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAogSFJFU1VMVCBXZWJWaWV3Ojpz
ZXRHZW9sb2NhdGlvblByb3ZpZGVyKElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiBsb2NhdGlvblBy
b3ZpZGVyKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwMiw4ICs4MDIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVVzZXJT
dHlsZVNoZWV0c0Zyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxkKik7CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUFsbFVzZXJDb250ZW50
RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lKTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRQbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2ViUGx1Z2luSGFsdGVyRGVsZWdh
dGUqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGx1Z2luSGFsdGVy
RGVsZWdhdGUoSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlKiopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQxKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHVudXNlZDIoKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpbnZhbGlkYXRlQmFja2luZ1N0b3JlKGNvbnN0IFJFQ1QqKTsKIApAQCAtODE1LDkg
KzgxNSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aGlzdG9yeURlbGVnYXRlKElXZWJIaXN0b3J5RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUpOwog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRWaXNpdGVkTGlua3MoQlNU
UiogdmlzaXRlZFVSTHMsIHVuc2lnbmVkIHZpc2l0ZWRVUkxDb3VudCk7CiAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNOb2RlSGFsdGVkUGx1Z2luKElET01Ob2RlKiwg
Qk9PTCopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXN0YXJ0SGFs
dGVkUGx1Z2luRm9yTm9kZShJRE9NTm9kZSopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBoYXNQbHVnaW5Gb3JOb2RlQmVlbkhhbHRlZChJRE9NTm9kZSosIEJPT0wqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMygpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQ0KCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDUoKTsKIAogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRHZW9sb2NhdGlvblByb3ZpZGVyKElXZWJHZW9sb2NhdGlv
blByb3ZpZGVyKiBsb2NhdGlvblByb3ZpZGVyKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZ2VvbG9jYXRpb25Qcm92aWRlcihJV2ViR2VvbG9jYXRpb25Qcm92aWRlcioq
IGxvY2F0aW9uUHJvdmlkZXIpOwpAQCAtMTA1OSw3ICsxMDU5LDYgQEAgcHJvdGVjdGVkOgogICAg
IENPTVB0cjxJV2ViSGlzdG9yeURlbGVnYXRlPiBtX2hpc3RvcnlEZWxlZ2F0ZTsKICAgICBDT01Q
dHI8V2ViUHJlZmVyZW5jZXM+IG1fcHJlZmVyZW5jZXM7CiAgICAgQ09NUHRyPFdlYkluc3BlY3Rv
cj4gbV93ZWJJbnNwZWN0b3I7Ci0gICAgQ09NUHRyPElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZT4g
bV9wbHVnaW5IYWx0ZXJEZWxlZ2F0ZTsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0aW9uUHJvdmlk
ZXI+IG1fZ2VvbG9jYXRpb25Qcm92aWRlcjsKIAogICAgIGJvb2wgbV91c2VyQWdlbnRPdmVycmlk
ZGVuOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUGx1Z2luSGFsdGVy
RGVsZWdhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlLmlkbAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERPX05PX0lNUE9SVFMKLWltcG9ydCAib2FpZGwuaWRs
IjsKLWltcG9ydCAib2NpZGwuaWRsIjsKLSNlbmRpZgotCi1pbnRlcmZhY2UgSURPTU5vZGU7Ci1p
bnRlcmZhY2UgSVdlYlZpZXc7Ci0KLVsKLSAgICBvYmplY3QsCi0gICAgb2xlYXV0b21hdGlvbiwK
LSAgICB1dWlkKDJlMGU1ZDllLWZmYzktNDE4NS1hYTE1LWU2Njg2OGQ1NDhlZSksCi0gICAgcG9p
bnRlcl9kZWZhdWx0KHVuaXF1ZSkKLV0KLWludGVyZmFjZSBJV2ViUGx1Z2luSGFsdGVyRGVsZWdh
dGUgOiBJVW5rbm93bgotewotICAgIEhSRVNVTFQgc2hvdWxkSGFsdFBsdWdpbihbaW5dIElXZWJW
aWV3KiB3ZWJWaWV3LCBbaW5dIElET01Ob2RlKiwgW2luXSBCT09MIGlzV2luZG93ZWQsIFtpbl0g
QlNUUiBwbHVnaW5OYW1lLCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7Ci19CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5pZGwJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCAr
OTIsOCBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzUHJpdmF0ZSA6IElVbmtuCiAgICAgLy8g
VXNlZCBieSBEdW1wUmVuZGVyVHJlZS4KICAgICBIUkVTVUxUIHNldFByZWZlcmVuY2VGb3JUZXN0
KFtpbl0gQlNUUiBrZXksIFtpbl0gQlNUUiB2YWx1ZSk7CiAKLSAgICBIUkVTVUxUIHNldFBsdWdp
bkFsbG93ZWRSdW5UaW1lKFtpbl0gVUlOVCBhbGxvd2VkUnVuVGltZSk7Ci0gICAgSFJFU1VMVCBw
bHVnaW5BbGxvd2VkUnVuVGltZShbb3V0LCByZXR2YWxdIFVJTlQqIGFsbG93ZWRSdW5UaW1lKTsK
KyAgICBIUkVTVUxUIHVudXNlZDEoKTsKKyAgICBIUkVTVUxUIHVudXNlZDIoKTsKIAogICAgIEhS
RVNVTFQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoW2luXSBCT09MKTsKICAgICBI
UkVTVUxUIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCop
OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2
YXRlLmlkbAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJWaWV3UHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgaW50
ZXJmYWNlIElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGU7CiBpbnRlcmZhY2UgSVdlYkhpc3Rv
cnlEZWxlZ2F0ZTsKIGludGVyZmFjZSBJV2ViSW5zcGVjdG9yOwogaW50ZXJmYWNlIElXZWJJbnNw
ZWN0b3JQcml2YXRlOwotaW50ZXJmYWNlIElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZTsKIGludGVy
ZmFjZSBJV2ViVVJMUmVxdWVzdDsKIGludGVyZmFjZSBJV2ViVmlldzsKIApAQCAtMTk3LDggKzE5
Niw4IEBAIGludGVyZmFjZSBJV2ViVmlld1ByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQg
cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbUdyb3VwKFtpbl0gQlNUUiBncm91cE5hbWUsIFtpbl0g
SVdlYlNjcmlwdFdvcmxkKik7CiAgICAgSFJFU1VMVCByZW1vdmVBbGxVc2VyQ29udGVudEZyb21H
cm91cChbaW5dIEJTVFIgZ3JvdXBOYW1lKTsKIAotICAgIEhSRVNVTFQgc2V0UGx1Z2luSGFsdGVy
RGVsZWdhdGUoW2luXSBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqIGQpOwotICAgIEhSRVNVTFQg
cGx1Z2luSGFsdGVyRGVsZWdhdGUoW3JldHZhbCwgb3V0XSBJV2ViUGx1Z2luSGFsdGVyRGVsZWdh
dGUqKiBkKTsKKyAgICBIUkVTVUxUIHVudXNlZDEoKTsKKyAgICBIUkVTVUxUIHVudXNlZDIoKTsK
IAogICAgIC8vIElmIHJlY3QgaXMgMCwgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlIHdpbGwgYmUg
aW52YWxpZGF0ZWQuCiAgICAgSFJFU1VMVCBpbnZhbGlkYXRlQmFja2luZ1N0b3JlKFtpbl0gY29u
c3QgUkVDVCogcmVjdCk7CkBAIC0yMTksOSArMjE4LDkgQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJp
dmF0ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCBoaXN0b3J5RGVsZWdhdGUoW291dCxyZXR2YWxd
IElXZWJIaXN0b3J5RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUpOwogICAgIEhSRVNVTFQgYWRk
VmlzaXRlZExpbmtzKFtpbl0gQlNUUiogdmlzaXRlZFVSTHMsIFtpbl0gdW5zaWduZWQgdmlzaXRl
ZFVSTENvdW50KTsKIAotICAgIEhSRVNVTFQgaXNOb2RlSGFsdGVkUGx1Z2luKFtpbl0gSURPTU5v
ZGUqLCBbcmV0dmFsLCBvdXRdIEJPT0wqKTsKLSAgICBIUkVTVUxUIHJlc3RhcnRIYWx0ZWRQbHVn
aW5Gb3JOb2RlKFtpbl0gSURPTU5vZGUqKTsKLSAgICBIUkVTVUxUIGhhc1BsdWdpbkZvck5vZGVC
ZWVuSGFsdGVkKFtpbl0gSURPTU5vZGUqLCBbcmV0dmFsLCBvdXRdIEJPT0wqKTsKKyAgICBIUkVT
VUxUIHVudXNlZDMoKTsKKyAgICBIUkVTVUxUIHVudXNlZDQoKTsKKyAgICBIUkVTVUxUIHVudXNl
ZDUoKTsKIAogICAgIEhSRVNVTFQgc2V0R2VvbG9jYXRpb25Qcm92aWRlcihbaW5dIElXZWJHZW9s
b2NhdGlvblByb3ZpZGVyKiBsb2NhdGlvblByb3ZpZGVyKTsKICAgICBIUkVTVUxUIGdlb2xvY2F0
aW9uUHJvdmlkZXIoW291dCwgcmV0dmFsXSBJV2ViR2VvbG9jYXRpb25Qcm92aWRlcioqIGxvY2F0
aW9uUHJvdmlkZXIpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0Lmlk
bAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktp
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNiBAQCBpbXBvcnQgIm9jaWRsLmlk
bCI7CiAjaW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlvbi5pZGwiCiAjaW5jbHVkZSAiSVdlYk5vdGlm
aWNhdGlvbkNlbnRlci5pZGwiCiAjaW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyLmlk
bCIKLSNpbmNsdWRlICJJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUuaWRsIgogI2luY2x1ZGUgIklX
ZWJQb2xpY3lEZWxlZ2F0ZS5pZGwiCiAjaW5jbHVkZSAiSVdlYlBvbGljeURlbGVnYXRlUHJpdmF0
ZS5pZGwiCiAjaW5jbHVkZSAiSVdlYlByZWZlcmVuY2VzLmlkbCIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xp
ZW50LmNwcAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0K
LSNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vZGUuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjpXZWJQbHVnaW5I
YWx0ZXJDbGllbnQoV2ViVmlldyogd2ViVmlldykKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQot
ewotICAgIEFTU0VSVF9BUkcod2ViVmlldywgd2ViVmlldyk7Ci19Ci0KLWJvb2wgV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50OjpzaG91bGRIYWx0UGx1Z2luKE5vZGUqIG4sIGJvb2wgaXNXaW5kb3dlZCwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5OYW1lKSBjb25zdAotewotICAgIEFTU0VSVF9BUkcobiwgbik7
Ci0KLSAgICBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqIGQ7Ci0gICAgaWYgKEZBSUxFRChtX3dl
YlZpZXctPnBsdWdpbkhhbHRlckRlbGVnYXRlKCZkKSkgfHwgIWQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIENPTVB0cjxJRE9NTm9kZT4gZG9tTm9kZShBZG9wdENPTSwgRE9NTm9kZTo6
Y3JlYXRlSW5zdGFuY2UobikpOwotCi0gICAgQk9PTCBzaG91bGRIYWx0OwotICAgIGlmIChGQUlM
RUQoZC0+c2hvdWxkSGFsdFBsdWdpbihtX3dlYlZpZXcsIGRvbU5vZGUuZ2V0KCksIGlzV2luZG93
ZWQsIEJTdHJpbmcocGx1Z2luTmFtZSksICZzaG91bGRIYWx0KSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBzaG91bGRIYWx0OwotfQotCi1ib29sIFdlYlBsdWdpbkhhbHRl
ckNsaWVudDo6ZW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRl
KiBkOwotICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5wbHVnaW5IYWx0ZXJEZWxlZ2F0ZSgmZCkp
IHx8ICFkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkhhbHRlckNsaWVudC5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2lmbmRlZiBXZWJQbHVnaW5IYWx0ZXJDbGllbnRfaAotI2RlZmluZSBXZWJQbHVnaW5I
YWx0ZXJDbGllbnRfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5IYWx0ZXJDbGllbnQuaD4K
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgTm9kZTsKLX0KLQotY2xhc3MgV2ViVmlldzsKLQotY2xhc3MgV2ViUGx1Z2luSGFsdGVyQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkhhbHRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAg
V2ViUGx1Z2luSGFsdGVyQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpOwotCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZEhhbHRQbHVnaW4oV2ViQ29yZTo6Tm9kZSogbiwgYm9vbCBpc1dpbmRvd2VkLCBj
b25zdCBXVEY6OlN0cmluZyYgcGx1Z2luTmFtZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGVu
YWJsZWQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBXZWJWaWV3KiBtX3dlYlZpZXc7Ci19Owot
Ci0jZW5kaWYgLy8gV2ViUGx1Z2luSGFsdGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvagkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDY1LDU4ICszMDY1LDYgQEAKIAkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CiAJCTwvRmlsZT4KIAkJPEZpbGUKLQkJCVJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNl
c1xJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUuaWRsIgotCQkJPgotCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
Ci0JCQkJPgotCQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJLz4KLQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQlOYW1lPSJSZWxl
YXNlfFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9v
bAotCQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgotCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wKLQkJCQkJTmFtZT0i
VkNNSURMVG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgotCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKLQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wKLQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJ
CQkvPgotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+
Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgotCQk8L0ZpbGU+Ci0JCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9
Ii4uXEludGVyZmFjZXNcSVdlYlBvbGljeURlbGVnYXRlLmlkbCIKIAkJCT4KIAkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2Vi
S2l0LnZjcHJvagkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdC52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNDMsMTQgKzEyNDMsNiBA
QAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViQ29yZVN1cHBvcnRcV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCiAJCQkJPgogCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYkNvcmVTdXBwb3J0XFdlYlBsdWdpbkhhbHRlckNsaWVudC5jcHAiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYlBs
dWdpbkhhbHRlckNsaWVudC5oIgotCQkJCT4KLQkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxG
aWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYktpdFByZWZpeC5jcHAiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA4LTA0ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBpbmNsdWRl
IFBsdWdpbkhhbHRlckNsaWVudC5oLCBpdCdzIGJlZW4gcmVtb3ZlZC4KKworICAgICAgICAqIFdl
YlZpZXcuY3BwOgorCiAyMDExLTA4LTAzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBOb2RlIHBhcmFtZXRlciBm
cm9tIHRoZSBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodApJbmRleDogU291cmNlL1dlYktpdC93
eC9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3Bw
CShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxF
dmVudC5oIgotI2luY2x1ZGUgIlBsdWdpbkhhbHRlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZU1hbmFnZXIuaCIKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBjYWxsIHRvIHNl
dCB0aGUgYWxsb3dlZCBwbHVnLWluIHJ1biB0aW1lLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlcyk6CisKIDIwMTEtMDgtMDUgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyLiAgPGFk
ZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgg
Zm9yIFF0LU1pbmltYWwgYnVpbGRib3QKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDkyNDgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDcsNyArNDQ3LDYg
QEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgIFtwcmVmZXJl
bmNlcyBzZXRDYWNoZU1vZGVsOldlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXJdOwogICAgIFtw
cmVmZXJlbmNlcyBzZXRYU1NBdWRpdG9yRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNl
dEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkOk5PXTsKLSAgICBbcHJlZmVyZW5jZXMg
c2V0UGx1Z2luQWxsb3dlZFJ1blRpbWU6MV07CiAgICAgW3ByZWZlcmVuY2VzIHNldFBsdWdJbnNF
bmFibGVkOllFU107CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZDpOT107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103084</attachid>
            <date>2011-08-05 10:26:17 -0700</date>
            <delta_ts>2011-08-05 10:55:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65729-20110805102616.patch</filename>
            <type>text/plain</type>
            <size>82732</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFs
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAqIHBhZ2UvSGFsdGFibGVQbHVnaW4uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QbHVnaW5IYWx0ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBhZ2UvUGx1Z2luSGFsdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFn
ZS9QbHVnaW5IYWx0ZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcp
OgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1
Z2luVmlld05vbmUuY3BwOgorICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3Bw
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oOgorCiAyMDExLTA4LTA1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
IAogICAgICAgICBkaXI9YXV0byBuZWVkcyB0byB3b3JrIG9uIHZhbHVlIG9mIGlucHV0IGFuZCB0
ZXh0YXJlYSBlbGVtZW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDkyNDgy
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk5
Miw3ICs5OTIsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9QZXJmb3JtYW5jZS5j
cHAKICAgICBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKICAgICBwYWdlL1BlcmZvcm1h
bmNlVGltaW5nLmNwcAotICAgIHBhZ2UvUGx1Z2luSGFsdGVyLmNwcAogICAgIHBhZ2UvUHJpbnRD
b250ZXh0LmNwcAogICAgIHBhZ2UvU2NyZWVuLmNwcAogICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDkyNDgyKQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
MjMxMCw5ICsyMzEwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2lu
SGFsdGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw2IEBAIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0
QzFFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFFdgogX19aTjdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU183SW50UmVjdEViCiBfX1pO
N1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgotX19aTjdX
ZWJDb3JlMTJSZW5kZXJXaWRnZXQxOXNob3dTdWJzdGl0dXRlSW1hZ2VFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfNUltYWdlRUVFCiBfX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI4cmVzdW1lV2lkZ2V0
SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI5c3VzcGVuZFdp
ZGdldEhpZXJhcmNoeVVwZGF0ZXNFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMHdyYXBO
U0RhdGFFUDZOU0RhdGEKQEAgLTY5OCw4ICs2OTcsNiBAQCBfX1pON1dlYkNvcmU0UGFnZTEwZmlu
ZFN0cmluZ0VSS04zV1RGNlN0CiBfX1pON1dlYkNvcmU0UGFnZTExUGFnZUNsaWVudHNDMUV2CiBf
X1pON1dlYkNvcmU0UGFnZTExUGFnZUNsaWVudHNEMUV2CiBfX1pON1dlYkNvcmU0UGFnZTEyc2V0
R3JvdXBOYW1lRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlNFBhZ2UxM2RpZFN0b3BQbHVn
aW5FUE5TXzE0SGFsdGFibGVQbHVnaW5FCi1fX1pON1dlYkNvcmU0UGFnZTE0ZGlkU3RhcnRQbHVn
aW5FUE5TXzE0SGFsdGFibGVQbHVnaW5FCiBfX1pON1dlYkNvcmU0UGFnZTE0c2V0TWVkaWFWb2x1
bWVFZgogX19aTjdXZWJDb3JlNFBhZ2UxNWFkZFNjaGVkdWxlUGFpckVOM1dURjEwUGFzc1JlZlB0
cklOU18xMlNjaGVkdWxlUGFpckVFRQogX19aTjdXZWJDb3JlNFBhZ2UxNWRpZE1vdmVPbnNjcmVl
bkV2CkBAIC04OTgsNyArODk1LDYgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRFZGl0YWJs
ZUxpbmtCZQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZEVi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldE5lZWRzVGlnZXJNYWlsUXVpcmtzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczIzc2V0UGljdG9ncmFwaEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWlj
U3RyaW5nRTExVVNjcmlwdENvZGUKLV9fWk43V2ViQ29yZThTZXR0aW5nczIzc2V0UGx1Z2luQWxs
b3dlZFJ1blRpbWVFagogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRVc2VzRW5jb2RpbmdEZXRl
Y3RvckViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUVi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldEROU1ByZWZldGNoaW5nRW5hYmxlZEViCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwkod29ya2luZyBjb3B5KQpAQCAtOTQxLDcgKzk0MSw2IEBAIFNPVVJDRVMgKz0gXAogICAg
IHBhZ2UvUGVyZm9ybWFuY2UuY3BwIFwKICAgICBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5j
cHAgXAogICAgIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwIFwKLSAgICBwYWdlL1BsdWdpbkhh
bHRlci5jcHAgXAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAgICAgcGFnZS9TY3JlZW4u
Y3BwIFwKICAgICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5MjQ4
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTczMCwxMCArMTczMCw2IEBACiAJCTc2MzdDNTQzMTEyRTdCN0Uw
MDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyog
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovOyB9OwogCQk3NjdGOTlCRTExQTExOTRBMDA4
MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8q
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLzsgfTsKIAkJNzY3Rjk5QzAxMUExMTk1
NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRjExQTExOTU2MDA4MEM1MUQg
LyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLzsgfTsKLQkJNzY5M0JBRDIxMDZDMkRD
QTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQ
bHVnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNGMTA2QzJEQ0EwMDdC
MDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9OwotCQk3NjkzQkFENDEwNkMyRENBMDA3QjA4
MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi87
IH07Ci0JCTc2OTNCQUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQxMTA2
QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Njk0NTYzQzEyMTREOTdDMDAwN0NCQUUg
LyogSlNET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzY5NDU2M0ExMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNw
cCAqLzsgfTsKIAkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Njk0NTYzQjEy
MTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tlbkxpc3QuaCAqLzsgfTsKIAkJNzY5NDU2NUIxMjE0
REI2MzAwMDdDQkFFIC8qIERPTURPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5NDU2NTkxMjE0REI2MzAwMDdDQkFFIC8qIERPTURP
TVRva2VuTGlzdC5oICovOyB9OwpAQCAtODM2NiwxMCArODM2Miw2IEBACiAJCTc2MzdDNTQyMTEy
RTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc2OTNCQUNF
MTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIYWx0YWJsZVBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkhhbHRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5I
YWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSGFsdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGx1Z2luSGFsdGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTQ1
NjNBMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVRva2VuTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc2OTQ1NjNCMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVRva2VuTGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njk0NTY1OTEyMTREQjYzMDAwN0NCQUUgLyog
RE9NRE9NVG9rZW5MaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURP
TVRva2VuTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ2MTAsNyArMTQ2
MDIsNiBAQAogCQkJCUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwg
Ki8sCiAJCQkJQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICov
LAogCQkJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggKi8sCi0J
CQkJNzY5M0JBQ0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggKi8sCiAJCQkJ
QkM5NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3BwICovLAogCQkJCUJDOTREMTUx
MEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggKi8sCiAJCQkJQkM5NEQxNTIwQzI3NUM4QjAw
NkJDNjE3IC8qIEhpc3RvcnkuaWRsICovLApAQCAtMTQ2NjAsOSArMTQ2NTEsNiBAQAogCQkJCThB
RjRFNTU4MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5jcHAgKi8sCiAJCQkJ
OEFGNEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi8sCiAJCQkJ
OEFGNEU1NUExMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmlkbCAqLywKLQkJ
CQk3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLywKLQkJCQk3
NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8sCi0JCQkJNzY5M0JB
RDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlckNsaWVudC5oICovLAogCQkJCUZFODBE
N0JEMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJNTkzQUI2
OTcxMzU1Q0Q5MjAwRkM4MjExIC8qIFBvc2l0aW9uQ2FsbGJhY2suaWRsICovLAogCQkJCUZFODBE
N0JGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmggKi8sCkBAIC0yMTUxMSw3ICsy
MTQ5OSw2IEBACiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTc3QTE3QTdCMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGlj
c1R5cGVzM0QuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAv
KiBHcm91cFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3NjkzQkFEMjEwNkMyRENBMDA3
QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzQ2MTE5
OEMzNTQwMEJGQjAwNSAvKiBIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NzQ4QkUwMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREMwMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjI1MDMsOCArMjI0OTAsNiBAQAogCQkJCTkzNUM0NzZCMDlBQzRENEYwMEE2QUFC
NCAvKiBQbGF0Zm9ybVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEY0MEQ3
NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFC
QzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTc2OTNCQUQ0MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTc2OTNCQUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBREExNDExMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5NYWlu
VGhyZWFkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4Nzk5MDExQ0JFODQ2MDAz
QzY2NEYgLyogUGx1Z2luU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTBBRkRBQzNEMTBG
NTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ4
Myw3ICsyNTQ2OCw2IEBACiAJCQkJMUFEOEY4MUMxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRGMzBENzQ1RTQ4MDA2NDQy
RTkgLyogUGx1Z2luRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzIwNUFCQjEyMzkyOTI3
MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzY5M0JB
RDMxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQURBMTQxMDBFMUFFNUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkZGMTdFMzExMjM1NjczMDAxRDYxQjUgLyogUGx1Z2lu
Vmlld05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJCMUY3MTYwRDAwQ0FBODAwNEFFQTY0
IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2
IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAi
UGx1Z2luSGFsdGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9IYWx0YWJsZVBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvSGFsdGFibGVQbHVnaW4uaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0hhbHRhYmxlUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIEhhbHRhYmxlUGx1Z2luX2gKLSNkZWZpbmUgSGFsdGFibGVQbHVnaW5faAotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vZGU7Ci0KLWNsYXNzIEhhbHRhYmxlUGx1Z2luIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5IYWx0YWJsZVBsdWdpbigpIHsgfQotCi0gICAgdmlydHVhbCB2
b2lkIGhhbHQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3RhcnQoKSA9IDA7Ci0gICAgdmly
dHVhbCBOb2RlKiBub2RlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd2Vk
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdpbk5hbWUoKSBjb25zdCA9IDA7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBIYWx0YWJsZVBsdWdp
bl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUGx1Z2luRGF0YS5oIgotI2luY2x1ZGUgIlBsdWdpbkhhbHRlci5oIgogI2luY2x1
ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUg
IlByb2dyZXNzVHJhY2tlci5oIgpAQCAtMTc2LDExICsxNzUsNiBAQCBQYWdlOjpQYWdlKFBhZ2VD
bGllbnRzJiBwYWdlQ2xpZW50cykKICAgICBBU1NFUlQoIWFsbFBhZ2VzLT5jb250YWlucyh0aGlz
KSk7CiAgICAgYWxsUGFnZXMtPmFkZCh0aGlzKTsKIAotICAgIGlmIChwYWdlQ2xpZW50cy5wbHVn
aW5IYWx0ZXJDbGllbnQpIHsKLSAgICAgICAgbV9wbHVnaW5IYWx0ZXIgPSBhZG9wdFB0cihuZXcg
UGx1Z2luSGFsdGVyKHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVudC5yZWxlYXNlKCkpKTsK
LSAgICAgICAgbV9wbHVnaW5IYWx0ZXItPnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKG1fc2V0dGlu
Z3MtPnBsdWdpbkFsbG93ZWRSdW5UaW1lKCkpOwotICAgIH0KLQogI2lmbmRlZiBOREVCVUcKICAg
ICBwYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgpAQCAtODg2LDI0ICs4ODAsNiBAQCB2
b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCiAgICAgICAgIHBsdWdpblZp
ZXdCYXNlc1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpOwogfQogCi12b2lkIFBhZ2U6OnBsdWdpbkFsbG93ZWRSdW5UaW1lQ2hhbmdlZCgpCi17
Ci0gICAgaWYgKG1fcGx1Z2luSGFsdGVyKQotICAgICAgICBtX3BsdWdpbkhhbHRlci0+c2V0UGx1
Z2luQWxsb3dlZFJ1blRpbWUobV9zZXR0aW5ncy0+cGx1Z2luQWxsb3dlZFJ1blRpbWUoKSk7Ci19
Ci0KLXZvaWQgUGFnZTo6ZGlkU3RhcnRQbHVnaW4oSGFsdGFibGVQbHVnaW4qIG9iaikKLXsKLSAg
ICBpZiAobV9wbHVnaW5IYWx0ZXIpCi0gICAgICAgIG1fcGx1Z2luSGFsdGVyLT5kaWRTdGFydFBs
dWdpbihvYmopOwotfQotCi12b2lkIFBhZ2U6OmRpZFN0b3BQbHVnaW4oSGFsdGFibGVQbHVnaW4q
IG9iaikKLXsKLSAgICBpZiAobV9wbHVnaW5IYWx0ZXIpCi0gICAgICAgIG1fcGx1Z2luSGFsdGVy
LT5kaWRTdG9wUGx1Z2luKG9iaik7Ci19Ci0KIHZvaWQgUGFnZTo6YWRkU2Nyb2xsYWJsZUFyZWEo
U2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewogICAgIGlmICghbV9zY3JvbGxhYmxl
QXJlYVNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAg
ICBjbGFzcyBQbHVnaW5EYXRhOwotICAgIGNsYXNzIFBsdWdpbkhhbHRlcjsKLSAgICBjbGFzcyBQ
bHVnaW5IYWx0ZXJDbGllbnQ7CiAgICAgY2xhc3MgUHJvZ3Jlc3NUcmFja2VyOwogICAgIGNsYXNz
IFJlbmRlclRoZW1lOwogICAgIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC0xMTMsNyArMTEx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRWRpdG9yQ2xpZW50KiBlZGl0
b3JDbGllbnQ7CiAgICAgICAgICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50OwogICAgICAgICAg
ICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQ7Ci0gICAgICAgICAgICBPd25QdHI8
UGx1Z2luSGFsdGVyQ2xpZW50PiBwbHVnaW5IYWx0ZXJDbGllbnQ7CiAgICAgICAgICAgICBHZW9s
b2NhdGlvbkNsaWVudCogZ2VvbG9jYXRpb25DbGllbnQ7CiAgICAgICAgICAgICBEZXZpY2VNb3Rp
b25DbGllbnQqIGRldmljZU1vdGlvbkNsaWVudDsKICAgICAgICAgICAgIERldmljZU9yaWVudGF0
aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKQEAgLTI1MywxMCArMjUwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRuc1ByZWZldGNoaW5nU3RhdGVDaGFu
Z2VkKCk7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCk7CiAKLSAg
ICAgICAgdm9pZCBkaWRTdGFydFBsdWdpbihIYWx0YWJsZVBsdWdpbiopOwotICAgICAgICB2b2lk
IGRpZFN0b3BQbHVnaW4oSGFsdGFibGVQbHVnaW4qKTsKLSAgICAgICAgdm9pZCBwbHVnaW5BbGxv
d2VkUnVuVGltZUNoYW5nZWQoKTsKLQogICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWJ1Z2dlckZv
ckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqKTsKICAgICAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6
OkRlYnVnZ2VyKik7CiAgICAgICAgIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWJ1Z2dlcjsgfQpAQCAtMzkzLDggKzM4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBib29sIG1fY2FuU3RhcnRNZWRpYTsKIAotICAgICAgICBPd25QdHI8UGx1
Z2luSGFsdGVyPiBtX3BsdWdpbkhhbHRlcjsKLQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAg
ICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IG1fc2Vzc2lvblN0b3JhZ2U7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5jcHAJKHJldmlzaW9uIDkyNDgyKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDExOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5IYWx0ZXIuaCIKLQot
I2luY2x1ZGUgIkhhbHRhYmxlUGx1Z2luLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1QbHVnaW5IYWx0ZXI6OlBsdWdpbkhhbHRlcihQYXNzT3duUHRy
PFBsdWdpbkhhbHRlckNsaWVudD4gY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotICAg
ICwgbV90aW1lcih0aGlzLCAmUGx1Z2luSGFsdGVyOjp0aW1lckZpcmVkKQotICAgICwgbV9wbHVn
aW5BbGxvd2VkUnVuVGltZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotewotICAg
IEFTU0VSVF9BUkcobV9jbGllbnQsIG1fY2xpZW50KTsKLX0KLQotdm9pZCBQbHVnaW5IYWx0ZXI6
OmRpZFN0YXJ0UGx1Z2luKEhhbHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgQVNTRVJUX0FSRyhv
YmosIG9iaik7Ci0gICAgQVNTRVJUX0FSRyhvYmosICFtX3BsdWdpbnMuY29udGFpbnMob2JqKSk7
Ci0KLSAgICBpZiAoIW1fY2xpZW50LT5lbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKLQotICAgIG1fcGx1Z2lu
cy5hZGQob2JqLCBjdXJyZW50VGltZSk7Ci0KLSAgICBpZiAobV9wbHVnaW5zLnNpemUoKSA9PSAx
KQotICAgICAgICBtX29sZGVzdFN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lOwotCi0gICAgc3RhcnRU
aW1lcklmTmVjZXNzYXJ5KCk7Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVyOjpkaWRTdG9wUGx1Z2lu
KEhhbHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgaWYgKCFtX2NsaWVudC0+ZW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BsdWdpbnMucmVtb3ZlKG9iaik7Ci19Ci0KLXZvaWQg
UGx1Z2luSGFsdGVyOjp0aW1lckZpcmVkKFRpbWVyPFBsdWdpbkhhbHRlcj4qKQotewotICAgIGlm
IChtX3BsdWdpbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8SGFs
dGFibGVQbHVnaW4qPiBwbHVnaW5zOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9wbHVnaW5zLCBw
bHVnaW5zKTsKLQotICAgIC8vIFBsdWctaW5zIG9sZGVyIHRoYW4gdGhpcyBhcmUgY2FuZGlkYXRl
cyB0byBiZSBoYWx0ZWQuCi0gICAgZG91YmxlIHBsdWdpbkN1dE9mZlRpbWUgPSBXVEY6OmN1cnJl
bnRUaW1lKCkgLSBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lOwotCi0gICAgbV9vbGRlc3RTdGFydFRp
bWUgPSBudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKLQotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBkb3VibGUgdGhpc1N0YXJ0
VGltZSA9IG1fcGx1Z2lucy5nZXQocGx1Z2luc1tpXSk7Ci0gICAgICAgIGlmICh0aGlzU3RhcnRU
aW1lID4gcGx1Z2luQ3V0T2ZmVGltZSkgewotICAgICAgICAgICAgLy8gVGhpcyBwbHVnLWluIGlz
IHRvbyB5b3VuZyB0byBiZSBoYWx0ZWQuIFdlIGZpbmQgdGhlIG9sZGVzdAotICAgICAgICAgICAg
Ly8gcGx1Zy1pbiB0aGF0IGlzIG5vdCBvbGQgZW5vdWdoIHRvIGJlIGhhbHRlZCBhbmQgdXNlIGl0
IHRvIHNldAotICAgICAgICAgICAgLy8gdGhlIHRpbWVyJ3MgbmV4dCBmaXJlIHRpbWUuCi0gICAg
ICAgICAgICBpZiAodGhpc1N0YXJ0VGltZSA8IG1fb2xkZXN0U3RhcnRUaW1lKQotICAgICAgICAg
ICAgICAgIG1fb2xkZXN0U3RhcnRUaW1lID0gdGhpc1N0YXJ0VGltZTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1fY2xpZW50LT5zaG91bGRIYWx0UGx1
Z2luKHBsdWdpbnNbaV0tPm5vZGUoKSwgcGx1Z2luc1tpXS0+aXNXaW5kb3dlZCgpLCBwbHVnaW5z
W2ldLT5wbHVnaW5OYW1lKCkpKQotICAgICAgICAgICAgcGx1Z2luc1tpXS0+aGFsdCgpOwotCi0g
ICAgICAgIG1fcGx1Z2lucy5yZW1vdmUocGx1Z2luc1tpXSk7Ci0gICAgfQotCi0gICAgc3RhcnRU
aW1lcklmTmVjZXNzYXJ5KCk7Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVyOjpzdGFydFRpbWVySWZO
ZWNlc3NhcnkoKQotewotICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX3BsdWdpbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCA9IHN0YXRpY19jYXN0PGRvdWJsZT4obV9wbHVnaW5B
bGxvd2VkUnVuVGltZSkgLSAoY3VycmVudFRpbWUoKSAtIG1fb2xkZXN0U3RhcnRUaW1lKTsKLSAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdChuZXh0RmlyZUludGVydmFsIDwgMCA/IDAgOiBuZXh0Rmly
ZUludGVydmFsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BsdWdpbkhhbHRlci5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGx1Z2luSGFsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBsdWdpbkhh
bHRlcl9oCi0jZGVmaW5lIFBsdWdpbkhhbHRlcl9oCi0KLSNpbmNsdWRlICJQbHVnaW5IYWx0ZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhh
bHRhYmxlUGx1Z2luOwotCi1jbGFzcyBQbHVnaW5IYWx0ZXIgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFBsdWdpbkhhbHRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIFBsdWdpbkhhbHRlcihQYXNzT3duUHRyPFBsdWdpbkhhbHRlckNsaWVudD4pOwotCi0gICAg
dm9pZCBkaWRTdGFydFBsdWdpbihIYWx0YWJsZVBsdWdpbiopOwotICAgIHZvaWQgZGlkU3RvcFBs
dWdpbihIYWx0YWJsZVBsdWdpbiopOwotCi0gICAgdm9pZCBzZXRQbHVnaW5BbGxvd2VkUnVuVGlt
ZSh1bnNpZ25lZCBydW5UaW1lKSB7IG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUgPSBydW5UaW1lOyB9
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPFBsdWdpbkhhbHRlcj4qKTsK
LSAgICB2b2lkIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOwotCi0gICAgT3duUHRyPFBsdWdpbkhh
bHRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgVGltZXI8UGx1Z2luSGFsdGVyPiBtX3RpbWVyOwot
ICAgIHVuc2lnbmVkIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWU7Ci0gICAgZG91YmxlIG1fb2xkZXN0
U3RhcnRUaW1lOwotICAgIEhhc2hNYXA8SGFsdGFibGVQbHVnaW4qLCBkb3VibGU+IG1fcGx1Z2lu
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBsdWdpbkhhbHRl
cl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHJldmlz
aW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXJDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUGx1Z2luSGFsdGVyQ2xpZW50X2gKLSNkZWZp
bmUgUGx1Z2luSGFsdGVyQ2xpZW50X2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsKLQotY2xhc3MgUGx1Z2luSGFsdGVyQ2xp
ZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbHVnaW5IYWx0ZXJDbGllbnQoKSB7IH0KLQot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYWx0UGx1Z2luKE5vZGUqLCBib29sIGlzV2luZG93ZWQs
IGNvbnN0IFN0cmluZyYgcGx1Z2luTmFtZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCkgY29uc3QgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gUGx1Z2luSGFsdGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2Uq
IHBhZ2UpCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICwgbV9zZXNzaW9uU3RvcmFnZVF1
b3RhKFN0b3JhZ2VNYXA6Om5vUXVvdGEpCiAjZW5kaWYKLSAgICAsIG1fcGx1Z2luQWxsb3dlZFJ1
blRpbWUobnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAsIG1fZWRpdGluZ0Jl
aGF2aW9yVHlwZShlZGl0aW5nQmVoYXZpb3JUeXBlRm9yUGxhdGZvcm0oKSkKICAgICAsIG1fbWF4
aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgoZGVmYXVsdE1heGltdW1IVE1MUGFyc2VyRE9NVHJl
ZURlcHRoKQogICAgICwgbV9pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChmYWxzZSkKQEAgLTc0
OCwxMiArNzQ3LDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aQog
ICAgIG1fZXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi12
b2lkIFNldHRpbmdzOjpzZXRQbHVnaW5BbGxvd2VkUnVuVGltZSh1bnNpZ25lZCBydW5UaW1lKQot
ewotICAgIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUgPSBydW5UaW1lOwotICAgIG1fcGFnZS0+cGx1
Z2luQWxsb3dlZFJ1blRpbWVDaGFuZ2VkKCk7Ci19Ci0KICNpZiBQTEFURk9STShXSU4pIHx8IChP
UyhXSU5ET1dTKSAmJiBQTEFURk9STShXWCkpCiB2b2lkIFNldHRpbmdzOjpzZXRTaG91bGRVc2VI
aWdoUmVzb2x1dGlvblRpbWVycyhib29sIHNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw5ICszNDQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZFVzZUhpZ2hS
ZXNvbHV0aW9uVGltZXJzKCkgeyByZXR1cm4gZ1Nob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJz
OyB9CiAjZW5kaWYKIAotICAgICAgICB2b2lkIHNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKHVuc2ln
bmVkKTsKLSAgICAgICAgdW5zaWduZWQgcGx1Z2luQWxsb3dlZFJ1blRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lOyB9Ci0KICAgICAgICAgdm9pZCBzZXRXZWJBdWRp
b0VuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgd2ViQXVkaW9FbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJBdWRpb0VuYWJsZWQ7IH0KIApAQCAtNDc4LDcgKzQ3NSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIHVuc2lnbmVkIG1f
c2Vzc2lvblN0b3JhZ2VRdW90YTsKICNlbmRpZgotICAgICAgICB1bnNpZ25lZCBtX3BsdWdpbkFs
bG93ZWRSdW5UaW1lOwogICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvclR5cGU7CiAg
ICAgICAgIHVuc2lnbmVkIG1fbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGg7CiAgICAgICAg
IGJvb2wgbV9pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCA6IDE7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDkgKzI3MSw2
IEBAIGJvb2wgUGx1Z2luVmlldzo6c3RhcnQoKQogICAgIGlmIChtX3N0YXR1cyAhPSBQbHVnaW5T
dGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChwYXJlbnRGcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgIHBhcmVudEZyYW1lKCktPnBhZ2UoKS0+
ZGlkU3RhcnRQbHVnaW4odGhpcyk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzE4LDkg
KzMxNSw2IEBAIHZvaWQgUGx1Z2luVmlldzo6c3RvcCgpCiAgICAgaWYgKCFtX2lzU3RhcnRlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHBhcmVudEZyYW1lKCktPnBhZ2UoKSkKLSAgICAg
ICAgcGFyZW50RnJhbWUoKS0+cGFnZSgpLT5kaWRTdG9wUGx1Z2luKHRoaXMpOwotCiAgICAgTE9H
KFBsdWdpbnMsICJQbHVnaW5WaWV3OjpzdG9wKCk6IFN0b3BwaW5nIHBsdWctaW4gJyVzJyIsIG1f
cGx1Z2luLT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxQbHVn
aW5TdHJlYW0+ID4gc3RyZWFtcyA9IG1fc3RyZWFtczsKQEAgLTg4MCw4ICs4NzQsNiBAQCBQbHVn
aW5WaWV3OjpQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtCiAgICAgLCBtX2xvYWRNYW51YWxs
eShsb2FkTWFudWFsbHkpCiAgICAgLCBtX21hbnVhbFN0cmVhbSgwKQogICAgICwgbV9pc0phdmFT
Y3JpcHRQYXVzZWQoZmFsc2UpCi0gICAgLCBtX2lzSGFsdGVkKGZhbHNlKQotICAgICwgbV9oYXNC
ZWVuSGFsdGVkKGZhbHNlKQogICAgICwgbV9oYXZlQ2FsbGVkU2V0V2luZG93KGZhbHNlKQogewog
ICAgIGlmICghbV9wbHVnaW4pIHsKQEAgLTEyOTAsMTYgKzEyODIsNiBAQCBjb25zdCBjaGFyKiBQ
bHVnaW5WaWV3Ojp1c2VyQWdlbnRTdGF0aWMoCiAjZW5kaWYKIAogCi1Ob2RlKiBQbHVnaW5WaWV3
Ojpub2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50OwotfQotCi1TdHJpbmcgUGx1
Z2luVmlldzo6cGx1Z2luTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGx1Z2luLT5uYW1l
KCk7Ci19Ci0KIHZvaWQgUGx1Z2luVmlldzo6bGlmZVN1cHBvcnRUaW1lckZpcmVkKFRpbWVyPFBs
dWdpblZpZXc+KikKIHsKICAgICBkZXJlZigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNkZWZpbmUgUGx1Z2lu
Vmlld19oCiAKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSGFsdGFi
bGVQbHVnaW4uaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFy
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKQEAgLTE0MSw3ICsxNDAs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAsIHByaXZhdGUg
UGx1Z2luU3RyZWFtQ2xpZW50CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICwgcHVibGlj
IFBsdWdpbk1hbnVhbExvYWRlcgotICAgICAgICAgICAgICAgICAgICAgLCBwcml2YXRlIEhhbHRh
YmxlUGx1Z2luCiAgICAgICAgICAgICAgICAgICAgICAsIHByaXZhdGUgTWVkaWFDYW5TdGFydExp
c3RlbmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZp
ZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBFbGVtZW50Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KTsKQEAgLTI0NCwxNiArMjQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAotICAgICAgICAvLyBIYWx0YWJsZVBsdWdpbgotICAgICAgICB2
aXJ0dWFsIHZvaWQgaGFsdCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzdGFydCgpOwotICAg
ICAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlz
V2luZG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2luZG93ZWQ7IH0KLSAgICAgICAgdmlydHVh
bCBTdHJpbmcgcGx1Z2luTmFtZSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgaXNIYWx0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzSGFsdGVkOyB9Ci0gICAgICAgIGJvb2wgaGFzQmVlbkhhbHRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzQmVlbkhhbHRlZDsgfQotCiAgICAgICAgIHN0YXRpYyBib29s
IGlzQ2FsbGluZ1BsdWdpbigpOwogCiAgICAgICAgIGJvb2wgc3RhcnQoKTsKQEAgLTQ2MSw5ICs0
NDksNiBAQCBwcml2YXRlOgogCiAgICAgICAgIGJvb2wgbV9pc0phdmFTY3JpcHRQYXVzZWQ7CiAK
LSAgICAgICAgYm9vbCBtX2lzSGFsdGVkOwotICAgICAgICBib29sIG1faGFzQmVlbkhhbHRlZDsK
LQogICAgICAgICBib29sIG1faGF2ZUNhbGxlZFNldFdpbmRvdzsKIAogICAgICAgICBzdGF0aWMg
UGx1Z2luVmlldyogc19jdXJyZW50UGx1Z2luVmlldzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTQg
KzEyMCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KCkKIHsKIH0KIAot
dm9pZCBQbHVnaW5WaWV3OjpoYWx0KCkKLXsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpyZXN0YXJ0
KCkKLXsKLX0KLQogI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUZvY3VzSW5FdmVudCgpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCShyZXZpc2lvbiA5MjQ4
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0MCwxNCArMTA0MCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1E
ZXN0cm95KCkKICAgICAgICAgWEZyZWVDb2xvcm1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBtX2Nv
bG9ybWFwKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpoYWx0KCkKLXsKLX0KLQotdm9pZCBQbHVn
aW5WaWV3OjpyZXN0YXJ0KCkKLXsKLX0KLSAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiBQbGF0Zm9ybUxheWVyKiBQbHVnaW5WaWV3OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCShy
ZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY2LDM0ICsxMDY2LDQgQEAgUGFzc1JlZlB0cjxJ
bWFnZT4gUGx1Z2luVmlldzo6c25hcHNob3QoKQogI2VuZGlmCiB9CiAKLXZvaWQgUGx1Z2luVmll
dzo6aGFsdCgpCi17Ci0gICAgQVNTRVJUKCFtX2lzSGFsdGVkKTsKLSAgICBBU1NFUlQobV9pc1N0
YXJ0ZWQpOwotCi0jaWYgIVBMQVRGT1JNKFFUKQotICAgIC8vIFNob3cgYSBzY3JlZW5zaG90IG9m
IHRoZSBwbHVnLWluLgotICAgIHRvUmVuZGVyV2lkZ2V0KG1fZWxlbWVudC0+cmVuZGVyZXIoKSkt
PnNob3dTdWJzdGl0dXRlSW1hZ2Uoc25hcHNob3QoKSk7Ci0jZW5kaWYKLQotICAgIG1faXNIYWx0
ZWQgPSB0cnVlOwotICAgIG1faGFzQmVlbkhhbHRlZCA9IHRydWU7Ci0KLSAgICBzdG9wKCk7Ci0g
ICAgcGxhdGZvcm1EZXN0cm95KCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6cmVzdGFydCgpCi17
Ci0gICAgQVNTRVJUKCFtX2lzU3RhcnRlZCk7Ci0gICAgQVNTRVJUKG1faXNIYWx0ZWQpOwotCi0g
ICAgLy8gQ2xlYXIgYW55IHN1YnN0aXR1dGUgaW1hZ2UuCi0gICAgdG9SZW5kZXJXaWRnZXQobV9l
bGVtZW50LT5yZW5kZXJlcigpKS0+c2hvd1N1YnN0aXR1dGVJbWFnZSgwKTsKLQotICAgIG1faXNI
YWx0ZWQgPSBmYWxzZTsKLSAgICBtX2hhdmVVcGRhdGVkUGx1Z2luV2lkZ2V0ID0gZmFsc2U7Ci0g
ICAgc3RhcnQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNiwxMiArMjE2LDYgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJXaWRnZXQ6OnNob3dTdWJzdGl0dXRlSW1hZ2UoUGFz
c1JlZlB0cjxJbWFnZT4gcHJwSW1hZ2UpCi17Ci0gICAgbV9zdWJzdGl0dXRlSW1hZ2UgPSBwcnBJ
bWFnZTsKLSAgICByZXBhaW50KCk7Ci19Ci0KIHZvaWQgUmVuZGVyV2lkZ2V0Ojpub3RpZnlXaWRn
ZXQoV2lkZ2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAobV93aWRnZXQp
CkBAIC0yNjgsMjUgKzI2MiwyMSBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWluCiAgICAgaWYgKG1fd2lkZ2V0KSB7CiAgICAgICAgIC8vIFRlbGwgdGhlIHdpZGdldCB0
byBwYWludCBub3cuICBUaGlzIGlzIHRoZSBvbmx5IHRpbWUgdGhlIHdpZGdldCBpcyBhbGxvd2Vk
CiAgICAgICAgIC8vIHRvIHBhaW50IGl0c2VsZi4gIFRoYXQgd2F5IGl0IHdpbGwgY29tcG9zaXRl
IHByb3Blcmx5IHdpdGggei1pbmRleGVkIGxheWVycy4KLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0
ZUltYWdlKQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShtX3N1YnN0
aXR1dGVJbWFnZS5nZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBtX3dpZGdldC0+ZnJhbWVS
ZWN0KCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIExheW91dFBvaW50IHdpZGdldExv
Y2F0aW9uID0gbV93aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgICAgICBM
YXlvdXRQb2ludCBwYWludExvY2F0aW9uKGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgYm9yZGVy
TGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0gICAgICAgICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9
IHBhaW50SW5mby5yZWN0OwotCi0gICAgICAgICAgICBMYXlvdXRTaXplIHdpZGdldFBhaW50T2Zm
c2V0ID0gcGFpbnRMb2NhdGlvbiAtIHdpZGdldExvY2F0aW9uOwotICAgICAgICAgICAgLy8gV2hl
biBwYWludGluZyB3aWRnZXRzIGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJl
IHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIsCi0gICAgICAgICAg
ICAvLyBub3QgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2hpZnQgdGhlIENUTSBhbmQgYWRqdXN0
IHRoZSBwYWludFJlY3QgdG8gYmUgcm9vdC1yZWxhdGl2ZSB0byBmaXggcGx1Zy1pbiBkcmF3aW5n
LgotICAgICAgICAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkgewotICAgICAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQp
OwotICAgICAgICAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9mZnNldCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRl
eHQsIHBhaW50UmVjdCk7Ci0KLSAgICAgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNa
ZXJvKCkpCi0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtd2lk
Z2V0UGFpbnRPZmZzZXQpOworICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRMb2NhdGlvbiA9IG1f
d2lkZ2V0LT5mcmFtZVJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICBMYXlvdXRQb2ludCBwYWlu
dExvY2F0aW9uKGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGlu
Z0xlZnQoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSk7CisgICAgICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CisK
KyAgICAgICAgTGF5b3V0U2l6ZSB3aWRnZXRQYWludE9mZnNldCA9IHBhaW50TG9jYXRpb24gLSB3
aWRnZXRMb2NhdGlvbjsKKyAgICAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRzIGludG8gY29t
cG9zaXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3Npbmcg
Y29tcG9zaXRpbmcgbGF5ZXIsCisgICAgICAgIC8vIG5vdCB0aGUgcm9vdC4gSW4gdGhpcyBjYXNl
LCBzaGlmdCB0aGUgQ1RNIGFuZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBiZSByb290LXJlbGF0
aXZlIHRvIGZpeCBwbHVnLWluIGRyYXdpbmcuCisgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZz
ZXQuaXNaZXJvKCkpIHsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUo
d2lkZ2V0UGFpbnRPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBh
aW50T2Zmc2V0KTsKICAgICAgICAgfQorICAgICAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZv
LmNvbnRleHQsIHBhaW50UmVjdCk7CisKKyAgICAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5p
c1plcm8oKSkKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXdpZGdl
dFBhaW50T2Zmc2V0KTsKIAogICAgICAgICBpZiAobV93aWRnZXQtPmlzRnJhbWVWaWV3KCkpIHsK
ICAgICAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3
Kj4obV93aWRnZXQuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAg
IHZvaWQgd2lkZ2V0UG9zaXRpb25zVXBkYXRlZCgpOwogICAgIEludFJlY3Qgd2luZG93Q2xpcFJl
Y3QoKSBjb25zdDsKIAotICAgIHZvaWQgc2hvd1N1YnN0aXR1dGVJbWFnZShQYXNzUmVmUHRyPElt
YWdlPik7Ci0KICAgICB2b2lkIG5vdGlmeVdpZGdldChXaWRnZXROb3RpZmljYXRpb24pOwogICAg
IAogICAgIHN0YXRpYyB2b2lkIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CkBAIC03
NCw3ICs3Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZXRXaWRnZXRHZW9tZXRyeShjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50U2l6ZSYpOwogCiAgICAgUmVmUHRyPFdpZGdldD4gbV93aWRnZXQ7
Ci0gICAgUmVmUHRyPEltYWdlPiBtX3N1YnN0aXR1dGVJbWFnZTsKICAgICBGcmFtZVZpZXcqIG1f
ZnJhbWVWaWV3OwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsgLy8gVGhlIHJlY3RhbmdsZSBuZWVk
cyB0byByZW1haW4gY29ycmVjdCBhZnRlciBzY3JvbGxpbmcsIHNvIGl0IGlzIHN0b3JlZCBpbiBj
b250ZW50IHZpZXcgY29vcmRpbmF0ZXMsIGFuZCBub3QgY2xpcHBlZCB0byB3aW5kb3cuCiAgICAg
aW50IG1fcmVmQ291bnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA4
LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgZGVsZXRlZCBmaWxlcyBmcm9tIFhjb2RlIHByb2plY3QuCisKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0wNy0yOCAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzcWwgdG8gc3ZuOmln
bm9yZSBhbmQgcmVtb3ZlIGFwcC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4
ICsxMSw2IEBACiAJCTA2NUFENUE0MEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNs
aWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2
NUFENUEyMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSAqLzsgfTsK
IAkJMDY2OTNEREMwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OTNEREEwQkZCQTg1
MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovOyB9OwogCQkwNjY5M0RERDBCRkJB
ODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OTNEREIwQkZCQTg1MjAwMjE2MDcyIC8qIFdl
Ykluc3BlY3RvckNsaWVudC5tbSAqLzsgfTsKLQkJMEEyRDg3RkQxMDdBRjUyQjAwQ0RERUUzIC8q
IFdlYlBsdWdpbkhhbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEEyRDg3RkIxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRl
ckNsaWVudC5oICovOyB9OwotCQkwQTJEODdGRTEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEEyRDg3RkMxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5t
bSAqLzsgfTsKIAkJMEFCNzUyMzcwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFp
bmVyQ2hlY2tDb250ZXh0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEFCNzUyMzUwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFp
bmVyQ2hlY2tDb250ZXh0SW5mby5oICovOyB9OwogCQkwQUI3NTIzODBGQTJFNERCMDBEN0NCQjEg
LyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIx
IC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSAqLzsgfTsKIAkJMEFD
RTkxNzMxMEZFNDdFMzAwOTZBNDVGIC8qIE9wZW5HTC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUNFOTE3MjEwRkU0N0UzMDA5NkE0
NUYgLyogT3BlbkdMLmZyYW1ld29yayAqLzsgfTsKQEAgLTM4OSw4ICszODcsNiBAQAogCQkwNjVB
RDVBMjBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVDbGllbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2NjkzRERBMEJGQkE4NTIwMDIxNjA3MiAv
KiBXZWJJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkluc3BlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNjY5
M0REQjBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwQTJEODdGQjEwN0FGNTJCMDBDRERFRTMgLyogV2Vi
UGx1Z2luSGFsdGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBsdWdpbkhhbHRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwQTJE
ODdGQzEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQUI3NTIzNTBGQTJFNERCMDBEN0NCQjEg
LyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQUI3NTIzNjBGQTJFNERCMDBEN0NCQjEg
LyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRl
eHRJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQUNFOTE3MjEwRkU0N0Uz
MDA5NkE0NUYgLyogT3BlbkdMLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gT3BlbkdMLmZy
YW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC0xMzIyLDggKzEzMTgsNiBAQAog
CQkJCTg0NzIzQkU0MDU2RDcxOUUwMDQ0QkZFQSAvKiBXZWJLZXlHZW5lcmF0b3IubW0gKi8sCiAJ
CQkJMUFBODc5QjQxMUNCRTlCRjAwM0M2NjRGIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oICov
LAogCQkJCTFBQTg3OUI1MTFDQkU5QkYwMDNDNjY0RiAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0gKi8sCi0JCQkJMEEyRDg3RkIxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNs
aWVudC5oICovLAotCQkJCTBBMkQ4N0ZDMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0
ZXJDbGllbnQubW0gKi8sCiAJCQkJQTVERUZDMDcxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3Vy
aXR5T3JpZ2luLm1tICovLAogCQkJCUE1REVGQzA4MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1
cml0eU9yaWdpbkludGVybmFsLmggKi8sCiAJCQkJQTVERUZDMDkxMUQ1MzMxQzAwODg1MjczIC8q
IFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oICovLApAQCAtMTU3NSw3ICsxNTY5LDYgQEAKIAkJ
CQk5Mzk4MTBCMDA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udGFpbmVyUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMzcwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdp
bkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDM4MDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJQbHVnaW5EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEEyRDg3RkQxMDdB
RjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM5ODEwMzkwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpblBhY2thZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTIyNUY4ODE1MDlGOTdFOEEwMDQyM0E0MCAvKiBXZWJQbHVnaW5Qcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc3QjAyRTBFRTc3MzA1MDBDOEExRjkgLyogV2ViUGx1
Z2luUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTY3LDcgKzE5NjAsNiBAQAogCQkJCTkz
OTgxMTI2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXJDaGVjay5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTkzOTgxMERBMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250
cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwREIwODI0QkYwMTAwOERGMDM4IC8q
IFdlYlBsdWdpbkRhdGFiYXNlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMEEyRDg3RkUxMDdBRjUy
QjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMERDMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5QYWNrYWdlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE3N0IwMkYwRUU3NzMwNTAwQzhBMUY5IC8qIFdlYlBsdWdpblJlcXVlc3Qu
bSBpbiBTb3VyY2VzICovLAogCQkJCTIyNDEwMEY5MDkxODE5MDEwMEQyRDI2NiAvKiBXZWJQbHVn
aW5zUHJpdmF0ZS5tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDExLTA4LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcGx1Zy1pbiBoYWx0ZXIgYW5k
IGFzc29jaWF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBpbml0V2l0aEZyYW1l
OnBsdWdpblBhY2thZ2U6VVJMOmJhc2VVUkw6TUlNRVR5cGU6YXR0cmlidXRlS2V5czphdHRyaWJ1
dGVWYWx1ZXM6bG9hZE1hbnVhbGx5OmVsZW1lbnQ6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgc3RhcnRdKToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldyBzdG9wXSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z2luSGFsdGVyQ2xpZW50Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToK
KyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVm
ZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgor
CiAyMDExLTA4LTA0ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRnV0
dXJlLXByb29mIFhjb2RlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAko
cmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiB9CiAKLWNsYXNzIFdl
YkhhbHRhYmxlUGx1Z2luOwotCiAvLyBBbHNvIGRlY2xhcmVkIGluIFdlYkNvcmUvV2lkZ2V0TWFj
Lm1tCiBAaW50ZXJmYWNlIE5TVmlldyAoV2lkZ2V0KQogLSAodm9pZCl2aXNpYmxlUmVjdERpZENo
YW5nZTsKQEAgLTY4LDggKzY2LDYgQEAgQGludGVyZmFjZSBXZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3IDogTgogICAgIEJPT0wgX2hhc0ZvY3VzOwogICAgIEJPT0wgX2lzQ29tcGxldGVseU9ic2N1
cmVkOwogICAgIEJPT0wgX2lzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKLSAgICBCT09MIF9pc0hh
bHRlZDsKLSAgICBCT09MIF9oYXNCZWVuSGFsdGVkOwogICAgIEJPT0wgX3NuYXBzaG90dGluZzsK
ICAgICAKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+IF9lbGVtZW50OwpA
QCAtNzgsOCArNzQsNiBAQCBAaW50ZXJmYWNlIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgOiBO
CiAgICAgUmV0YWluUHRyPE5TVVJMPiBfc291cmNlVVJMOwogICAgIFJldGFpblB0cjxOU0ltYWdl
PiBfY2FjaGVkU25hcHNob3Q7CiAgICAgCi0gICAgT3duUHRyPFdlYkhhbHRhYmxlUGx1Z2luPiBf
aGFsdGFibGU7Ci0gICAgCiAgICAgTlNUcmFja2luZ1JlY3RUYWcgX3RyYWNraW5nVGFnOwogfQog
CkBAIC0xMjIsMTEgKzExNiw2IEBAIEBpbnRlcmZhY2UgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dyA6IE4KIC0gKHZvaWQpc3RhcnQ7CiAtICh2b2lkKXN0b3A7CiAKLS0gKHZvaWQpaGFsdDsKLS0g
KHZvaWQpcmVzdW1lRnJvbUhhbHQ7Ci0tIChCT09MKWlzSGFsdGVkOwotLSAoQk9PTCloYXNCZWVu
SGFsdGVkOwotCiAtICh2b2lkKWFkZFdpbmRvd09ic2VydmVyczsKIC0gKHZvaWQpcmVtb3ZlV2lu
ZG93T2JzZXJ2ZXJzOwogLSAoQk9PTClzaG91bGRDbGlwT3V0UGx1Z2luOwpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvSGFsdGFibGVQbHVnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5o
PgpAQCAtNzEsNDggKzcwLDYgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIENsZWFyU3Vi
c3RpdAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotY2xhc3MgV2ViSGFsdGFibGVQbHVn
aW4gOiBwdWJsaWMgSGFsdGFibGVQbHVnaW4gewotcHVibGljOgotICAgIFdlYkhhbHRhYmxlUGx1
Z2luKFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcqIHZpZXcpCi0gICAgICAgIDogbV92aWV3KHZp
ZXcpCi0gICAgewotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGhhbHQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdGFydCgpOwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBTdHJpbmcgcGx1Z2luTmFtZSgpIGNvbnN0OwotCi0gICAgV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
VmlldyogbV92aWV3OwotfTsKLQotdm9pZCBXZWJIYWx0YWJsZVBsdWdpbjo6aGFsdCgpCi17Ci0g
ICAgW21fdmlldyBoYWx0XTsKLX0KLQotdm9pZCBXZWJIYWx0YWJsZVBsdWdpbjo6cmVzdGFydCgp
Ci17IAotICAgIFttX3ZpZXcgcmVzdW1lRnJvbUhhbHRdOwotfQotICAgIAotTm9kZSogV2ViSGFs
dGFibGVQbHVnaW46Om5vZGUoKSBjb25zdAotewotICAgIHJldHVybiBbbV92aWV3IGVsZW1lbnRd
OwotfQotCi1ib29sIFdlYkhhbHRhYmxlUGx1Z2luOjppc1dpbmRvd2VkKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBXZWJIYWx0YWJsZVBsdWdpbjo6cGx1Z2luTmFt
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtbbV92aWV3IHBsdWdpblBhY2thZ2VdIHBsdWdpbklu
Zm9dLm5hbWU7Ci19Ci0KIEBpbXBsZW1lbnRhdGlvbiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3
CiAKICsgKHZvaWQpaW5pdGlhbGl6ZQpAQCAtMTYzLDcgKzEyMCw2IEBAIC0gKGlkKWluaXRXaXRo
RnJhbWU6KE5TUmVjdClmcmFtZQogICAgICAgICBfbW9kZSA9IE5QX0VNQkVEOwogICAgIAogICAg
IF9sb2FkTWFudWFsbHkgPSBsb2FkTWFudWFsbHk7Ci0gICAgX2hhbHRhYmxlID0gYWRvcHRQdHIo
bmV3IFdlYkhhbHRhYmxlUGx1Z2luKHNlbGYpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAt
NDU0LDcgKzQxMCw2IEBAIC0gKHZvaWQpc3RhcnQKICAgICB9CiAgICAgCiAgICAgX2lzU3RhcnRl
ZCA9IFlFUzsKLSAgICBwYWdlLT5kaWRTdGFydFBsdWdpbihfaGFsdGFibGUuZ2V0KCkpOwogCiAg
ICAgW1tzZWxmIHdlYlZpZXddIGFkZFBsdWdpbkluc3RhbmNlVmlldzpzZWxmXTsKIApAQCAtNDg0
LDExICs0MzksNiBAQCAtICh2b2lkKXN0b3AKICAgICBpZiAoIV9pc1N0YXJ0ZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb3JlKFtzZWxmIHdlYkZyYW1lXSkp
IHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAg
cGFnZS0+ZGlkU3RvcFBsdWdpbihfaGFsdGFibGUuZ2V0KCkpOwotICAgIH0KLSAgICAKICAgICBf
aXNTdGFydGVkID0gTk87CiAgICAgCiAgICAgW1tzZWxmIHdlYlZpZXddIHJlbW92ZVBsdWdpbklu
c3RhbmNlVmlldzpzZWxmXTsKQEAgLTUwMiw2MSArNDUyLDYgQEAgLSAodm9pZClzdG9wCiAgICAg
W3NlbGYgZGVzdHJveVBsdWdpbl07CiB9CiAKLS0gKHZvaWQpaGFsdAotewotICAgIEFTU0VSVCgh
X2lzSGFsdGVkKTsKLSAgICBBU1NFUlQoX2lzU3RhcnRlZCk7Ci0gICAgRWxlbWVudCAqZWxlbWVu
dCA9IFtzZWxmIGVsZW1lbnRdOwotI2lmbmRlZiBCVUlMRElOR19PTl9MRU9QQVJECi0gICAgQ0dJ
bWFnZVJlZiBjZ0ltYWdlID0gQ0dJbWFnZVJldGFpbihbY29yZShbc2VsZiB3ZWJGcmFtZV0pLT5u
b2RlSW1hZ2UoZWxlbWVudCkuZ2V0KCkgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4
dDpuaWwgaGludHM6bmlsXSk7Ci0jZWxzZQotICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVm
PiBpbWFnZVJlZihBZG9wdENGLCBDR0ltYWdlU291cmNlQ3JlYXRlV2l0aERhdGEoKENGRGF0YVJl
ZilbY29yZShbc2VsZiB3ZWJGcmFtZV0pLT5ub2RlSW1hZ2UoZWxlbWVudCkuZ2V0KCkgVElGRlJl
cHJlc2VudGF0aW9uXSwgMCkpOwotICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IENHSW1hZ2VTb3Vy
Y2VDcmVhdGVJbWFnZUF0SW5kZXgoaW1hZ2VSZWYuZ2V0KCksIDAsIDApOwotI2VuZGlmCi0gICAg
QVNTRVJUKGNnSW1hZ2UpOwotICAgIAotICAgIC8vIEJpdG1hcEltYWdlIHdpbGwgcmVsZWFzZSB0
aGUgcGFzc2VkIGluIENHSW1hZ2Ugb24gZGVzdHJ1Y3Rpb24uCi0gICAgUmVmUHRyPEltYWdlPiBu
b2RlSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNnSW1hZ2UpOwotICAgIEFTU0VSVChlbGVt
ZW50LT5yZW5kZXJlcigpKTsKLSAgICB0b1JlbmRlcldpZGdldChlbGVtZW50LT5yZW5kZXJlcigp
KS0+c2hvd1N1YnN0aXR1dGVJbWFnZShub2RlSW1hZ2UpOwotICAgIFtzZWxmIHN0b3BdOwotICAg
IF9pc0hhbHRlZCA9IFlFUzsgIAotICAgIF9oYXNCZWVuSGFsdGVkID0gWUVTOwotfQotCi0tICh2
b2lkKV9jbGVhclN1YnN0aXR1dGVJbWFnZQotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBbc2Vs
ZiBlbGVtZW50XTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAo
IXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgdG9SZW5kZXJXaWRnZXQocmVu
ZGVyZXIpLT5zaG93U3Vic3RpdHV0ZUltYWdlKDApOwotfQotCi0tICh2b2lkKXJlc3VtZUZyb21I
YWx0Ci17Ci0gICAgQVNTRVJUKF9pc0hhbHRlZCk7Ci0gICAgQVNTRVJUKCFfaXNTdGFydGVkKTsK
LSAgICBbc2VsZiBzdGFydF07Ci0gICAgCi0gICAgaWYgKF9pc1N0YXJ0ZWQpCi0gICAgICAgIF9p
c0hhbHRlZCA9IE5POwotICAgIAotICAgIEFTU0VSVChbc2VsZiBlbGVtZW50XS0+cmVuZGVyZXIo
KSk7Ci0gICAgLy8gRklYTUUgNzQxNzQ4NDogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHBsdWct
aW5zIG5vdCBkcmF3aW5nIGltbWVkaWF0ZWx5LiBXZSdkIGxpa2UgdG8gZGV0ZWN0IHdoZW4gdGhl
Ci0gICAgLy8gcGx1Zy1pbiBhY3R1YWxseSBkcmF3cyBpbnN0ZWFkIG9mIGp1c3QgYXNzdW1pbmcg
aXQgd2lsbCBkbyBzbyB3aXRoaW4gMC41IHNlY29uZHMgb2YgYmVpbmcgcmVzdGFydGVkLgotICAg
IFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2NsZWFyU3Vic3RpdHV0ZUltYWdlKSB3
aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OkNsZWFyU3Vic3RpdHV0ZUltYWdlRGVsYXldOwotfQot
Ci0tIChCT09MKWlzSGFsdGVkCi17Ci0gICAgcmV0dXJuIF9pc0hhbHRlZDsKLX0KLQogLSAoQk9P
TClzaG91bGRDbGlwT3V0UGx1Z2luCiB7CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdp
bmRvd107CkBAIC01OTYsMTEgKzQ5MSw2IEBAIC0gKHZvaWQpY2xlYXJDYWNoZWRTbmFwc2hvdAog
ICAgIF9jYWNoZWRTbmFwc2hvdC5jbGVhcigpOwogfQogCi0tIChCT09MKWhhc0JlZW5IYWx0ZWQK
LXsKLSAgICByZXR1cm4gX2hhc0JlZW5IYWx0ZWQ7Ci19Ci0KIC0gKHZvaWQpdmlld1dpbGxNb3Zl
VG9XaW5kb3c6KE5TV2luZG93ICopbmV3V2luZG93CiB7CiAgICAgLy8gV2UgbXVzdCByZW1vdmUg
dGhlIHRyYWNraW5nIHJlY3QgYmVmb3JlIHdlIG1vdmUgdG8gdGhlIG5ldyB3aW5kb3cuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVn
aW5IYWx0ZXJDbGllbnQuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luSGFsdGVyQ2xpZW50Lmg+Ci0jaW1wb3J0IDx3dGYv
Rm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgTm9kZTsKLX0KLQot
QGNsYXNzIFdlYlZpZXc7Ci0KLWNsYXNzIFdlYlBsdWdpbkhhbHRlckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpQbHVnaW5IYWx0ZXJDbGllbnQgewotcHVibGljOgotICAgIFdlYlBsdWdpbkhhbHRl
ckNsaWVudChXZWJWaWV3ICopOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYWx0UGx1
Z2luKFdlYkNvcmU6Ok5vZGUqLCBib29sLCBjb25zdCBXVEY6OlN0cmluZyYpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3Q7Ci0gICAgCi1wcml2YXRlOgotICAgIFdlYlZp
ZXcgKm1fd2ViVmlldzsKLX07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA5MjQ4
MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgIldlYlBsdWdpbkhhbHRlckNs
aWVudC5oIgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYkRlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCi0jaW1wb3J0ICJXZWJWaWV3LmgiCi0jaW1wb3J0
IDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1XZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OldlYlBsdWdpbkhhbHRlckNsaWVudChXZWJWaWV3ICp3
ZWJWaWV3KQotICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgQVNTRVJUX0FSRyh3ZWJW
aWV3LCB3ZWJWaWV3KTsKLX0KLQotYm9vbCBXZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OnNob3VsZEhh
bHRQbHVnaW4oTm9kZSogcGx1Z2luTm9kZSwgYm9vbCBpc1dpbmRvd2VkLCBjb25zdCBTdHJpbmcm
IHBsdWdpbk5hbWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FSRyhwbHVnaW5Ob2RlLCBwbHVnaW5O
b2RlKTsKLSAgICByZXR1cm4gQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKE5PLCBtX3dl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZEhhbHRQbHVnaW46aXNXaW5kb3dlZDpwbHVn
aW5OYW1lOiksIGtpdChwbHVnaW5Ob2RlKSwgaXNXaW5kb3dlZCwgKE5TU3RyaW5nICopcGx1Z2lu
TmFtZSk7Ci19Ci0KLWJvb2wgV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjplbmFibGVkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZEhhbHRQbHVnaW46aXNXaW5kb3dlZDpwbHVnaW5OYW1l
OildOwotfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk4LDcgKzk4LDYgQEAKICNkZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtl
eSBAIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViR0xFbmFibGVkUHJl
ZmVyZW5jZUtleSBAIldlYktpdFdlYkdMRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0QWNjZWxlcmF0
ZWQyZENhbnZhc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWNjZWxlcmF0ZWQyZENhbnZh
c0VuYWJsZWQiCi0jZGVmaW5lIFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtl
eSBAIldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lIgogI2RlZmluZSBXZWJLaXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQi
CiAjZGVmaW5lIFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFBhZ2luYXRlRHVy
aW5nTGF5b3V0RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQYWdpbmF0ZUR1cmluZ0xheW91
dEVuYWJsZWQiCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW0JKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzY3LDcgKzM2Nyw2IEBAICsgKHZvaWQp
aW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktp
dFNob3dSZXBhaW50Q291bnRlclByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0V2ViR0xFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRBY2NlbGVyYXRlZDJkQ2Fu
dmFzRW5hYmxlZFByZWZlcmVuY2VLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5z
aWduZWRJbnQ6NF0sIFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Ok5PXSwgICBXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgV2ViS2l0RE5TUHJlZmV0Y2hpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTEzMzMsMTYgKzEzMzIsNiBAQCAtICh2b2lkKXNldEFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkOihCCiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFi
bGVkIGZvcktleTpXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZFByZWZlcmVuY2VLZXld
OwogfQogCi0tICh1bnNpZ25lZClwbHVnaW5BbGxvd2VkUnVuVGltZQotewotICAgIHJldHVybiBb
c2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVy
ZW5jZUtleV07Ci19Ci0KLS0gKHZvaWQpc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWU6KHVuc2lnbmVk
KWFsbG93ZWRSdW5UaW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6YWxs
b3dlZFJ1blRpbWUgZm9yS2V5OldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtl
eV07Ci19Ci0KIC0gKEJPT0wpaXNGcmFtZUZsYXR0ZW5pbmdFbmFibGVkCiB7CiAgICAgcmV0dXJu
IFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZl
cmVuY2VLZXldOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw5
ICsxMjYsNiBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogLSAoQk9P
TClleHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDsKIC0gKHZvaWQpc2V0RXhwZXJpbWVu
dGFsTm90aWZpY2F0aW9uc0VuYWJsZWQ6KEJPT0wpbm90aWZpY2F0aW9uc0VuYWJsZWQ7CiAKLS0g
KHVuc2lnbmVkKXBsdWdpbkFsbG93ZWRSdW5UaW1lOwotLSAodm9pZClzZXRQbHVnaW5BbGxvd2Vk
UnVuVGltZToodW5zaWduZWQpYWxsb3dlZFJ1blRpbWU7Ci0KIC0gKEJPT0wpaXNGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkOwogLSAodm9pZClzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkOihCT09MKWZs
YWc7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDky
NDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw3ICs5MSw2IEBACiAjaW1wb3J0ICJXZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFu
ZGxlci5oIgogI2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJXZWJQ
bHVnaW5EYXRhYmFzZS5oIgotI2ltcG9ydCAiV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCiAjaW1w
b3J0ICJXZWJQb2xpY3lEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKQEAgLTc0NCw3ICs3NDMs
NiBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgcGFnZUNs
aWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkVkaXRvckNsaWVudChzZWxmKTsKICAgICBwYWdl
Q2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQoc2VsZik7CiAgICAgcGFnZUNs
aWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKLSAg
ICBwYWdlQ2xpZW50cy5wbHVnaW5IYWx0ZXJDbGllbnQgPSBhZG9wdFB0cihuZXcgV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50KHNlbGYpKTsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
KQogICAgIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9uQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0aW9u
Q2xpZW50KHNlbGYpOwogI2VuZGlmCkBAIC0xNTYzLDcgKzE1NjEsNiBAQCAtICh2b2lkKV9wcmVm
ZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3MtPnNldENhbnZhc1VzZXNB
Y2NlbGVyYXRlZERyYXdpbmcoW3ByZWZlcmVuY2VzIGNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdp
bmddKTsgICAgCiAgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoW3ByZWZlcmVuY2Vz
IHNob3dEZWJ1Z0JvcmRlcnNdKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVy
KFtwcmVmZXJlbmNlcyBzaG93UmVwYWludENvdW50ZXJdKTsKLSAgICBzZXR0aW5ncy0+c2V0UGx1
Z2luQWxsb3dlZFJ1blRpbWUoW3ByZWZlcmVuY2VzIHBsdWdpbkFsbG93ZWRSdW5UaW1lXSk7CiAg
ICAgc2V0dGluZ3MtPnNldFdlYkF1ZGlvRW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViQXVkaW9FbmFi
bGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldFdlYkdMRW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViR0xF
bmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKFtw
cmVmZXJlbmNlcyBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZF0pOwpAQCAtMjUzOSw1OSArMjUz
Niw2IEBAIC0gKEJPT0wpX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXkKICAgICByZXR1
cm4gX3ByaXZhdGUtPmluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2lu
Z1RvQml0bWFwOwogfQogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi1zdGF0aWMg
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqX3BsdWdpblZpZXdGb3JOb2RlKERPTU5vZGUgKm5v
ZGUpCi17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIE5v
ZGUqIGNvcmVOb2RlID0gY29yZShub2RlKTsKLSAgICBpZiAoIWNvcmVOb2RlKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlTm9kZS0+
cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNXaWRnZXQoKSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVy
V2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7Ci0gICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+
cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1ZpZXcg
KnZpZXcgPSB3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCk7Ci0gICAgaWYgKCFbdmlldyBpc0tpbmRP
ZkNsYXNzOltXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IGNsYXNzXV0pCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgCi0gICAgcmV0dXJuIChXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3ICopdmll
dzsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotKyAoQk9PTClf
aXNOb2RlSGFsdGVkUGx1Z2luOihET01Ob2RlICopbm9kZQotewotI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQotICAgIHJldHVybiBbX3BsdWdpblZpZXdGb3JOb2RlKG5vZGUpIGlzSGFs
dGVkXTsKLSNlbHNlCi0gICAgcmV0dXJuIFlFUzsKLSNlbmRpZgotfQotCi0rIChCT09MKV9oYXNQ
bHVnaW5Gb3JOb2RlQmVlbkhhbHRlZDooRE9NTm9kZSAqKW5vZGUKLXsKLSNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSAgICByZXR1cm4gW19wbHVnaW5WaWV3Rm9yTm9kZShub2RlKSBo
YXNCZWVuSGFsdGVkXTsKLSNlbHNlCi0gICAgcmV0dXJuIFlFUzsKLSNlbmRpZgotfQotKyAodm9p
ZClfcmVzdGFydEhhbHRlZFBsdWdpbkZvck5vZGU6KERPTU5vZGUgKilub2RlCi17Ci0jaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgW19wbHVnaW5WaWV3Rm9yTm9kZShub2RlKSByZXN1bWVGcm9tSGFsdF07Ci0j
ZW5kaWYKLX0KLQogLSAoTlNQYXN0ZWJvYXJkICopX2luc2VydGlvblBhc3RlYm9hcmQKIHsKICAg
ICByZXR1cm4gX3ByaXZhdGUgPyBfcHJpdmF0ZS0+aW5zZXJ0aW9uUGFzdGVib2FyZCA6IG5pbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlz
aW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MDMsMTEgKzUwMyw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGlu
ZyB0byB0aGUgQVBJLgogLSAodm9pZClfc2V0SW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xh
eWVyc1doZW5EcmF3aW5nVG9CaXRtYXA6KEJPT0wpZmxhZzsKIC0gKEJPT0wpX2luY2x1ZGVzRmxh
dHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOwogCi0vLyBTUEkgZm9y
IFBsdWdpbkhhbHRlcgotKyAoQk9PTClfaXNOb2RlSGFsdGVkUGx1Z2luOihET01Ob2RlICopbm9k
ZTsKLSsgKEJPT0wpX2hhc1BsdWdpbkZvck5vZGVCZWVuSGFsdGVkOihET01Ob2RlICopbm9kZTsK
LSsgKHZvaWQpX3Jlc3RhcnRIYWx0ZWRQbHVnaW5Gb3JOb2RlOihET01Ob2RlICopbm9kZTsKLQog
Ly8gV2hpY2ggcGFzdGVib2FyZCB0ZXh0IGlzIGNvbWluZyBmcm9tIGluIGVkaXRpbmcgZGVsZWdh
dGUgbWV0aG9kcyBzdWNoIGFzIHNob3VsZEluc2VydE5vZGUuCiAtIChOU1Bhc3RlYm9hcmQgKilf
aW5zZXJ0aW9uUGFzdGVib2FyZDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMSBAQAorMjAxMS0wOC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHBsdWctaW4gaGFsdGVyIGFuZCBhc3Nv
Y2lhdGVkIGNsYXNzZXMuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJQbHVnaW5IYWx0ZXJE
ZWxlZ2F0ZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5j
ZXNQcml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGw6
CisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
S2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvajoKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dl
YktpdC52Y3Byb2o6CisgICAgICAgICogV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAg
ICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmluaXRp
YWxpemVEZWZhdWx0U2V0dGluZ3MpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6Y2xvc2UpOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisgICAg
ICAgIChXZWJWaWV3Ojp1bnVzZWQxKToKKyAgICAgICAgKFdlYlZpZXc6OnVudXNlZDIpOgorICAg
ICAgICAoV2ViVmlldzo6dW51c2VkMyk6CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDExLTA4
LTA0ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyB3aGV0aGVyIEFWRm91bmRhdGlvbiBpcyBlbmFibGVk
IHRvIElXZWJQcmVmZXJlbmNlcwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw4ICsxMzYs
NiBAQAogCiAjZGVmaW5lIFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtl
eSAiV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnMiCiAKLSNkZWZpbmUgV2ViS2l0UGx1Z2lu
QWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5ICJXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZSIK
LQogI2RlZmluZSBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSAiV2Vi
S2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCIKIAogI2RlZmluZSBXZWJLaXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkIgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNp
b24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1Niw5ICsyNTYsNiBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFs
aXplRGVmYXVsdFNlCiAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwbHVnaW5BbGxvd2VkUnVuVGltZShB
ZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiV1IiksIG51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5KSwg
cGx1Z2luQWxsb3dlZFJ1blRpbWUuZ2V0KCkpOwotCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKQEAgLTE0OTAsMTggKzE0ODcsNiBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKFVJTlQgYWxsb3dlZFJ1blRp
bWUpCi17Ci0gICAgc2V0SW50ZWdlclZhbHVlKENGU1RSKFdlYktpdFBsdWdpbkFsbG93ZWRSdW5U
aW1lUHJlZmVyZW5jZUtleSksIGFsbG93ZWRSdW5UaW1lKTsKLSAgICByZXR1cm4gU19PSzsKLX0K
LQotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6cGx1Z2luQWxsb3dlZFJ1blRpbWUoVUlOVCogYWxs
b3dlZFJ1blRpbWUpCi17Ci0gICAgKmFsbG93ZWRSdW5UaW1lID0gaW50ZWdlclZhbHVlRm9yS2V5
KENGU1RSKFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSkpOwotICAgIHJl
dHVybiBTX09LOwotfQotCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9y
VGVzdChCU1RSIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0cmluZ0xlbihrZXkp
IHx8ICFTeXNTdHJpbmdMZW4odmFsdWUpKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJXZWJNdXRhYmxlVVJMUmVxdWVzdC5oIgog
I2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIldlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIldlYlBsdWdpbkhhbHRlckNsaWVudC5oIgogI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0V29ybGQuaCIKICNpbmNs
dWRlICJyZXNvdXJjZS5oIgpAQCAtNzA4LDcgKzcwNyw2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6Y2xvc2UKICAgICBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZSgwKTsKICAg
ICBzZXRVSURlbGVnYXRlKDApOwogICAgIHNldEZvcm1EZWxlZ2F0ZSgwKTsKLSAgICBzZXRQbHVn
aW5IYWx0ZXJEZWxlZ2F0ZSgwKTsKIAogICAgIGlmIChtX3dlYkluc3BlY3RvcikKICAgICAgICAg
bV93ZWJJbnNwZWN0b3ItPndlYlZpZXdDbG9zZWQoKTsKQEAgLTI2NDMsNyArMjY0MSw2IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcKICAgICBwYWdlQ2xpZW50cy5l
ZGl0b3JDbGllbnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpOwogICAgIHBhZ2VDbGllbnRz
LmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKICAgICBwYWdlQ2xpZW50cy5p
bnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwotICAgIHBhZ2VD
bGllbnRzLnBsdWdpbkhhbHRlckNsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJQbHVnaW5IYWx0ZXJD
bGllbnQodGhpcykpOwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAg
cGFnZUNsaWVudHMuZ2VvbG9jYXRpb25DbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQo
dGhpcyk7CiAjZW5kaWYKQEAgLTQ4MDYsMTIgKzQ4MDMsNiBAQCBIUkVTVUxUIFdlYlZpZXc6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy0+
c2V0U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoZW5hYmxlZCk7CiAKLSAgICBVSU5UIHJ1
blRpbWU7Ci0gICAgaHIgPSBwcmVmc1ByaXZhdGUtPnBsdWdpbkFsbG93ZWRSdW5UaW1lKCZydW5U
aW1lKTsKLSAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0dXJuIGhyOwotICAgIHNldHRp
bmdzLT5zZXRQbHVnaW5BbGxvd2VkUnVuVGltZShydW5UaW1lKTsKLQogICAgIGhyID0gcHJlZnNQ
cml2YXRlLT5pc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlM
RUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkBAIC02NDY3LDg1ICs2NDU4LDM0IEBAIHZvaWQg
V2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZygKIH0KICNlbmRpZgogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFBsdWdpbkhhbHRlckRlbGVnYXRlKElXZWJQ
bHVnaW5IYWx0ZXJEZWxlZ2F0ZSogZCkKLXsKLSAgICBtX3BsdWdpbkhhbHRlckRlbGVnYXRlID0g
ZDsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpwbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqKiBkKQor
SFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQxKCkKIHsKLSAgICBpZiAoIWQpCi0gICAgICAgIHJldHVy
biBFX1BPSU5URVI7Ci0KLSAgICBpZiAoIW1fcGx1Z2luSGFsdGVyRGVsZWdhdGUpCi0gICAgICAg
IHJldHVybiBFX0ZBSUw7Ci0KLSAgICByZXR1cm4gbV9wbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5jb3B5
UmVmVG8oZCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsK
IH0KIAotc3RhdGljIFBsdWdpblZpZXcqIHBsdWdpblZpZXdGb3JOb2RlKElET01Ob2RlKiBkb21O
b2RlKQorSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQyKCkKIHsKLSAgICBDT01QdHI8RE9NTm9kZT4g
d2ViS2l0RE9NTm9kZShRdWVyeSwgZG9tTm9kZSk7Ci0gICAgaWYgKCF3ZWJLaXRET01Ob2RlKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIE5vZGUqIG5vZGUgPSB3ZWJLaXRET01Ob2RlLT5ub2Rl
KCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJl
bmRlcmVyLT5pc1dpZGdldCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdpZGdldCogd2lk
Z2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQoKTsKLSAgICBpZiAoIXdpZGdl
dCB8fCAhd2lkZ2V0LT5pc1BsdWdpblZpZXcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHdpZGdldCk7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAotSFJFU1VMVCBXZWJWaWV3Ojppc05v
ZGVIYWx0ZWRQbHVnaW4oSURPTU5vZGUqIGRvbU5vZGUsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQg
V2ViVmlldzo6dW51c2VkMygpCiB7Ci0gICAgaWYgKCFkb21Ob2RlIHx8ICFyZXN1bHQpCi0gICAg
ICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICAqcmVzdWx0ID0gRkFMU0U7Ci0KLSAgICBQbHVn
aW5WaWV3KiB2aWV3ID0gcGx1Z2luVmlld0Zvck5vZGUoZG9tTm9kZSk7Ci0gICAgaWYgKCF2aWV3
KQotICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgKnJlc3VsdCA9IHZpZXctPmlzSGFsdGVk
KCk7Ci0gICAgcmV0dXJuIFNfT0s7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEVfRkFJTDsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjpyZXN0YXJ0SGFsdGVkUGx1Z2luRm9y
Tm9kZShJRE9NTm9kZSogZG9tTm9kZSkKK0hSRVNVTFQgV2ViVmlldzo6dW51c2VkNCgpCiB7Ci0g
ICAgaWYgKCFkb21Ob2RlKQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgUGx1Z2lu
VmlldyogdmlldyA9IHBsdWdpblZpZXdGb3JOb2RlKGRvbU5vZGUpOwotICAgIGlmICghdmlldykK
LSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgIHZpZXctPnJlc3RhcnQoKTsKLSAgICByZXR1
cm4gU19PSzsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRV9GQUlMOwog
fQogCi1IUkVTVUxUIFdlYlZpZXc6Omhhc1BsdWdpbkZvck5vZGVCZWVuSGFsdGVkKElET01Ob2Rl
KiBkb21Ob2RlLCBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYlZpZXc6OnVudXNlZDUoKQogewot
ICAgIGlmICghZG9tTm9kZSB8fCAhcmVzdWx0KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwot
Ci0gICAgKnJlc3VsdCA9IEZBTFNFOwotCi0gICAgUGx1Z2luVmlldyogdmlldyA9IHBsdWdpblZp
ZXdGb3JOb2RlKGRvbU5vZGUpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKLQotICAgICpyZXN1bHQgPSB2aWV3LT5oYXNCZWVuSGFsdGVkKCk7Ci0gICAgcmV0dXJuIFNf
T0s7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAog
SFJFU1VMVCBXZWJWaWV3OjpzZXRHZW9sb2NhdGlvblByb3ZpZGVyKElXZWJHZW9sb2NhdGlvblBy
b3ZpZGVyKiBsb2NhdGlvblByb3ZpZGVyKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24g
OTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTgwMiw4ICs4MDIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdl
YlNjcmlwdFdvcmxkKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJl
bW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lKTsKIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2Vi
UGx1Z2luSGFsdGVyRGVsZWdhdGUqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcGx1Z2luSGFsdGVyRGVsZWdhdGUoSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlKiopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQxKCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDIoKTsKIAogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnZhbGlkYXRlQmFja2luZ1N0b3JlKGNvbnN0IFJF
Q1QqKTsKIApAQCAtODE1LDkgKzgxNSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaGlzdG9yeURlbGVnYXRlKElXZWJIaXN0b3J5RGVsZWdhdGUqKiBo
aXN0b3J5RGVsZWdhdGUpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBh
ZGRWaXNpdGVkTGlua3MoQlNUUiogdmlzaXRlZFVSTHMsIHVuc2lnbmVkIHZpc2l0ZWRVUkxDb3Vu
dCk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNOb2RlSGFsdGVk
UGx1Z2luKElET01Ob2RlKiwgQk9PTCopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSByZXN0YXJ0SGFsdGVkUGx1Z2luRm9yTm9kZShJRE9NTm9kZSopOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNQbHVnaW5Gb3JOb2RlQmVlbkhhbHRlZChJ
RE9NTm9kZSosIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dW51c2VkMygpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQ0
KCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDUoKTsKIAog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRHZW9sb2NhdGlvblByb3Zp
ZGVyKElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiBsb2NhdGlvblByb3ZpZGVyKTsKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2VvbG9jYXRpb25Qcm92aWRlcihJV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcioqIGxvY2F0aW9uUHJvdmlkZXIpOwpAQCAtMTA1OSw3ICsxMDU5LDYg
QEAgcHJvdGVjdGVkOgogICAgIENPTVB0cjxJV2ViSGlzdG9yeURlbGVnYXRlPiBtX2hpc3RvcnlE
ZWxlZ2F0ZTsKICAgICBDT01QdHI8V2ViUHJlZmVyZW5jZXM+IG1fcHJlZmVyZW5jZXM7CiAgICAg
Q09NUHRyPFdlYkluc3BlY3Rvcj4gbV93ZWJJbnNwZWN0b3I7Ci0gICAgQ09NUHRyPElXZWJQbHVn
aW5IYWx0ZXJEZWxlZ2F0ZT4gbV9wbHVnaW5IYWx0ZXJEZWxlZ2F0ZTsKICAgICBDT01QdHI8SVdl
Ykdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fZ2VvbG9jYXRpb25Qcm92aWRlcjsKIAogICAgIGJvb2wg
bV91c2VyQWdlbnRPdmVycmlkZGVuOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlLmlkbAkocmV2aXNpb24g
OTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQbHVnaW5IYWx0ZXJE
ZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERPX05PX0lNUE9SVFMK
LWltcG9ydCAib2FpZGwuaWRsIjsKLWltcG9ydCAib2NpZGwuaWRsIjsKLSNlbmRpZgotCi1pbnRl
cmZhY2UgSURPTU5vZGU7Ci1pbnRlcmZhY2UgSVdlYlZpZXc7Ci0KLVsKLSAgICBvYmplY3QsCi0g
ICAgb2xlYXV0b21hdGlvbiwKLSAgICB1dWlkKDJlMGU1ZDllLWZmYzktNDE4NS1hYTE1LWU2Njg2
OGQ1NDhlZSksCi0gICAgcG9pbnRlcl9kZWZhdWx0KHVuaXF1ZSkKLV0KLWludGVyZmFjZSBJV2Vi
UGx1Z2luSGFsdGVyRGVsZWdhdGUgOiBJVW5rbm93bgotewotICAgIEhSRVNVTFQgc2hvdWxkSGFs
dFBsdWdpbihbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElET01Ob2RlKiwgW2luXSBCT09M
IGlzV2luZG93ZWQsIFtpbl0gQlNUUiBwbHVnaW5OYW1lLCBbb3V0LCByZXR2YWxdIEJPT0wqIHJl
c3VsdCk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNl
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsOCArOTIsOCBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzUHJpdmF0
ZSA6IElVbmtuCiAgICAgLy8gVXNlZCBieSBEdW1wUmVuZGVyVHJlZS4KICAgICBIUkVTVUxUIHNl
dFByZWZlcmVuY2VGb3JUZXN0KFtpbl0gQlNUUiBrZXksIFtpbl0gQlNUUiB2YWx1ZSk7CiAKLSAg
ICBIUkVTVUxUIHNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKFtpbl0gVUlOVCBhbGxvd2VkUnVuVGlt
ZSk7Ci0gICAgSFJFU1VMVCBwbHVnaW5BbGxvd2VkUnVuVGltZShbb3V0LCByZXR2YWxdIFVJTlQq
IGFsbG93ZWRSdW5UaW1lKTsKKyAgICBIUkVTVUxUIHVudXNlZDEoKTsKKyAgICBIUkVTVUxUIHVu
dXNlZDIoKTsKIAogICAgIEhSRVNVTFQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
W2luXSBCT09MKTsKICAgICBIUkVTVUxUIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFtv
dXQsIHJldHZhbF0gQk9PTCopOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViVmlld1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVy
ZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGU7CiBp
bnRlcmZhY2UgSVdlYkhpc3RvcnlEZWxlZ2F0ZTsKIGludGVyZmFjZSBJV2ViSW5zcGVjdG9yOwog
aW50ZXJmYWNlIElXZWJJbnNwZWN0b3JQcml2YXRlOwotaW50ZXJmYWNlIElXZWJQbHVnaW5IYWx0
ZXJEZWxlZ2F0ZTsKIGludGVyZmFjZSBJV2ViVVJMUmVxdWVzdDsKIGludGVyZmFjZSBJV2ViVmll
dzsKIApAQCAtMTk3LDggKzE5Niw4IEBAIGludGVyZmFjZSBJV2ViVmlld1ByaXZhdGUgOiBJVW5r
bm93bgogICAgIEhSRVNVTFQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbUdyb3VwKFtpbl0gQlNU
UiBncm91cE5hbWUsIFtpbl0gSVdlYlNjcmlwdFdvcmxkKik7CiAgICAgSFJFU1VMVCByZW1vdmVB
bGxVc2VyQ29udGVudEZyb21Hcm91cChbaW5dIEJTVFIgZ3JvdXBOYW1lKTsKIAotICAgIEhSRVNV
TFQgc2V0UGx1Z2luSGFsdGVyRGVsZWdhdGUoW2luXSBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUq
IGQpOwotICAgIEhSRVNVTFQgcGx1Z2luSGFsdGVyRGVsZWdhdGUoW3JldHZhbCwgb3V0XSBJV2Vi
UGx1Z2luSGFsdGVyRGVsZWdhdGUqKiBkKTsKKyAgICBIUkVTVUxUIHVudXNlZDEoKTsKKyAgICBI
UkVTVUxUIHVudXNlZDIoKTsKIAogICAgIC8vIElmIHJlY3QgaXMgMCwgdGhlIGVudGlyZSBiYWNr
aW5nIHN0b3JlIHdpbGwgYmUgaW52YWxpZGF0ZWQuCiAgICAgSFJFU1VMVCBpbnZhbGlkYXRlQmFj
a2luZ1N0b3JlKFtpbl0gY29uc3QgUkVDVCogcmVjdCk7CkBAIC0yMTksOSArMjE4LDkgQEAgaW50
ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCBoaXN0b3J5RGVs
ZWdhdGUoW291dCxyZXR2YWxdIElXZWJIaXN0b3J5RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUp
OwogICAgIEhSRVNVTFQgYWRkVmlzaXRlZExpbmtzKFtpbl0gQlNUUiogdmlzaXRlZFVSTHMsIFtp
bl0gdW5zaWduZWQgdmlzaXRlZFVSTENvdW50KTsKIAotICAgIEhSRVNVTFQgaXNOb2RlSGFsdGVk
UGx1Z2luKFtpbl0gSURPTU5vZGUqLCBbcmV0dmFsLCBvdXRdIEJPT0wqKTsKLSAgICBIUkVTVUxU
IHJlc3RhcnRIYWx0ZWRQbHVnaW5Gb3JOb2RlKFtpbl0gSURPTU5vZGUqKTsKLSAgICBIUkVTVUxU
IGhhc1BsdWdpbkZvck5vZGVCZWVuSGFsdGVkKFtpbl0gSURPTU5vZGUqLCBbcmV0dmFsLCBvdXRd
IEJPT0wqKTsKKyAgICBIUkVTVUxUIHVudXNlZDMoKTsKKyAgICBIUkVTVUxUIHVudXNlZDQoKTsK
KyAgICBIUkVTVUxUIHVudXNlZDUoKTsKIAogICAgIEhSRVNVTFQgc2V0R2VvbG9jYXRpb25Qcm92
aWRlcihbaW5dIElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiBsb2NhdGlvblByb3ZpZGVyKTsKICAg
ICBIUkVTVUxUIGdlb2xvY2F0aW9uUHJvdmlkZXIoW291dCwgcmV0dmFsXSBJV2ViR2VvbG9jYXRp
b25Qcm92aWRlcioqIGxvY2F0aW9uUHJvdmlkZXIpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
SW50ZXJmYWNlcy9XZWJLaXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvV2ViS2l0LmlkbAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL1dlYktpdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNiBA
QCBpbXBvcnQgIm9jaWRsLmlkbCI7CiAjaW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlvbi5pZGwiCiAj
aW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlvbkNlbnRlci5pZGwiCiAjaW5jbHVkZSAiSVdlYk5vdGlm
aWNhdGlvbk9ic2VydmVyLmlkbCIKLSNpbmNsdWRlICJJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUu
aWRsIgogI2luY2x1ZGUgIklXZWJQb2xpY3lEZWxlZ2F0ZS5pZGwiCiAjaW5jbHVkZSAiSVdlYlBv
bGljeURlbGVnYXRlUHJpdmF0ZS5pZGwiCiAjaW5jbHVkZSAiSVdlYlByZWZlcmVuY2VzLmlkbCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSGFsdGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgotI2luY2x1ZGUg
IldlYlZpZXcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotV2ViUGx1Z2luSGFsdGVy
Q2xpZW50OjpXZWJQbHVnaW5IYWx0ZXJDbGllbnQoV2ViVmlldyogd2ViVmlldykKLSAgICA6IG1f
d2ViVmlldyh3ZWJWaWV3KQotewotICAgIEFTU0VSVF9BUkcod2ViVmlldywgd2ViVmlldyk7Ci19
Ci0KLWJvb2wgV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjpzaG91bGRIYWx0UGx1Z2luKE5vZGUqIG4s
IGJvb2wgaXNXaW5kb3dlZCwgY29uc3QgU3RyaW5nJiBwbHVnaW5OYW1lKSBjb25zdAotewotICAg
IEFTU0VSVF9BUkcobiwgbik7Ci0KLSAgICBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqIGQ7Ci0g
ICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnBsdWdpbkhhbHRlckRlbGVnYXRlKCZkKSkgfHwgIWQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENPTVB0cjxJRE9NTm9kZT4gZG9tTm9kZShB
ZG9wdENPTSwgRE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UobikpOwotCi0gICAgQk9PTCBzaG91bGRI
YWx0OwotICAgIGlmIChGQUlMRUQoZC0+c2hvdWxkSGFsdFBsdWdpbihtX3dlYlZpZXcsIGRvbU5v
ZGUuZ2V0KCksIGlzV2luZG93ZWQsIEJTdHJpbmcocGx1Z2luTmFtZSksICZzaG91bGRIYWx0KSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBzaG91bGRIYWx0OwotfQotCi1i
b29sIFdlYlBsdWdpbkhhbHRlckNsaWVudDo6ZW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgSVdlYlBs
dWdpbkhhbHRlckRlbGVnYXRlKiBkOwotICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5wbHVnaW5I
YWx0ZXJEZWxlZ2F0ZSgmZCkpIHx8ICFkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdpbkhhbHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oCShyZXZpc2lvbiA5MjQ4MikKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBXZWJQbHVnaW5IYWx0ZXJDbGllbnRfaAot
I2RlZmluZSBXZWJQbHVnaW5IYWx0ZXJDbGllbnRfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5IYWx0ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgY2xhc3MgTm9kZTsKLX0KLQotY2xhc3MgV2ViVmlldzsKLQotY2xhc3Mg
V2ViUGx1Z2luSGFsdGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkhhbHRlckNsaWVu
dCB7Ci1wdWJsaWM6Ci0gICAgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcp
OwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEhhbHRQbHVnaW4oV2ViQ29yZTo6Tm9kZSogbiwg
Ym9vbCBpc1dpbmRvd2VkLCBjb25zdCBXVEY6OlN0cmluZyYgcGx1Z2luTmFtZSkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBXZWJWaWV3
KiBtX3dlYlZpZXc7Ci19OwotCi0jZW5kaWYgLy8gV2ViUGx1Z2luSGFsdGVyQ2xpZW50X2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZj
cHJvagkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L0ludGVyZmFjZXMudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDY1LDU4ICszMDY1LDYgQEAK
IAkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCTwvRmlsZT4KIAkJPEZpbGUKLQkJCVJlbGF0aXZl
UGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUuaWRsIgotCQkJPgot
CQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJPgotCQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRv
b2wiCi0JCQkJLz4KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRp
b24KLQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iUHJv
ZHVjdGlvbnxXaW4zMiIKLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJ
PFRvb2wKLQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KLQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIK
LQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wKLQkJCQkJTmFt
ZT0iVkNNSURMVG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTxGaWxl
Q29uZmlndXJhdGlvbgotCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJW
Q01JRExUb29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExU
b29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQk8L0ZpbGU+Ci0JCTxGaWxl
CiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXEludGVyZmFjZXNcSVdlYlBvbGljeURlbGVnYXRlLmlkbCIK
IAkJCT4KIAkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
S2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEyNDMsMTQgKzEyNDMsNiBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViQ29yZVN1cHBvcnRc
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAJCQkJPgogCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYlBsdWdpbkhhbHRlckNsaWVudC5j
cHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdl
YkNvcmVTdXBwb3J0XFdlYlBsdWdpbkhhbHRlckNsaWVudC5oIgotCQkJCT4KLQkJCTwvRmlsZT4K
IAkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYktpdFByZWZpeC5j
cHAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0
L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA4LTA0
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEb24ndCBpbmNsdWRlIFBsdWdpbkhhbHRlckNsaWVudC5oLCBpdCdzIGJlZW4gcmVtb3Zl
ZC4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDExLTA4LTAzICBQYXZlbCBGZWxkbWFu
ICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92
ZSBOb2RlIHBhcmFtZXRlciBmcm9tIHRoZSBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodApJbmRl
eDogU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd3gv
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlBsdWdpbkhhbHRlckNsaWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgyKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMDQgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1
Z2luSGFsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBjYWxsIHRvIHNldCB0aGUgYWxsb3dlZCBwbHVnLWluIHJ1biB0aW1lLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVz
ZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisKIDIwMTEtMDgtMDUgIEFkZW1hciBkZSBT
b3V6YSBSZWlzIEpyLiAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBidWlsZCBmaXggZm9yIFF0LU1pbmltYWwgYnVpbGRib3QKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDkyNDgyKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NDcsNyArNDQ3LDYgQEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVu
dFZhbAogICAgIFtwcmVmZXJlbmNlcyBzZXRDYWNoZU1vZGVsOldlYkNhY2hlTW9kZWxEb2N1bWVu
dEJyb3dzZXJdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRYU1NBdWRpdG9yRW5hYmxlZDpOT107CiAg
ICAgW3ByZWZlcmVuY2VzIHNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkOk5PXTsK
LSAgICBbcHJlZmVyZW5jZXMgc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWU6MV07CiAgICAgW3ByZWZl
cmVuY2VzIHNldFBsdWdJbnNFbmFibGVkOllFU107CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZDpOT107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103085</attachid>
            <date>2011-08-05 10:56:02 -0700</date>
            <delta_ts>2011-08-05 11:21:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65729-20110805105601.patch</filename>
            <type>text/plain</type>
            <size>84060</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFs
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAqIHBhZ2UvSGFsdGFibGVQbHVnaW4uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QbHVnaW5IYWx0ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBhZ2UvUGx1Z2luSGFsdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFn
ZS9QbHVnaW5IYWx0ZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcp
OgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1
Z2luVmlld05vbmUuY3BwOgorICAgICAgICAqIHBsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3Bw
OgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcDoKKyAgICAgICAgKiBwbHVn
aW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuaDoKKwogMjAxMS0wOC0wNSAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgZGlyPWF1dG8gbmVlZHMgdG8gd29y
ayBvbiB2YWx1ZSBvZiBpbnB1dCBhbmQgdGV4dGFyZWEgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC05OTIsNyArOTkyLDYgQEAgU0VUKFdlYkNvcmVfU09VUkNF
UwogICAgIHBhZ2UvUGVyZm9ybWFuY2UuY3BwCiAgICAgcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRp
b24uY3BwCiAgICAgcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKLSAgICBwYWdlL1BsdWdpbkhh
bHRlci5jcHAKICAgICBwYWdlL1ByaW50Q29udGV4dC5jcHAKICAgICBwYWdlL1NjcmVlbi5jcHAK
ICAgICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMTAsOSArMjMxMCw2IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaCBcCi0JU291cmNlL1dlYkNvcmUvcGFnZS9QbHVn
aW5IYWx0ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Qb3NpdGlv
bkVycm9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNiBAQCBf
X1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dEQxRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFu
Z2xlRVJLTlNfN0ludFJlY3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRl
Qm91bmRpbmdCb3hSZWN0RWIKLV9fWk43V2ViQ29yZTEyUmVuZGVyV2lkZ2V0MTlzaG93U3Vic3Rp
dHV0ZUltYWdlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVJbWFnZUVFRQogX19aTjdXZWJDb3JlMTJS
ZW5kZXJXaWRnZXQyOHJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXNFdgogX19aTjdXZWJDb3Jl
MTJSZW5kZXJXaWRnZXQyOXN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2Vi
Q29yZTEyU2hhcmVkQnVmZmVyMTB3cmFwTlNEYXRhRVA2TlNEYXRhCkBAIC02OTgsOCArNjk3LDYg
QEAgX19aTjdXZWJDb3JlNFBhZ2UxMGZpbmRTdHJpbmdFUktOM1dURjZTdAogX19aTjdXZWJDb3Jl
NFBhZ2UxMVBhZ2VDbGllbnRzQzFFdgogX19aTjdXZWJDb3JlNFBhZ2UxMVBhZ2VDbGllbnRzRDFF
dgogX19aTjdXZWJDb3JlNFBhZ2UxMnNldEdyb3VwTmFtZUVSS04zV1RGNlN0cmluZ0UKLV9fWk43
V2ViQ29yZTRQYWdlMTNkaWRTdG9wUGx1Z2luRVBOU18xNEhhbHRhYmxlUGx1Z2luRQotX19aTjdX
ZWJDb3JlNFBhZ2UxNGRpZFN0YXJ0UGx1Z2luRVBOU18xNEhhbHRhYmxlUGx1Z2luRQogX19aTjdX
ZWJDb3JlNFBhZ2UxNHNldE1lZGlhVm9sdW1lRWYKIF9fWk43V2ViQ29yZTRQYWdlMTVhZGRTY2hl
ZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUKIF9fWk43V2Vi
Q29yZTRQYWdlMTVkaWRNb3ZlT25zY3JlZW5FdgpAQCAtODk4LDcgKzg5NSw2IEBAIF9fWk43V2Vi
Q29yZThTZXR0aW5nczIzc2V0RWRpdGFibGVMaW5rQmUKIF9fWk43V2ViQ29yZThTZXR0aW5nczIz
c2V0TG9hZERlZmVycmluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXROZWVk
c1RpZ2VyTWFpbFF1aXJrc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldFBpY3RvZ3JhcGhG
b250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCi1fX1pON1dlYkNv
cmU4U2V0dGluZ3MyM3NldFBsdWdpbkFsbG93ZWRSdW5UaW1lRWoKIF9fWk43V2ViQ29yZThTZXR0
aW5nczIzc2V0VXNlc0VuY29kaW5nRGV0ZWN0b3JFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRz
ZXRBcHBsaWNhdGlvbkNocm9tZU1vZGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRETlNQ
cmVmZXRjaGluZ0VuYWJsZWRFYgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDkyNDgyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTk0MSw3ICs5
NDEsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL1BlcmZvcm1hbmNlLmNwcCBcCiAgICAgcGFn
ZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5n
LmNwcCBcCi0gICAgcGFnZS9QbHVnaW5IYWx0ZXIuY3BwIFwKICAgICBwYWdlL1ByaW50Q29udGV4
dC5jcHAgXAogICAgIHBhZ2UvU2NyZWVuLmNwcCBcCiAgICAgcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MzAsMTAgKzE3MzAs
NiBAQAogCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYz
N0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLzsg
fTsKIAkJNzY3Rjk5QkUxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAg
Ki87IH07CiAJCTc2N0Y5OUMwMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgg
Ki87IH07Ci0JCTc2OTNCQUQyMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBQ0UxMDZD
MkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzY5M0JBRDMxMDZDMkRDQTAwN0IwODIzIC8qIFBs
dWdpbkhhbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLzsgfTsK
LQkJNzY5M0JBRDQxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBRDAxMDZDMkRDQTAwN0Iw
ODIzIC8qIFBsdWdpbkhhbHRlci5oICovOyB9OwotCQk3NjkzQkFENTEwNkMyRENBMDA3QjA4MjMg
LyogUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NjkzQkFEMTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzY5NDU2M0MxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTQ1NjNBMTIxNEQ5N0MwMDA3
Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgKi87IH07CiAJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3
Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzY5NDU2M0IxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0
LmggKi87IH07CiAJCTc2OTQ1NjVCMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTQ1NjU5
MTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QuaCAqLzsgfTsKQEAgLTgzNjYsMTAg
KzgzNjIsNiBAQAogCQk3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2N0Y5OUJE
MTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2N0Y5OUJGMTFBMTE5NTYwMDgw
QzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVn
aW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFsdGFibGVQbHVnaW4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8q
IFBsdWdpbkhhbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
bHVnaW5IYWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NjkzQkFEMDEw
NkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsdWdpbkhhbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
NjkzQkFEMTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Njk0NTYzQTEyMTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tl
bkxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Ub2tl
bkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njk0NTYzQjEyMTREOTdD
MDAwN0NCQUUgLyogSlNET01Ub2tlbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01Ub2tlbkxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5
NDU2NTkxMjE0REI2MzAwMDdDQkFFIC8qIERPTURPTVRva2VuTGlzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01ET01Ub2tlbkxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0NjEwLDcgKzE0NjAyLDYgQEAKIAkJCQlGRTgwRDdCQzBFOUMxRjI1MDAw
RDZGNzUgLyogR2VvcG9zaXRpb24uaWRsICovLAogCQkJCUM1MEI1NjE0MTIxMTlEMjMwMDhCNDZF
MCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLywKIAkJCQlDNTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAg
LyogR3JvdXBTZXR0aW5ncy5oICovLAotCQkJCTc2OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBI
YWx0YWJsZVBsdWdpbi5oICovLAogCQkJCUJDOTREMTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0
b3J5LmNwcCAqLywKIAkJCQlCQzk0RDE1MTBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oICov
LAogCQkJCUJDOTREMTUyMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmlkbCAqLywKQEAgLTE0
NjYwLDkgKzE0NjUxLDYgQEAKIAkJCQk4QUY0RTU1ODExREM1QTYzMDAwRUQzREUgLyogUGVyZm9y
bWFuY2VUaW1pbmcuY3BwICovLAogCQkJCThBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJm
b3JtYW5jZVRpbWluZy5oICovLAogCQkJCThBRjRFNTVBMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJm
b3JtYW5jZVRpbWluZy5pZGwgKi8sCi0JCQkJNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBs
dWdpbkhhbHRlci5jcHAgKi8sCi0JCQkJNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdp
bkhhbHRlci5oICovLAotCQkJCTc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0
ZXJDbGllbnQuaCAqLywKIAkJCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25D
YWxsYmFjay5oICovLAogCQkJCTU5M0FCNjk3MTM1NUNEOTIwMEZDODIxMSAvKiBQb3NpdGlvbkNh
bGxiYWNrLmlkbCAqLywKIAkJCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25F
cnJvci5oICovLApAQCAtMjE1MTEsNyArMjE0OTksNiBAQAogCQkJCUIyQTAxNUFCMEFGNkNENTMw
MDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3N0ExN0E3QjEy
RjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NUeXBlczNELmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0MDBCRkIwMDUgLyogSGFzaENoYW5nZUV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODc0OEJFMDEyQ0JGMkRDMDAxRkJBNDEgLyogSGFzaFRv
b2xzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDMDEyNTFGMTJEMDAzRUYyNjkgLyogSGlk
ZGVuSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNTAzLDggKzIyNDkwLDYgQEAKIAkJ
CQk5MzVDNDc2QjA5QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOUM2RTRGNDBENzQ1RTQ4MDA2NDQyRTkgLyogUGx1Z2luRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQkMxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3NjkzQkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1
Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk3NjkzQkFENTEwNkMyRENBMDA3QjA4MjMg
LyogUGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQURBMTQxMTBFMUFF
NUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8qIFBsdWdpblN0cmF0ZWd5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMjU0ODMsNyArMjU0NjgsNiBAQAogCQkJCTFBRDhGODFDMTFD
QUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTlDNkU0RjMwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTcyMDVBQkIxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTc2OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEQTE0MTAwRTFBRTVEOTAwMDIzRUU1IC8qIFBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZGRjE3RTMx
MTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdOb25lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyQjFGNzE2MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZp
c2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudC5oIgotI2luY2x1ZGUgIlBsdWdpbkhhbHRlckNsaWVudC5oIgogI2luY2x1ZGUg
IlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWFy
Y2hQb3B1cE1lbnUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGFsdGFibGVQbHVnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0hhbHRhYmxlUGx1Z2luLmgJKHJl
dmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IYWx0YWJsZVBsdWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBIYWx0YWJsZVBsdWdpbl9oCi0jZGVmaW5lIEhh
bHRhYmxlUGx1Z2luX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotCi1j
bGFzcyBIYWx0YWJsZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SGFsdGFibGVQbHVn
aW4oKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBoYWx0KCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCByZXN0YXJ0KCkgPSAwOwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBwbHVnaW5OYW1lKCkgY29uc3QgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gSGFsdGFibGVQbHVnaW5faApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZp
c2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRl
ICJQbHVnaW5IYWx0ZXIuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUGx1
Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKQEAgLTE3NiwxMSAr
MTc1LDYgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgQVNTRVJU
KCFhbGxQYWdlcy0+Y29udGFpbnModGhpcykpOwogICAgIGFsbFBhZ2VzLT5hZGQodGhpcyk7CiAK
LSAgICBpZiAocGFnZUNsaWVudHMucGx1Z2luSGFsdGVyQ2xpZW50KSB7Ci0gICAgICAgIG1fcGx1
Z2luSGFsdGVyID0gYWRvcHRQdHIobmV3IFBsdWdpbkhhbHRlcihwYWdlQ2xpZW50cy5wbHVnaW5I
YWx0ZXJDbGllbnQucmVsZWFzZSgpKSk7Ci0gICAgICAgIG1fcGx1Z2luSGFsdGVyLT5zZXRQbHVn
aW5BbGxvd2VkUnVuVGltZShtX3NldHRpbmdzLT5wbHVnaW5BbGxvd2VkUnVuVGltZSgpKTsKLSAg
ICB9Ci0KICNpZm5kZWYgTkRFQlVHCiAgICAgcGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5k
aWYKQEAgLTg4NiwyNCArODgwLDYgQEAgdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoKQogICAgICAgICBwbHVnaW5WaWV3QmFzZXNbaV0tPnByaXZhdGVCcm93c2luZ1N0YXRl
Q2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAotdm9pZCBQYWdlOjpwbHVnaW5B
bGxvd2VkUnVuVGltZUNoYW5nZWQoKQotewotICAgIGlmIChtX3BsdWdpbkhhbHRlcikKLSAgICAg
ICAgbV9wbHVnaW5IYWx0ZXItPnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKG1fc2V0dGluZ3MtPnBs
dWdpbkFsbG93ZWRSdW5UaW1lKCkpOwotfQotCi12b2lkIFBhZ2U6OmRpZFN0YXJ0UGx1Z2luKEhh
bHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgaWYgKG1fcGx1Z2luSGFsdGVyKQotICAgICAgICBt
X3BsdWdpbkhhbHRlci0+ZGlkU3RhcnRQbHVnaW4ob2JqKTsKLX0KLQotdm9pZCBQYWdlOjpkaWRT
dG9wUGx1Z2luKEhhbHRhYmxlUGx1Z2luKiBvYmopCi17Ci0gICAgaWYgKG1fcGx1Z2luSGFsdGVy
KQotICAgICAgICBtX3BsdWdpbkhhbHRlci0+ZGlkU3RvcFBsdWdpbihvYmopOwotfQotCiB2b2lk
IFBhZ2U6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFTZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2
aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsOCArNzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsK
ICAgICBjbGFzcyBQYWdlR3JvdXA7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKLSAgICBjbGFzcyBQ
bHVnaW5IYWx0ZXI7Ci0gICAgY2xhc3MgUGx1Z2luSGFsdGVyQ2xpZW50OwogICAgIGNsYXNzIFBy
b2dyZXNzVHJhY2tlcjsKICAgICBjbGFzcyBSZW5kZXJUaGVtZTsKICAgICBjbGFzcyBWaXNpYmxl
U2VsZWN0aW9uOwpAQCAtMTEzLDcgKzExMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIEVkaXRvckNsaWVudCogZWRpdG9yQ2xpZW50OwogICAgICAgICAgICAgRHJhZ0NsaWVu
dCogZHJhZ0NsaWVudDsKICAgICAgICAgICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50OwotICAgICAgICAgICAgT3duUHRyPFBsdWdpbkhhbHRlckNsaWVudD4gcGx1Z2luSGFsdGVy
Q2xpZW50OwogICAgICAgICAgICAgR2VvbG9jYXRpb25DbGllbnQqIGdlb2xvY2F0aW9uQ2xpZW50
OwogICAgICAgICAgICAgRGV2aWNlTW90aW9uQ2xpZW50KiBkZXZpY2VNb3Rpb25DbGllbnQ7CiAg
ICAgICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGll
bnQ7CkBAIC0yNTMsMTAgKzI1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogICAgICAgICB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgICAgIHZvaWQgZGlkU3RhcnRQbHVnaW4oSGFsdGFi
bGVQbHVnaW4qKTsKLSAgICAgICAgdm9pZCBkaWRTdG9wUGx1Z2luKEhhbHRhYmxlUGx1Z2luKik7
Ci0gICAgICAgIHZvaWQgcGx1Z2luQWxsb3dlZFJ1blRpbWVDaGFuZ2VkKCk7Ci0KICAgICAgICAg
c3RhdGljIHZvaWQgc2V0RGVidWdnZXJGb3JBbGxQYWdlcyhKU0M6OkRlYnVnZ2VyKik7CiAgICAg
ICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOwogICAgICAgICBKU0M6OkRlYnVn
Z2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KQEAgLTM5Myw4ICsz
ODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX2NhblN0YXJ0TWVk
aWE7CiAKLSAgICAgICAgT3duUHRyPFBsdWdpbkhhbHRlcj4gbV9wbHVnaW5IYWx0ZXI7Ci0KICNp
ZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBt
X3Nlc3Npb25TdG9yYWdlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdp
bkhhbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0
ZXIuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFs
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiUGx1Z2luSGFsdGVyLmgiCi0KLSNpbmNsdWRlICJIYWx0YWJsZVBsdWdpbi5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGx1Z2luSGFsdGVy
OjpQbHVnaW5IYWx0ZXIoUGFzc093blB0cjxQbHVnaW5IYWx0ZXJDbGllbnQ+IGNsaWVudCkKLSAg
ICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fdGltZXIodGhpcywgJlBsdWdpbkhhbHRlcjo6
dGltZXJGaXJlZCkKLSAgICAsIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUobnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKLXsKLSAgICBBU1NFUlRfQVJHKG1fY2xpZW50LCBtX2NsaWVudCk7
Ci19Ci0KLXZvaWQgUGx1Z2luSGFsdGVyOjpkaWRTdGFydFBsdWdpbihIYWx0YWJsZVBsdWdpbiog
b2JqKQotewotICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwotICAgIEFTU0VSVF9BUkcob2JqLCAh
bV9wbHVnaW5zLmNvbnRhaW5zKG9iaikpOwotCi0gICAgaWYgKCFtX2NsaWVudC0+ZW5hYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJl
bnRUaW1lKCk7Ci0KLSAgICBtX3BsdWdpbnMuYWRkKG9iaiwgY3VycmVudFRpbWUpOwotCi0gICAg
aWYgKG1fcGx1Z2lucy5zaXplKCkgPT0gMSkKLSAgICAgICAgbV9vbGRlc3RTdGFydFRpbWUgPSBj
dXJyZW50VGltZTsKLQotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIFBs
dWdpbkhhbHRlcjo6ZGlkU3RvcFBsdWdpbihIYWx0YWJsZVBsdWdpbiogb2JqKQotewotICAgIGlm
ICghbV9jbGllbnQtPmVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wbHVnaW5z
LnJlbW92ZShvYmopOwotfQotCi12b2lkIFBsdWdpbkhhbHRlcjo6dGltZXJGaXJlZChUaW1lcjxQ
bHVnaW5IYWx0ZXI+KikKLXsKLSAgICBpZiAobV9wbHVnaW5zLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgVmVjdG9yPEhhbHRhYmxlUGx1Z2luKj4gcGx1Z2luczsKLSAgICBjb3B5
S2V5c1RvVmVjdG9yKG1fcGx1Z2lucywgcGx1Z2lucyk7Ci0KLSAgICAvLyBQbHVnLWlucyBvbGRl
ciB0aGFuIHRoaXMgYXJlIGNhbmRpZGF0ZXMgdG8gYmUgaGFsdGVkLgotICAgIGRvdWJsZSBwbHVn
aW5DdXRPZmZUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpIC0gbV9wbHVnaW5BbGxvd2VkUnVuVGlt
ZTsKLQotICAgIG1fb2xkZXN0U3RhcnRUaW1lID0gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4
KCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgZG91YmxlIHRoaXNTdGFydFRpbWUgPSBtX3BsdWdpbnMuZ2V0KHBsdWdpbnNbaV0p
OwotICAgICAgICBpZiAodGhpc1N0YXJ0VGltZSA+IHBsdWdpbkN1dE9mZlRpbWUpIHsKLSAgICAg
ICAgICAgIC8vIFRoaXMgcGx1Zy1pbiBpcyB0b28geW91bmcgdG8gYmUgaGFsdGVkLiBXZSBmaW5k
IHRoZSBvbGRlc3QKLSAgICAgICAgICAgIC8vIHBsdWctaW4gdGhhdCBpcyBub3Qgb2xkIGVub3Vn
aCB0byBiZSBoYWx0ZWQgYW5kIHVzZSBpdCB0byBzZXQKLSAgICAgICAgICAgIC8vIHRoZSB0aW1l
cidzIG5leHQgZmlyZSB0aW1lLgotICAgICAgICAgICAgaWYgKHRoaXNTdGFydFRpbWUgPCBtX29s
ZGVzdFN0YXJ0VGltZSkKLSAgICAgICAgICAgICAgICBtX29sZGVzdFN0YXJ0VGltZSA9IHRoaXNT
dGFydFRpbWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChtX2NsaWVudC0+c2hvdWxkSGFsdFBsdWdpbihwbHVnaW5zW2ldLT5ub2RlKCksIHBsdWdpbnNb
aV0tPmlzV2luZG93ZWQoKSwgcGx1Z2luc1tpXS0+cGx1Z2luTmFtZSgpKSkKLSAgICAgICAgICAg
IHBsdWdpbnNbaV0tPmhhbHQoKTsKLQotICAgICAgICBtX3BsdWdpbnMucmVtb3ZlKHBsdWdpbnNb
aV0pOwotICAgIH0KLQotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIFBs
dWdpbkhhbHRlcjo6c3RhcnRUaW1lcklmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAobV90aW1lci5p
c0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wbHVnaW5zLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwgPSBzdGF0
aWNfY2FzdDxkb3VibGU+KG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUpIC0gKGN1cnJlbnRUaW1lKCkg
LSBtX29sZGVzdFN0YXJ0VGltZSk7Ci0gICAgbV90aW1lci5zdGFydE9uZVNob3QobmV4dEZpcmVJ
bnRlcnZhbCA8IDAgPyAwIDogbmV4dEZpcmVJbnRlcnZhbCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuaAkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2lmbmRlZiBQbHVnaW5IYWx0ZXJfaAotI2RlZmluZSBQbHVnaW5IYWx0ZXJfaAot
Ci0jaW5jbHVkZSAiUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBIYWx0YWJsZVBsdWdpbjsKLQotY2xhc3MgUGx1Z2luSGFs
dGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5IYWx0ZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQbHVnaW5IYWx0ZXIoUGFzc093blB0cjxQbHVn
aW5IYWx0ZXJDbGllbnQ+KTsKLQotICAgIHZvaWQgZGlkU3RhcnRQbHVnaW4oSGFsdGFibGVQbHVn
aW4qKTsKLSAgICB2b2lkIGRpZFN0b3BQbHVnaW4oSGFsdGFibGVQbHVnaW4qKTsKLQotICAgIHZv
aWQgc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUodW5zaWduZWQgcnVuVGltZSkgeyBtX3BsdWdpbkFs
bG93ZWRSdW5UaW1lID0gcnVuVGltZTsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgdGltZXJGaXJl
ZChUaW1lcjxQbHVnaW5IYWx0ZXI+Kik7Ci0gICAgdm9pZCBzdGFydFRpbWVySWZOZWNlc3Nhcnko
KTsKLQotICAgIE93blB0cjxQbHVnaW5IYWx0ZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFRpbWVy
PFBsdWdpbkhhbHRlcj4gbV90aW1lcjsKLSAgICB1bnNpZ25lZCBtX3BsdWdpbkFsbG93ZWRSdW5U
aW1lOwotICAgIGRvdWJsZSBtX29sZGVzdFN0YXJ0VGltZTsKLSAgICBIYXNoTWFwPEhhbHRhYmxl
UGx1Z2luKiwgZG91YmxlPiBtX3BsdWdpbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQbHVnaW5IYWx0ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnaW5IYWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bs
dWdpbkhhbHRlckNsaWVudC5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBs
dWdpbkhhbHRlckNsaWVudF9oCi0jZGVmaW5lIFBsdWdpbkhhbHRlckNsaWVudF9oCi0KLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vZGU7
Ci0KLWNsYXNzIFBsdWdpbkhhbHRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UGx1
Z2luSGFsdGVyQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGFsdFBsdWdp
bihOb2RlKiwgYm9vbCBpc1dpbmRvd2VkLCBjb25zdCBTdHJpbmcmIHBsdWdpbk5hbWUpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBsdWdpbkhhbHRlckNsaWVudF9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw2IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
ICAgICAsIG1fc2Vzc2lvblN0b3JhZ2VRdW90YShTdG9yYWdlTWFwOjpub1F1b3RhKQogI2VuZGlm
Ci0gICAgLCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgLCBtX2VkaXRpbmdCZWhhdmlvclR5cGUoZWRpdGluZ0JlaGF2aW9yVHlwZUZv
clBsYXRmb3JtKCkpCiAgICAgLCBtX21heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoKGRlZmF1
bHRNYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aCkKICAgICAsIG1faXNTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoZmFsc2UpCkBAIC03NDgsMTIgKzc0Nyw2IEBAIHZvaWQgU2V0dGluZ3M6OnNl
dEV4cGVyaW1lbnRhbE5vdGlmaWNhdGkKICAgICBtX2V4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNF
bmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0UGx1Z2luQWxsb3dlZFJ1
blRpbWUodW5zaWduZWQgcnVuVGltZSkKLXsKLSAgICBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lID0g
cnVuVGltZTsKLSAgICBtX3BhZ2UtPnBsdWdpbkFsbG93ZWRSdW5UaW1lQ2hhbmdlZCgpOwotfQot
CiAjaWYgUExBVEZPUk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExBVEZPUk0oV1gpKQogdm9p
ZCBTZXR0aW5nczo6c2V0U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoYm9vbCBzaG91bGRV
c2VIaWdoUmVzb2x1dGlvblRpbWVycykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJl
dmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDQsOSArMzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBz
dGF0aWMgYm9vbCBzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycygpIHsgcmV0dXJuIGdTaG91
bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVyczsgfQogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBzZXRQ
bHVnaW5BbGxvd2VkUnVuVGltZSh1bnNpZ25lZCk7Ci0gICAgICAgIHVuc2lnbmVkIHBsdWdpbkFs
bG93ZWRSdW5UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5BbGxvd2VkUnVuVGltZTsgfQot
CiAgICAgICAgIHZvaWQgc2V0V2ViQXVkaW9FbmFibGVkKGJvb2wpOwogICAgICAgICBib29sIHdl
YkF1ZGlvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQXVkaW9FbmFibGVkOyB9CiAKQEAg
LTQ3OCw3ICs0NzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQogICAgICAgICB1bnNpZ25lZCBtX3Nlc3Npb25TdG9yYWdlUXVvdGE7CiAjZW5kaWYKLSAg
ICAgICAgdW5zaWduZWQgbV9wbHVnaW5BbGxvd2VkUnVuVGltZTsKICAgICAgICAgdW5zaWduZWQg
bV9lZGl0aW5nQmVoYXZpb3JUeXBlOwogICAgICAgICB1bnNpZ25lZCBtX21heGltdW1IVE1MUGFy
c2VyRE9NVHJlZURlcHRoOwogICAgICAgICBib29sIG1faXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQgOiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lv
biA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3MSw5ICsyNzEsNiBAQCBib29sIFBsdWdpblZpZXc6OnN0YXJ0KCkKICAg
ICBpZiAobV9zdGF0dXMgIT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocGFyZW50RnJhbWUoKS0+cGFnZSgpKQotICAgICAg
ICBwYXJlbnRGcmFtZSgpLT5wYWdlKCktPmRpZFN0YXJ0UGx1Z2luKHRoaXMpOwotCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTMxOCw5ICszMTUsNiBAQCB2b2lkIFBsdWdpblZpZXc6OnN0b3Ao
KQogICAgIGlmICghbV9pc1N0YXJ0ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChwYXJl
bnRGcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgIHBhcmVudEZyYW1lKCktPnBhZ2UoKS0+ZGlkU3Rv
cFBsdWdpbih0aGlzKTsKLQogICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c3RvcCgpOiBT
dG9wcGluZyBwbHVnLWluICclcyciLCBtX3BsdWdpbi0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPiA+IHN0cmVhbXMgPSBtX3N0cmVhbXM7
CkBAIC04ODAsOCArODc0LDYgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50
RnJhbQogICAgICwgbV9sb2FkTWFudWFsbHkobG9hZE1hbnVhbGx5KQogICAgICwgbV9tYW51YWxT
dHJlYW0oMCkKICAgICAsIG1faXNKYXZhU2NyaXB0UGF1c2VkKGZhbHNlKQotICAgICwgbV9pc0hh
bHRlZChmYWxzZSkKLSAgICAsIG1faGFzQmVlbkhhbHRlZChmYWxzZSkKICAgICAsIG1faGF2ZUNh
bGxlZFNldFdpbmRvdyhmYWxzZSkKIHsKICAgICBpZiAoIW1fcGx1Z2luKSB7CkBAIC0xMjkwLDE2
ICsxMjgyLDYgQEAgY29uc3QgY2hhciogUGx1Z2luVmlldzo6dXNlckFnZW50U3RhdGljKAogI2Vu
ZGlmCiAKIAotTm9kZSogUGx1Z2luVmlldzo6bm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZWxlbWVudDsKLX0KLQotU3RyaW5nIFBsdWdpblZpZXc6OnBsdWdpbk5hbWUoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3BsdWdpbi0+bmFtZSgpOwotfQotCiB2b2lkIFBsdWdpblZpZXc6OmxpZmVT
dXBwb3J0VGltZXJGaXJlZChUaW1lcjxQbHVnaW5WaWV3PiopCiB7CiAgICAgZGVyZWYoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw2IEBACiAjZGVmaW5lIFBsdWdpblZpZXdfaAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVx
dWVzdC5oIgotI2luY2x1ZGUgIkhhbHRhYmxlUGx1Z2luLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlBsdWdpblZp
ZXdCYXNlLmgiCkBAIC0xNDEsNyArMTQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgICAgICAgICAgLCBwcml2YXRlIFBsdWdpblN0cmVhbUNsaWVudAogI2VuZGlmCiAgICAg
ICAgICAgICAgICAgICAgICAsIHB1YmxpYyBQbHVnaW5NYW51YWxMb2FkZXIKLSAgICAgICAgICAg
ICAgICAgICAgICwgcHJpdmF0ZSBIYWx0YWJsZVBsdWdpbgogICAgICAgICAgICAgICAgICAgICAg
LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5WaWV3PiBjcmVhdGUoRnJhbWUqIHBhcmVudEZyYW1lLCBj
b25zdCBJbnRTaXplJiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CkBAIC0yNDQsMTYgKzI0Miw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAg
ICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICAgICAgLy8g
SGFsdGFibGVQbHVnaW4KLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbHQoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHJlc3RhcnQoKTsKLSAgICAgICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc1dp
bmRvd2VkOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdpbk5hbWUoKSBjb25zdDsKLQot
ICAgICAgICBib29sIGlzSGFsdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0hhbHRlZDsgfQotICAg
ICAgICBib29sIGhhc0JlZW5IYWx0ZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0JlZW5IYWx0ZWQ7
IH0KLQogICAgICAgICBzdGF0aWMgYm9vbCBpc0NhbGxpbmdQbHVnaW4oKTsKIAogICAgICAgICBi
b29sIHN0YXJ0KCk7CkBAIC00NjEsOSArNDQ5LDYgQEAgcHJpdmF0ZToKIAogICAgICAgICBib29s
IG1faXNKYXZhU2NyaXB0UGF1c2VkOwogCi0gICAgICAgIGJvb2wgbV9pc0hhbHRlZDsKLSAgICAg
ICAgYm9vbCBtX2hhc0JlZW5IYWx0ZWQ7Ci0KICAgICAgICAgYm9vbCBtX2hhdmVDYWxsZWRTZXRX
aW5kb3c7CiAKICAgICAgICAgc3RhdGljIFBsdWdpblZpZXcqIHNfY3VycmVudFBsdWdpblZpZXc7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcAkocmV2aXNp
b24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIwLDE0ICsxMjAsNiBAQCB2b2lkIFBsdWdpblZpZXc6OnVwZGF0
ZVBsdWdpbldpZGdldCgpCiB7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6aGFsdCgpCi17Ci19Ci0K
LXZvaWQgUGx1Z2luVmlldzo6cmVzdGFydCgpCi17Ci19Ci0KICNpZiBkZWZpbmVkKFhQX1VOSVgp
ICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVG
b2N1c0luRXZlbnQoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2lu
Vmlld0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1
Z2luVmlld0d0ay5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ndGsvUGx1Z2luVmlld0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1MiwxMiArOTUyLDQg
QEAgdm9pZCBQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogI2VuZGlmCiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6aGFsdCgpCi17Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6cmVzdGFydCgpCi17
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvcXQvUGx1Z2luVmlld1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL3F0L1BsdWdpblZpZXdRdC5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQwLDE0
ICsxMDQwLDYgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogICAgICAgICBY
RnJlZUNvbG9ybWFwKFFYMTFJbmZvOjpkaXNwbGF5KCksIG1fY29sb3JtYXApOwogfQogCi12b2lk
IFBsdWdpblZpZXc6OmhhbHQoKQotewotfQotCi12b2lkIFBsdWdpblZpZXc6OnJlc3RhcnQoKQot
ewotfQotIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIq
IFBsdWdpblZpZXc6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysg
U291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNjYsMzQgKzEwNjYsNCBAQCBQYXNzUmVmUHRyPEltYWdlPiBQbHVnaW5WaWV3Ojpz
bmFwc2hvdCgpCiAjZW5kaWYKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpoYWx0KCkKLXsKLSAgICBB
U1NFUlQoIW1faXNIYWx0ZWQpOwotICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7Ci0KLSNpZiAhUExB
VEZPUk0oUVQpCi0gICAgLy8gU2hvdyBhIHNjcmVlbnNob3Qgb2YgdGhlIHBsdWctaW4uCi0gICAg
dG9SZW5kZXJXaWRnZXQobV9lbGVtZW50LT5yZW5kZXJlcigpKS0+c2hvd1N1YnN0aXR1dGVJbWFn
ZShzbmFwc2hvdCgpKTsKLSNlbmRpZgotCi0gICAgbV9pc0hhbHRlZCA9IHRydWU7Ci0gICAgbV9o
YXNCZWVuSGFsdGVkID0gdHJ1ZTsKLQotICAgIHN0b3AoKTsKLSAgICBwbGF0Zm9ybURlc3Ryb3ko
KTsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpyZXN0YXJ0KCkKLXsKLSAgICBBU1NFUlQoIW1faXNT
dGFydGVkKTsKLSAgICBBU1NFUlQobV9pc0hhbHRlZCk7Ci0KLSAgICAvLyBDbGVhciBhbnkgc3Vi
c3RpdHV0ZSBpbWFnZS4KLSAgICB0b1JlbmRlcldpZGdldChtX2VsZW1lbnQtPnJlbmRlcmVyKCkp
LT5zaG93U3Vic3RpdHV0ZUltYWdlKDApOwotCi0gICAgbV9pc0hhbHRlZCA9IGZhbHNlOwotICAg
IG1faGF2ZVVwZGF0ZWRQbHVnaW5XaWRnZXQgPSBmYWxzZTsKLSAgICBzdGFydCgpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDEyICsyMTYsNiBAQCB2
b2lkIFJlbmRlcldpZGdldDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVECiAgICAgfQogfQogCi12b2lk
IFJlbmRlcldpZGdldDo6c2hvd1N1YnN0aXR1dGVJbWFnZShQYXNzUmVmUHRyPEltYWdlPiBwcnBJ
bWFnZSkKLXsKLSAgICBtX3N1YnN0aXR1dGVJbWFnZSA9IHBycEltYWdlOwotICAgIHJlcGFpbnQo
KTsKLX0KLQogdm9pZCBSZW5kZXJXaWRnZXQ6Om5vdGlmeVdpZGdldChXaWRnZXROb3RpZmljYXRp
b24gbm90aWZpY2F0aW9uKQogewogICAgIGlmIChtX3dpZGdldCkKQEAgLTI2OCwyNSArMjYyLDIx
IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW4KICAgICBpZiAobV93
aWRnZXQpIHsKICAgICAgICAgLy8gVGVsbCB0aGUgd2lkZ2V0IHRvIHBhaW50IG5vdy4gIFRoaXMg
aXMgdGhlIG9ubHkgdGltZSB0aGUgd2lkZ2V0IGlzIGFsbG93ZWQKICAgICAgICAgLy8gdG8gcGFp
bnQgaXRzZWxmLiAgVGhhdCB3YXkgaXQgd2lsbCBjb21wb3NpdGUgcHJvcGVybHkgd2l0aCB6LWlu
ZGV4ZWQgbGF5ZXJzLgotICAgICAgICBpZiAobV9zdWJzdGl0dXRlSW1hZ2UpCi0gICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKG1fc3Vic3RpdHV0ZUltYWdlLmdldCgpLCBz
dHlsZSgpLT5jb2xvclNwYWNlKCksIG1fd2lkZ2V0LT5mcmFtZVJlY3QoKSk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgTGF5b3V0UG9pbnQgd2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdldC0+
ZnJhbWVSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgICAgIExheW91dFBvaW50IHBhaW50TG9j
YXRpb24oYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
KTsKLSAgICAgICAgICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7Ci0K
LSAgICAgICAgICAgIExheW91dFNpemUgd2lkZ2V0UGFpbnRPZmZzZXQgPSBwYWludExvY2F0aW9u
IC0gd2lkZ2V0TG9jYXRpb247Ci0gICAgICAgICAgICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMg
aW50byBjb21wb3NpdGluZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVu
Y2xvc2luZyBjb21wb3NpdGluZyBsYXllciwKLSAgICAgICAgICAgIC8vIG5vdCB0aGUgcm9vdC4g
SW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFuZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBi
ZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWluIGRyYXdpbmcuCi0gICAgICAgICAgICBpZiAo
IXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKSB7Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnRyYW5zbGF0ZSh3aWRnZXRQYWludE9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
cGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0KTsKLQot
ICAgICAgICAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKLSAgICAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7Cisg
ICAgICAgIExheW91dFBvaW50IHdpZGdldExvY2F0aW9uID0gbV93aWRnZXQtPmZyYW1lUmVjdCgp
LmxvY2F0aW9uKCk7CisgICAgICAgIExheW91dFBvaW50IHBhaW50TG9jYXRpb24oYWRqdXN0ZWRQ
YWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKKyAgICAgICAgTGF5
b3V0UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKKworICAgICAgICBMYXlvdXRTaXpl
IHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlvbiAtIHdpZGdldExvY2F0aW9uOworICAg
ICAgICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMgaW50byBjb21wb3NpdGluZyBsYXllcnMsIHR4
IGFuZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZyBjb21wb3NpdGluZyBsYXllciwK
KyAgICAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5k
IGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3QtcmVsYXRpdmUgdG8gZml4IHBsdWctaW4g
ZHJhd2luZy4KKyAgICAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkgeworICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh3aWRnZXRQYWludE9mZnNldCk7
CisgICAgICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAg
ICB9CisgICAgICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0
KTsKKworICAgICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQorICAgICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogCiAg
ICAgICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICAgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihtX3dpZGdldC5nZXQoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCShyZXZpc2lvbiA5
MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsOCArNDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWRnZXRQb3NpdGlv
bnNVcGRhdGVkKCk7CiAgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0OwogCi0gICAg
dm9pZCBzaG93U3Vic3RpdHV0ZUltYWdlKFBhc3NSZWZQdHI8SW1hZ2U+KTsKLQogICAgIHZvaWQg
bm90aWZ5V2lkZ2V0KFdpZGdldE5vdGlmaWNhdGlvbik7CiAgICAgCiAgICAgc3RhdGljIHZvaWQg
c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKQEAgLTc0LDcgKzcyLDYgQEAgcHJpdmF0
ZToKICAgICBib29sIHNldFdpZGdldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRT
aXplJik7CiAKICAgICBSZWZQdHI8V2lkZ2V0PiBtX3dpZGdldDsKLSAgICBSZWZQdHI8SW1hZ2U+
IG1fc3Vic3RpdHV0ZUltYWdlOwogICAgIEZyYW1lVmlldyogbV9mcmFtZVZpZXc7CiAgICAgSW50
UmVjdCBtX2NsaXBSZWN0OyAvLyBUaGUgcmVjdGFuZ2xlIG5lZWRzIHRvIHJlbWFpbiBjb3JyZWN0
IGFmdGVyIHNjcm9sbGluZywgc28gaXQgaXMgc3RvcmVkIGluIGNvbnRlbnQgdmlldyBjb29yZGlu
YXRlcywgYW5kIG5vdCBjbGlwcGVkIHRvIHdpbmRvdy4KICAgICBpbnQgbV9yZWZDb3VudDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBkZWxl
dGVkIGZpbGVzIGZyb20gWGNvZGUgcHJvamVjdC4KKworICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDExLTA3LTI4ICBUb255IENoYW5nICA8dG9ueUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHNxbCB0byBzdm46aWdub3JlIGFuZCByZW1vdmUgYXBw
LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDYgQEAKIAkJMDY1QUQ1
QTQwQjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY1QUQ1QTIwQjBDMzJDNzAwNUEy
QjFEIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50Lm1tICovOyB9OwogCQkwNjY5M0REQzBCRkJBODUy
MDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjY5M0REQTBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5z
cGVjdG9yQ2xpZW50LmggKi87IH07CiAJCTA2NjkzREREMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJ
bnNwZWN0b3JDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNjY5M0REQjBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
ICovOyB9OwotCQkwQTJEODdGRDEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTJE
ODdGQjEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmggKi87IH07Ci0J
CTBBMkQ4N0ZFMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTJEODdGQzEwN0FG
NTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tICovOyB9OwogCQkwQUI3NTIz
NzBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUI3NTIz
NTBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZv
LmggKi87IH07CiAJCTBBQjc1MjM4MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRh
aW5lckNoZWNrQ29udGV4dEluZm8ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQUI3NTIzNjBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250
YWluZXJDaGVja0NvbnRleHRJbmZvLm1tICovOyB9OwogCQkwQUNFOTE3MzEwRkU0N0UzMDA5NkE0
NUYgLyogT3BlbkdMLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBBQ0U5MTcyMTBGRTQ3RTMwMDk2QTQ1RiAvKiBPcGVuR0wuZnJhbWV3
b3JrICovOyB9OwpAQCAtMzg5LDggKzM4Nyw2IEBACiAJCTA2NUFENUEyMEIwQzMyQzcwMDVBMkIx
RCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDY2OTNEREEwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2NjkzRERCMEJGQkE4NTIwMDIxNjA3
MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJJbnNwZWN0b3JDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTBBMkQ4N0ZCMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z2luSGFsdGVyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBBMkQ4N0ZDMTA3QUY1MkIwMENEREVF
MyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBBQjc1MjM1MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRh
aW5lckNoZWNrQ29udGV4dEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRh
aW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQ0U5MTcyMTBGRTQ3RTMwMDk2QTQ1RiAvKiBPcGVuR0wu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBPcGVuR0wuZnJhbWV3b3JrOyBwYXRoID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKQEAgLTEzMjIsOCArMTMxOCw2IEBACiAJCQkJODQ3MjNCRTQwNTZENzE5
RTAwNDRCRkVBIC8qIFdlYktleUdlbmVyYXRvci5tbSAqLywKIAkJCQkxQUE4NzlCNDExQ0JFOUJG
MDAzQzY2NEYgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggKi8sCiAJCQkJMUFBODc5QjUxMUNC
RTlCRjAwM0M2NjRGIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSAqLywKLQkJCQkwQTJEODdG
QjEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmggKi8sCi0JCQkJMEEy
RDg3RkMxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbSAqLywKIAkJ
CQlBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gKi8sCiAJ
CQkJQTVERUZDMDgxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCAqLywKIAkJCQlBNURFRkMwOTExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW5Q
cml2YXRlLmggKi8sCkBAIC0xNTc1LDcgKzE1NjksNiBAQAogCQkJCTkzOTgxMEIwMDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5Mzk4MTAzNzA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM5ODEwMzgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkRhdGFi
YXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwQTJEODdGRDEwN0FGNTJCMDBDRERFRTMgLyogV2Vi
UGx1Z2luSGFsdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAzOTA4MjRCRjAx
MDA4REYwMzggLyogV2ViUGx1Z2luUGFja2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjI1Rjg4
MTUwOUY5N0U4QTAwNDIzQTQwIC8qIFdlYlBsdWdpblByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNzdCMDJFMEVFNzczMDUwMEM4QTFGOSAvKiBXZWJQbHVnaW5SZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTE5NjcsNyArMTk2MCw2IEBACiAJCQkJOTM5ODExMjYwODI0QkYwMTAwOERG
MDM4IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5
ODEwREEwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5Mzk4MTBEQjA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luRGF0YWJhc2Uu
bW0gaW4gU291cmNlcyAqLywKLQkJCQkwQTJEODdGRTEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1
Z2luSGFsdGVyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwREMwODI0QkYwMTAw
OERGMDM4IC8qIFdlYlBsdWdpblBhY2thZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTc3QjAy
RjBFRTc3MzA1MDBDOEExRjkgLyogV2ViUGx1Z2luUmVxdWVzdC5tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjI0MTAwRjkwOTE4MTkwMTAwRDJEMjY2IC8qIFdlYlBsdWdpbnNQcml2YXRlLm0gaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIw
MTEtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgUGx1Z2luSGFsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2Vz
LgorCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAg
ICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IGluaXRXaXRoRnJhbWU6cGx1Z2luUGFja2FnZTpVUkw6
YmFzZVVSTDpNSU1FVHlwZTphdHRyaWJ1dGVLZXlzOmF0dHJpYnV0ZVZhbHVlczpsb2FkTWFudWFs
bHk6ZWxlbWVudDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
VmlldyBzdGFydF0pOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IHN0b3Bd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQubW06
IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVm
ZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1By
aXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6dXNlc0RvY3Vt
ZW50Vmlld3M6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTEtMDgtMDQgIE1hcmsg
Um93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBGdXR1cmUtcHJvb2YgWGNvZGUgY29u
ZmlndXJhdGlvbiBzZXR0aW5ncy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCShyZXZpc2lvbiA5MjQ4MikKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIH0KIAotY2xhc3MgV2ViSGFsdGFibGVQbHVnaW47Ci0K
IC8vIEFsc28gZGVjbGFyZWQgaW4gV2ViQ29yZS9XaWRnZXRNYWMubW0KIEBpbnRlcmZhY2UgTlNW
aWV3IChXaWRnZXQpCiAtICh2b2lkKXZpc2libGVSZWN0RGlkQ2hhbmdlOwpAQCAtNjgsOCArNjYs
NiBAQCBAaW50ZXJmYWNlIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgOiBOCiAgICAgQk9PTCBf
aGFzRm9jdXM7CiAgICAgQk9PTCBfaXNDb21wbGV0ZWx5T2JzY3VyZWQ7CiAgICAgQk9PTCBfaXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkOwotICAgIEJPT0wgX2lzSGFsdGVkOwotICAgIEJPT0wgX2hh
c0JlZW5IYWx0ZWQ7CiAgICAgQk9PTCBfc25hcHNob3R0aW5nOwogICAgIAogICAgIFJlZlB0cjxX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudD4gX2VsZW1lbnQ7CkBAIC03OCw4ICs3NCw2IEBAIEBp
bnRlcmZhY2UgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyA6IE4KICAgICBSZXRhaW5QdHI8TlNV
Ukw+IF9zb3VyY2VVUkw7CiAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9jYWNoZWRTbmFwc2hvdDsK
ICAgICAKLSAgICBPd25QdHI8V2ViSGFsdGFibGVQbHVnaW4+IF9oYWx0YWJsZTsKLSAgICAKICAg
ICBOU1RyYWNraW5nUmVjdFRhZyBfdHJhY2tpbmdUYWc7CiB9CiAKQEAgLTEyMiwxMSArMTE2LDYg
QEAgQGludGVyZmFjZSBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IDogTgogLSAodm9pZClzdGFy
dDsKIC0gKHZvaWQpc3RvcDsKIAotLSAodm9pZCloYWx0OwotLSAodm9pZClyZXN1bWVGcm9tSGFs
dDsKLS0gKEJPT0wpaXNIYWx0ZWQ7Ci0tIChCT09MKWhhc0JlZW5IYWx0ZWQ7Ci0KIC0gKHZvaWQp
YWRkV2luZG93T2JzZXJ2ZXJzOwogLSAodm9pZClyZW1vdmVXaW5kb3dPYnNlcnZlcnM7CiAtIChC
T09MKXNob3VsZENsaXBPdXRQbHVnaW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiA5MjQ4
MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MUGx1Z0luRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IYWx0YWJsZVBsdWdpbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25T
cGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC03MSw0OCArNzAsNiBA
QCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgQ2xlYXJTdWJzdGl0CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1jbGFzcyBXZWJIYWx0YWJsZVBsdWdpbiA6IHB1YmxpYyBIYWx0YWJs
ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgV2ViSGFsdGFibGVQbHVnaW4oV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldyogdmlldykKLSAgICAgICAgOiBtX3ZpZXcodmlldykKLSAgICB7Ci0gICAgfQot
ICAgIAotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaGFsdCgpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXN0YXJ0KCk7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGlzV2luZG93ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBwbHVnaW5OYW1l
KCkgY29uc3Q7Ci0KLSAgICBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3KiBtX3ZpZXc7Ci19Owot
Ci12b2lkIFdlYkhhbHRhYmxlUGx1Z2luOjpoYWx0KCkKLXsKLSAgICBbbV92aWV3IGhhbHRdOwot
fQotCi12b2lkIFdlYkhhbHRhYmxlUGx1Z2luOjpyZXN0YXJ0KCkKLXsgCi0gICAgW21fdmlldyBy
ZXN1bWVGcm9tSGFsdF07Ci19Ci0gICAgCi1Ob2RlKiBXZWJIYWx0YWJsZVBsdWdpbjo6bm9kZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3ZpZXcgZWxlbWVudF07Ci19Ci0KLWJvb2wgV2ViSGFs
dGFibGVQbHVnaW46OmlzV2luZG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotU3RyaW5nIFdlYkhhbHRhYmxlUGx1Z2luOjpwbHVnaW5OYW1lKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gW1ttX3ZpZXcgcGx1Z2luUGFja2FnZV0gcGx1Z2luSW5mb10ubmFtZTsKLX0KLQogQGlt
cGxlbWVudGF0aW9uIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcKIAogKyAodm9pZClpbml0aWFs
aXplCkBAIC0xNjMsNyArMTIwLDYgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1l
CiAgICAgICAgIF9tb2RlID0gTlBfRU1CRUQ7CiAgICAgCiAgICAgX2xvYWRNYW51YWxseSA9IGxv
YWRNYW51YWxseTsKLSAgICBfaGFsdGFibGUgPSBhZG9wdFB0cihuZXcgV2ViSGFsdGFibGVQbHVn
aW4oc2VsZikpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC00NTQsNyArNDEwLDYgQEAgLSAo
dm9pZClzdGFydAogICAgIH0KICAgICAKICAgICBfaXNTdGFydGVkID0gWUVTOwotICAgIHBhZ2Ut
PmRpZFN0YXJ0UGx1Z2luKF9oYWx0YWJsZS5nZXQoKSk7CiAKICAgICBbW3NlbGYgd2ViVmlld10g
YWRkUGx1Z2luSW5zdGFuY2VWaWV3OnNlbGZdOwogCkBAIC00ODQsMTEgKzQzOSw2IEBAIC0gKHZv
aWQpc3RvcAogICAgIGlmICghX2lzU3RhcnRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgd2ViRnJhbWVdKSkgewotICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5kaWRTdG9wUGx1Z2lu
KF9oYWx0YWJsZS5nZXQoKSk7Ci0gICAgfQotICAgIAogICAgIF9pc1N0YXJ0ZWQgPSBOTzsKICAg
ICAKICAgICBbW3NlbGYgd2ViVmlld10gcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3OnNlbGZdOwpA
QCAtNTAyLDYxICs0NTIsNiBAQCAtICh2b2lkKXN0b3AKICAgICBbc2VsZiBkZXN0cm95UGx1Z2lu
XTsKIH0KIAotLSAodm9pZCloYWx0Ci17Ci0gICAgQVNTRVJUKCFfaXNIYWx0ZWQpOwotICAgIEFT
U0VSVChfaXNTdGFydGVkKTsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW3NlbGYgZWxlbWVudF07
Ci0jaWZuZGVmIEJVSUxESU5HX09OX0xFT1BBUkQKLSAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBD
R0ltYWdlUmV0YWluKFtjb3JlKFtzZWxmIHdlYkZyYW1lXSktPm5vZGVJbWFnZShlbGVtZW50KS5n
ZXQoKSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKTsK
LSNlbHNlCi0gICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IGltYWdlUmVmKEFkb3B0Q0Ys
IENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgoQ0ZEYXRhUmVmKVtjb3JlKFtzZWxmIHdlYkZy
YW1lXSktPm5vZGVJbWFnZShlbGVtZW50KS5nZXQoKSBUSUZGUmVwcmVzZW50YXRpb25dLCAwKSk7
Ci0gICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRl
eChpbWFnZVJlZi5nZXQoKSwgMCwgMCk7Ci0jZW5kaWYKLSAgICBBU1NFUlQoY2dJbWFnZSk7Ci0g
ICAgCi0gICAgLy8gQml0bWFwSW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQgaW4gQ0dJbWFn
ZSBvbiBkZXN0cnVjdGlvbi4KLSAgICBSZWZQdHI8SW1hZ2U+IG5vZGVJbWFnZSA9IEJpdG1hcElt
YWdlOjpjcmVhdGUoY2dJbWFnZSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQtPnJlbmRlcmVyKCkpOwot
ICAgIHRvUmVuZGVyV2lkZ2V0KGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5zaG93U3Vic3RpdHV0ZUlt
YWdlKG5vZGVJbWFnZSk7Ci0gICAgW3NlbGYgc3RvcF07Ci0gICAgX2lzSGFsdGVkID0gWUVTOyAg
Ci0gICAgX2hhc0JlZW5IYWx0ZWQgPSBZRVM7Ci19Ci0KLS0gKHZvaWQpX2NsZWFyU3Vic3RpdHV0
ZUltYWdlCi17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFtzZWxmIGVsZW1lbnRdOwotICAgIGlm
ICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICB0b1JlbmRlcldpZGdldChyZW5kZXJlciktPnNob3dTdWJzdGl0
dXRlSW1hZ2UoMCk7Ci19Ci0KLS0gKHZvaWQpcmVzdW1lRnJvbUhhbHQKLXsKLSAgICBBU1NFUlQo
X2lzSGFsdGVkKTsKLSAgICBBU1NFUlQoIV9pc1N0YXJ0ZWQpOwotICAgIFtzZWxmIHN0YXJ0XTsK
LSAgICAKLSAgICBpZiAoX2lzU3RhcnRlZCkKLSAgICAgICAgX2lzSGFsdGVkID0gTk87Ci0gICAg
Ci0gICAgQVNTRVJUKFtzZWxmIGVsZW1lbnRdLT5yZW5kZXJlcigpKTsKLSAgICAvLyBGSVhNRSA3
NDE3NDg0OiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgcGx1Zy1pbnMgbm90IGRyYXdpbmcgaW1t
ZWRpYXRlbHkuIFdlJ2QgbGlrZSB0byBkZXRlY3Qgd2hlbiB0aGUKLSAgICAvLyBwbHVnLWluIGFj
dHVhbGx5IGRyYXdzIGluc3RlYWQgb2YganVzdCBhc3N1bWluZyBpdCB3aWxsIGRvIHNvIHdpdGhp
biAwLjUgc2Vjb25kcyBvZiBiZWluZyByZXN0YXJ0ZWQuCi0gICAgW3NlbGYgcGVyZm9ybVNlbGVj
dG9yOkBzZWxlY3RvcihfY2xlYXJTdWJzdGl0dXRlSW1hZ2UpIHdpdGhPYmplY3Q6bmlsIGFmdGVy
RGVsYXk6Q2xlYXJTdWJzdGl0dXRlSW1hZ2VEZWxheV07Ci19Ci0KLS0gKEJPT0wpaXNIYWx0ZWQK
LXsKLSAgICByZXR1cm4gX2lzSGFsdGVkOwotfQotCiAtIChCT09MKXNob3VsZENsaXBPdXRQbHVn
aW4KIHsKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKQEAgLTU5NiwxMSAr
NDkxLDYgQEAgLSAodm9pZCljbGVhckNhY2hlZFNuYXBzaG90CiAgICAgX2NhY2hlZFNuYXBzaG90
LmNsZWFyKCk7CiB9CiAKLS0gKEJPT0wpaGFzQmVlbkhhbHRlZAotewotICAgIHJldHVybiBfaGFz
QmVlbkhhbHRlZDsKLX0KLQogLSAodm9pZCl2aWV3V2lsbE1vdmVUb1dpbmRvdzooTlNXaW5kb3cg
KiluZXdXaW5kb3cKIHsKICAgICAvLyBXZSBtdXN0IHJlbW92ZSB0aGUgdHJhY2tpbmcgcmVjdCBi
ZWZvcmUgd2UgbW92ZSB0byB0aGUgbmV3IHdpbmRvdy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oCShy
ZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkhhbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29y
ZS9QbHVnaW5IYWx0ZXJDbGllbnQuaD4KLSNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBOb2RlOwotfQotCi1AY2xhc3MgV2ViVmlldzsKLQot
Y2xhc3MgV2ViUGx1Z2luSGFsdGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkhhbHRl
ckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KFdlYlZpZXcgKik7
Ci0gICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZEhhbHRQbHVnaW4oV2ViQ29yZTo6Tm9kZSos
IGJvb2wsIGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGVuYWJs
ZWQoKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAgV2ViVmlldyAqbV93ZWJWaWV3OwotfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0JKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2ltcG9ydCAiV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0KLSNpbXBvcnQg
IkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNh
Y2hpbmcuaCIKLSNpbXBvcnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1T
dHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVdlYlBsdWdpbkhhbHRlckNs
aWVudDo6V2ViUGx1Z2luSGFsdGVyQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCi0gICAgOiBtX3dl
YlZpZXcod2ViVmlldykKLXsKLSAgICBBU1NFUlRfQVJHKHdlYlZpZXcsIHdlYlZpZXcpOwotfQot
Ci1ib29sIFdlYlBsdWdpbkhhbHRlckNsaWVudDo6c2hvdWxkSGFsdFBsdWdpbihOb2RlKiBwbHVn
aW5Ob2RlLCBib29sIGlzV2luZG93ZWQsIGNvbnN0IFN0cmluZyYgcGx1Z2luTmFtZSkgY29uc3QK
LXsKLSAgICBBU1NFUlRfQVJHKHBsdWdpbk5vZGUsIHBsdWdpbk5vZGUpOwotICAgIHJldHVybiBD
YWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oTk8sIG1fd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6c2hvdWxkSGFsdFBsdWdpbjppc1dpbmRvd2VkOnBsdWdpbk5hbWU6KSwga2l0KHBsdWdp
bk5vZGUpLCBpc1dpbmRvd2VkLCAoTlNTdHJpbmcgKilwbHVnaW5OYW1lKTsKLX0KLQotYm9vbCBX
ZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OmVuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBbW21f
d2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6
c2hvdWxkSGFsdFBsdWdpbjppc1dpbmRvd2VkOnBsdWdpbk5hbWU6KV07Ci19CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNiBAQAogI2Rl
ZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQXVkaW9F
bmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0
V2ViR0xFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCIKLSNkZWZpbmUg
V2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UGx1Z2luQWxs
b3dlZFJ1blRpbWUiCiAjZGVmaW5lIFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U3Bh
dGlhbE5hdmlnYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFNwYXRpYWxOYXZpZ2F0
aW9uRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkUHJl
ZmVyZW5jZUtleSBAIldlYktpdFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjcsNyArMzY3LDYgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0U2hvd1JlcGFpbnRDb3VudGVy
UHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBX
ZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6Tk9dLCAgIFdlYktpdEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkUHJlZmVyZW5j
ZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDo0XSwgV2ViS2l0
UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFNwYXRp
YWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpOT10sICBXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
LApAQCAtMTMzMywxNiArMTMzMiw2IEBAIC0gKHZvaWQpc2V0QWNjZWxlcmF0ZWQyZENhbnZhc0Vu
YWJsZWQ6KEIKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdEFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKLS0gKHVuc2lnbmVk
KXBsdWdpbkFsbG93ZWRSdW5UaW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9pbnRlZ2VyVmFsdWVG
b3JLZXk6V2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5XTsKLX0KLQotLSAo
dm9pZClzZXRQbHVnaW5BbGxvd2VkUnVuVGltZToodW5zaWduZWQpYWxsb3dlZFJ1blRpbWUKLXsK
LSAgICByZXR1cm4gW3NlbGYgX3NldEludGVnZXJWYWx1ZTphbGxvd2VkUnVuVGltZSBmb3JLZXk6
V2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5XTsKLX0KLQogLSAoQk9PTClp
c0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZv
cktleTpXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleV07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJ
KHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDkgKzEyNiw2IEBAIEBpbnRlcmZh
Y2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAtIChCT09MKWV4cGVyaW1lbnRhbE5vdGlm
aWNhdGlvbnNFbmFibGVkOwogLSAodm9pZClzZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5h
YmxlZDooQk9PTClub3RpZmljYXRpb25zRW5hYmxlZDsKIAotLSAodW5zaWduZWQpcGx1Z2luQWxs
b3dlZFJ1blRpbWU7Ci0tICh2b2lkKXNldFBsdWdpbkFsbG93ZWRSdW5UaW1lOih1bnNpZ25lZClh
bGxvd2VkUnVuVGltZTsKLQogLSAoQk9PTClpc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQ7CiAtICh2
b2lkKXNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQ6KEJPT0wpZmxhZzsKIApJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDYg
QEAKICNpbXBvcnQgIldlYlBhbmVsQXV0aGVudGljYXRpb25IYW5kbGVyLmgiCiAjaW1wb3J0ICJX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIldlYlBsdWdpbkRhdGFiYXNlLmgiCi0j
aW1wb3J0ICJXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCIKICNpbXBvcnQgIldlYlBvbGljeURlbGVn
YXRlLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCIKICNpbXBvcnQgIldl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oIgpAQCAtNzQ0LDcgKzc0Myw2IEBAIC0gKHZvaWQpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQg
PSBuZXcgV2ViRWRpdG9yQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQg
PSBuZXcgV2ViRHJhZ0NsaWVudChzZWxmKTsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGll
bnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwotICAgIHBhZ2VDbGllbnRzLnBsdWdp
bkhhbHRlckNsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQoc2VsZikp
OwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgcGFnZUNsaWVudHMu
Z2VvbG9jYXRpb25DbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoc2VsZik7CiAjZW5k
aWYKQEAgLTE1NjMsNyArMTU2MSw2IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2Vi
UHJlZmVyZW4KICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhb
cHJlZmVyZW5jZXMgY2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZ10pOyAgICAKICAgICBzZXR0
aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhbcHJlZmVyZW5jZXMgc2hvd0RlYnVnQm9yZGVyc10p
OwogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoW3ByZWZlcmVuY2VzIHNob3dS
ZXBhaW50Q291bnRlcl0pOwotICAgIHNldHRpbmdzLT5zZXRQbHVnaW5BbGxvd2VkUnVuVGltZShb
cHJlZmVyZW5jZXMgcGx1Z2luQWxsb3dlZFJ1blRpbWVdKTsKICAgICBzZXR0aW5ncy0+c2V0V2Vi
QXVkaW9FbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJBdWRpb0VuYWJsZWRdKTsKICAgICBzZXR0aW5n
cy0+c2V0V2ViR0xFbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJHTEVuYWJsZWRdKTsKICAgICBzZXR0
aW5ncy0+c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGFjY2VsZXJh
dGVkMmRDYW52YXNFbmFibGVkXSk7CkBAIC0yNTM5LDU5ICsyNTM2LDYgQEAgLSAoQk9PTClfaW5j
bHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheQogICAgIHJldHVybiBfcHJpdmF0ZS0+aW5jbHVk
ZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7CiB9CiAKLSNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXN0YXRpYyBXZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3ICpfcGx1Z2luVmlld0Zvck5vZGUoRE9NTm9kZSAqbm9kZSkKLXsKLSAgICBpZiAoIW5v
ZGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgTm9kZSogY29yZU5vZGUgPSBjb3Jl
KG5vZGUpOwotICAgIGlmICghY29yZU5vZGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmVOb2RlLT5yZW5kZXJlcigpOwotICAgIGlm
ICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53
aWRnZXQoKTsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIE5TVmlldyAqdmlldyA9IHdpZGdldC0+cGxh
dGZvcm1XaWRnZXQoKTsKLSAgICBpZiAoIVt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBy
ZXR1cm4gKFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgKil2aWV3OwotfQotI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotCi0rIChCT09MKV9pc05vZGVIYWx0ZWRQbHVnaW46
KERPTU5vZGUgKilub2RlCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAg
cmV0dXJuIFtfcGx1Z2luVmlld0Zvck5vZGUobm9kZSkgaXNIYWx0ZWRdOwotI2Vsc2UKLSAgICBy
ZXR1cm4gWUVTOwotI2VuZGlmCi19Ci0KLSsgKEJPT0wpX2hhc1BsdWdpbkZvck5vZGVCZWVuSGFs
dGVkOihET01Ob2RlICopbm9kZQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
ICAgIHJldHVybiBbX3BsdWdpblZpZXdGb3JOb2RlKG5vZGUpIGhhc0JlZW5IYWx0ZWRdOwotI2Vs
c2UKLSAgICByZXR1cm4gWUVTOwotI2VuZGlmCi19Ci0rICh2b2lkKV9yZXN0YXJ0SGFsdGVkUGx1
Z2luRm9yTm9kZTooRE9NTm9kZSAqKW5vZGUKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBbX3BsdWdp
blZpZXdGb3JOb2RlKG5vZGUpIHJlc3VtZUZyb21IYWx0XTsKLSNlbmRpZgotfQotCiAtIChOU1Bh
c3RlYm9hcmQgKilfaW5zZXJ0aW9uUGFzdGVib2FyZAogewogICAgIHJldHVybiBfcHJpdmF0ZSA/
IF9wcml2YXRlLT5pbnNlcnRpb25QYXN0ZWJvYXJkIDogbmlsOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwMywxMSArNTAzLDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2
b2lkKV9zZXRJbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0Jp
dG1hcDooQk9PTClmbGFnOwogLSAoQk9PTClfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xh
eWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7CiAKLS8vIFNQSSBmb3IgUGx1Z2luSGFsdGVyCi0rIChC
T09MKV9pc05vZGVIYWx0ZWRQbHVnaW46KERPTU5vZGUgKilub2RlOwotKyAoQk9PTClfaGFzUGx1
Z2luRm9yTm9kZUJlZW5IYWx0ZWQ6KERPTU5vZGUgKilub2RlOwotKyAodm9pZClfcmVzdGFydEhh
bHRlZFBsdWdpbkZvck5vZGU6KERPTU5vZGUgKilub2RlOwotCiAvLyBXaGljaCBwYXN0ZWJvYXJk
IHRleHQgaXMgY29taW5nIGZyb20gaW4gZWRpdGluZyBkZWxlZ2F0ZSBtZXRob2RzIHN1Y2ggYXMg
c2hvdWxkSW5zZXJ0Tm9kZS4KIC0gKE5TUGFzdGVib2FyZCAqKV9pbnNlcnRpb25QYXN0ZWJvYXJk
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQ4NCkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDExLTA4
LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgcGx1Zy1pbiBoYWx0ZXIgYW5kIGFzc29jaWF0ZWQgY2xhc3Nlcy4KKwor
ICAgICAgICAqIEludGVyZmFjZXMvSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsOgorICAg
ICAgICAqIEludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZh
Y2VzL1dlYktpdC5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVy
Q2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5I
YWx0ZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL0ludGVyZmFj
ZXMudmNwcm9qOgorICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvajoKKyAgICAg
ICAgKiBXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNl
cy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5n
cyk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYlZpZXc6OmNsb3NlKToKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJh
bWUpOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYlZpZXc6OnVudXNlZDEpOgorICAgICAgICAoV2ViVmlldzo6dW51c2VkMik6CisgICAg
ICAgIChXZWJWaWV3Ojp1bnVzZWQzKToKKyAgICAgICAgKFdlYlZpZXc6OnVudXNlZDQpOgorICAg
ICAgICAoV2ViVmlldzo6dW51c2VkNSk6CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDExLTA4
LTA0ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyB3aGV0aGVyIEFWRm91bmRhdGlvbiBpcyBlbmFibGVk
IHRvIElXZWJQcmVmZXJlbmNlcwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw4ICsxMzYs
NiBAQAogCiAjZGVmaW5lIFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtl
eSAiV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnMiCiAKLSNkZWZpbmUgV2ViS2l0UGx1Z2lu
QWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5ICJXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZSIK
LQogI2RlZmluZSBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSAiV2Vi
S2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCIKIAogI2RlZmluZSBXZWJLaXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkIgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNp
b24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1Niw5ICsyNTYsNiBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFs
aXplRGVmYXVsdFNlCiAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwbHVnaW5BbGxvd2VkUnVuVGltZShB
ZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiV1IiksIG51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5KSwg
cGx1Z2luQWxsb3dlZFJ1blRpbWUuZ2V0KCkpOwotCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKQEAgLTE0OTAsMTggKzE0ODcsNiBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKFVJTlQgYWxsb3dlZFJ1blRp
bWUpCi17Ci0gICAgc2V0SW50ZWdlclZhbHVlKENGU1RSKFdlYktpdFBsdWdpbkFsbG93ZWRSdW5U
aW1lUHJlZmVyZW5jZUtleSksIGFsbG93ZWRSdW5UaW1lKTsKLSAgICByZXR1cm4gU19PSzsKLX0K
LQotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6cGx1Z2luQWxsb3dlZFJ1blRpbWUoVUlOVCogYWxs
b3dlZFJ1blRpbWUpCi17Ci0gICAgKmFsbG93ZWRSdW5UaW1lID0gaW50ZWdlclZhbHVlRm9yS2V5
KENGU1RSKFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSkpOwotICAgIHJl
dHVybiBTX09LOwotfQotCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9y
VGVzdChCU1RSIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0cmluZ0xlbihrZXkp
IHx8ICFTeXNTdHJpbmdMZW4odmFsdWUpKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNCwxMiArNDA0LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVy
cygKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHVzZUhpZ2hSZXNvbHV0aW9uVGltZXJz
KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQbHVnaW5BbGxv
d2VkUnVuVGltZSgKLSAgICAvKiBbaW5dICovIFVJTlQgYWxsb3dlZFJ1blRpbWUpOwotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBsdWdpbkFsbG93ZWRSdW5UaW1lKAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCogYWxsb3dlZFJ1blRpbWUpOwotCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgK
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIldlYk11dGFi
bGVVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5j
bHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiV2ViUGx1Z2luSGFsdGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJTY3Jp
cHRXb3JsZC5oIgogI2luY2x1ZGUgInJlc291cmNlLmgiCkBAIC03MDgsNyArNzA3LDYgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjbG9zZQogICAgIHNldFJlc291cmNlTG9h
ZERlbGVnYXRlKDApOwogICAgIHNldFVJRGVsZWdhdGUoMCk7CiAgICAgc2V0Rm9ybURlbGVnYXRl
KDApOwotICAgIHNldFBsdWdpbkhhbHRlckRlbGVnYXRlKDApOwogCiAgICAgaWYgKG1fd2ViSW5z
cGVjdG9yKQogICAgICAgICBtX3dlYkluc3BlY3Rvci0+d2ViVmlld0Nsb3NlZCgpOwpAQCAtMjY0
Myw3ICsyNjQxLDYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0Vwog
ICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5ldyBXZWJFZGl0b3JDbGllbnQodGhpcyk7
CiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHRoaXMpOwog
ICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQo
dGhpcyk7Ci0gICAgcGFnZUNsaWVudHMucGx1Z2luSGFsdGVyQ2xpZW50ID0gYWRvcHRQdHIobmV3
IFdlYlBsdWdpbkhhbHRlckNsaWVudCh0aGlzKSk7CiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKICAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNsaWVudCA9IG5ldyBXZWJH
ZW9sb2NhdGlvbkNsaWVudCh0aGlzKTsKICNlbmRpZgpAQCAtNDgwNiwxMiArNDgwMyw2IEBAIEhS
RVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICAgICAgcmV0dXJuIGhy
OwogICAgIHNldHRpbmdzLT5zZXRTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyhlbmFibGVk
KTsKIAotICAgIFVJTlQgcnVuVGltZTsKLSAgICBociA9IHByZWZzUHJpdmF0ZS0+cGx1Z2luQWxs
b3dlZFJ1blRpbWUoJnJ1blRpbWUpOwotICAgIGlmIChGQUlMRUQoaHIpKQotICAgICAgICByZXR1
cm4gaHI7Ci0gICAgc2V0dGluZ3MtPnNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKHJ1blRpbWUpOwot
CiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmlzRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgmZW5hYmxl
ZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKQEAgLTY0NjcsODUg
KzY0NTgsMzQgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKAogfQog
I2VuZGlmCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0UGx1Z2luSGFs
dGVyRGVsZWdhdGUoSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlKiBkKQotewotICAgIG1fcGx1Z2lu
SGFsdGVyRGVsZWdhdGUgPSBkOwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OnBsdWdpbkhhbHRlckRlbGVnYXRlKElXZWJQbHVnaW5IYWx0
ZXJEZWxlZ2F0ZSoqIGQpCitIUkVTVUxUIFdlYlZpZXc6OnVudXNlZDEoKQogewotICAgIGlmICgh
ZCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgIGlmICghbV9wbHVnaW5IYWx0ZXJE
ZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgIHJldHVybiBtX3BsdWdpbkhh
bHRlckRlbGVnYXRlLmNvcHlSZWZUbyhkKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gRV9GQUlMOwogfQogCi1zdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0Zvck5v
ZGUoSURPTU5vZGUqIGRvbU5vZGUpCitIUkVTVUxUIFdlYlZpZXc6OnVudXNlZDIoKQogewotICAg
IENPTVB0cjxET01Ob2RlPiB3ZWJLaXRET01Ob2RlKFF1ZXJ5LCBkb21Ob2RlKTsKLSAgICBpZiAo
IXdlYktpdERPTU5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgTm9kZSogbm9kZSA9IHdl
YktpdERPTU5vZGUtPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldChyZW5kZXJlciktPndpZGdldCgp
OwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2luVmlldygpKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4od2lkZ2V0KTsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVT
VUxUIFdlYlZpZXc6OmlzTm9kZUhhbHRlZFBsdWdpbihJRE9NTm9kZSogZG9tTm9kZSwgQk9PTCog
cmVzdWx0KQorSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQzKCkKIHsKLSAgICBpZiAoIWRvbU5vZGUg
fHwgIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgICpyZXN1bHQgPSBG
QUxTRTsKLQotICAgIFBsdWdpblZpZXcqIHZpZXcgPSBwbHVnaW5WaWV3Rm9yTm9kZShkb21Ob2Rl
KTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAgICAqcmVzdWx0
ID0gdmlldy0+aXNIYWx0ZWQoKTsKLSAgICByZXR1cm4gU19PSzsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnJlc3Rh
cnRIYWx0ZWRQbHVnaW5Gb3JOb2RlKElET01Ob2RlKiBkb21Ob2RlKQorSFJFU1VMVCBXZWJWaWV3
Ojp1bnVzZWQ0KCkKIHsKLSAgICBpZiAoIWRvbU5vZGUpCi0gICAgICAgIHJldHVybiBFX1BPSU5U
RVI7Ci0KLSAgICBQbHVnaW5WaWV3KiB2aWV3ID0gcGx1Z2luVmlld0Zvck5vZGUoZG9tTm9kZSk7
Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgdmlldy0+cmVz
dGFydCgpOwotICAgIHJldHVybiBTX09LOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgV2ViVmlldzo6aGFzUGx1Z2luRm9yTm9kZUJl
ZW5IYWx0ZWQoSURPTU5vZGUqIGRvbU5vZGUsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViVmll
dzo6dW51c2VkNSgpCiB7Ci0gICAgaWYgKCFkb21Ob2RlIHx8ICFyZXN1bHQpCi0gICAgICAgIHJl
dHVybiBFX1BPSU5URVI7Ci0KLSAgICAqcmVzdWx0ID0gRkFMU0U7Ci0KLSAgICBQbHVnaW5WaWV3
KiB2aWV3ID0gcGx1Z2luVmlld0Zvck5vZGUoZG9tTm9kZSk7Ci0gICAgaWYgKCF2aWV3KQotICAg
ICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgKnJlc3VsdCA9IHZpZXctPmhhc0JlZW5IYWx0ZWQo
KTsKLSAgICByZXR1cm4gU19PSzsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gRV9GQUlMOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OnNldEdlb2xvY2F0aW9uUHJvdmlkZXIo
SVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqIGxvY2F0aW9uUHJvdmlkZXIpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtODAyLDggKzgwMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbUdyb3VwKEJT
VFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXAoQlNUUiBncm91cE5h
bWUpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFBsdWdpbkhh
bHRlckRlbGVnYXRlKElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSopOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2ViUGx1Z2luSGFs
dGVyRGVsZWdhdGUqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVu
dXNlZDEoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMigp
OwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGludmFsaWRhdGVCYWNr
aW5nU3RvcmUoY29uc3QgUkVDVCopOwogCkBAIC04MTUsOSArODE1LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoaXN0b3J5RGVsZWdhdGUoSVdlYkhp
c3RvcnlEZWxlZ2F0ZSoqIGhpc3RvcnlEZWxlZ2F0ZSk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGFkZFZpc2l0ZWRMaW5rcyhCU1RSKiB2aXNpdGVkVVJMcywgdW5zaWdu
ZWQgdmlzaXRlZFVSTENvdW50KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBpc05vZGVIYWx0ZWRQbHVnaW4oSURPTU5vZGUqLCBCT09MKik7Ci0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlc3RhcnRIYWx0ZWRQbHVnaW5Gb3JOb2RlKElET01O
b2RlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc1BsdWdpbkZv
ck5vZGVCZWVuSGFsdGVkKElET01Ob2RlKiwgQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB1bnVzZWQzKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHVudXNlZDQoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdW51c2VkNSgpOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEdlb2xvY2F0aW9uUHJvdmlkZXIoSVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqIGxvY2F0aW9uUHJv
dmlkZXIpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZW9sb2NhdGlv
blByb3ZpZGVyKElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiogbG9jYXRpb25Qcm92aWRlcik7CkBA
IC0xMDU5LDcgKzEwNTksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgQ09NUHRyPElXZWJIaXN0b3J5RGVs
ZWdhdGU+IG1faGlzdG9yeURlbGVnYXRlOwogICAgIENPTVB0cjxXZWJQcmVmZXJlbmNlcz4gbV9w
cmVmZXJlbmNlczsKICAgICBDT01QdHI8V2ViSW5zcGVjdG9yPiBtX3dlYkluc3BlY3RvcjsKLSAg
ICBDT01QdHI8SVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlPiBtX3BsdWdpbkhhbHRlckRlbGVnYXRl
OwogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gbV9nZW9sb2NhdGlvblByb3Zp
ZGVyOwogCiAgICAgYm9vbCBtX3VzZXJBZ2VudE92ZXJyaWRkZW47CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUGx1Z2luSGFsdGVyRGVsZWdh
dGUuaWRsCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgRE9fTk9fSU1QT1JUUwotaW1wb3J0ICJvYWlkbC5pZGwiOwotaW1wb3J0ICJvY2lkbC5pZGwi
OwotI2VuZGlmCi0KLWludGVyZmFjZSBJRE9NTm9kZTsKLWludGVyZmFjZSBJV2ViVmlldzsKLQot
WwotICAgIG9iamVjdCwKLSAgICBvbGVhdXRvbWF0aW9uLAotICAgIHV1aWQoMmUwZTVkOWUtZmZj
OS00MTg1LWFhMTUtZTY2ODY4ZDU0OGVlKSwKLSAgICBwb2ludGVyX2RlZmF1bHQodW5pcXVlKQot
XQotaW50ZXJmYWNlIElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSA6IElVbmtub3duCi17Ci0gICAg
SFJFU1VMVCBzaG91bGRIYWx0UGx1Z2luKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSURP
TU5vZGUqLCBbaW5dIEJPT0wgaXNXaW5kb3dlZCwgW2luXSBCU1RSIHBsdWdpbk5hbWUsIFtvdXQs
IHJldHZhbF0gQk9PTCogcmVzdWx0KTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVy
ZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkocmV2aXNpb24g
OTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1By
aXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBAIGludGVyZmFjZSBJV2Vi
UHJlZmVyZW5jZXNQcml2YXRlIDogSVVua24KICAgICAvLyBVc2VkIGJ5IER1bXBSZW5kZXJUcmVl
LgogICAgIEhSRVNVTFQgc2V0UHJlZmVyZW5jZUZvclRlc3QoW2luXSBCU1RSIGtleSwgW2luXSBC
U1RSIHZhbHVlKTsKIAotICAgIEhSRVNVTFQgc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUoW2luXSBV
SU5UIGFsbG93ZWRSdW5UaW1lKTsKLSAgICBIUkVTVUxUIHBsdWdpbkFsbG93ZWRSdW5UaW1lKFtv
dXQsIHJldHZhbF0gVUlOVCogYWxsb3dlZFJ1blRpbWUpOworICAgIEhSRVNVTFQgdW51c2VkMSgp
OworICAgIEhSRVNVTFQgdW51c2VkMigpOwogCiAgICAgSFJFU1VMVCBzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZChbaW5dIEJPT0wpOwogICAgIEhSRVNVTFQgYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoW291dCwgcmV0dmFsXSBCT09MKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCShyZXZpc2lvbiA5MjQ4
MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZTsKIGludGVyZmFjZSBJV2ViSGlzdG9yeURlbGVnYXRlOwogaW50ZXJmYWNl
IElXZWJJbnNwZWN0b3I7CiBpbnRlcmZhY2UgSVdlYkluc3BlY3RvclByaXZhdGU7Ci1pbnRlcmZh
Y2UgSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlOwogaW50ZXJmYWNlIElXZWJVUkxSZXF1ZXN0Owog
aW50ZXJmYWNlIElXZWJWaWV3OwogCkBAIC0xOTcsOCArMTk2LDggQEAgaW50ZXJmYWNlIElXZWJW
aWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCByZW1vdmVVc2VyU3R5bGVTaGVldHNG
cm9tR3JvdXAoW2luXSBCU1RSIGdyb3VwTmFtZSwgW2luXSBJV2ViU2NyaXB0V29ybGQqKTsKICAg
ICBIUkVTVUxUIHJlbW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwKFtpbl0gQlNUUiBncm91cE5h
bWUpOwogCi0gICAgSFJFU1VMVCBzZXRQbHVnaW5IYWx0ZXJEZWxlZ2F0ZShbaW5dIElXZWJQbHVn
aW5IYWx0ZXJEZWxlZ2F0ZSogZCk7Ci0gICAgSFJFU1VMVCBwbHVnaW5IYWx0ZXJEZWxlZ2F0ZShb
cmV0dmFsLCBvdXRdIElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSoqIGQpOworICAgIEhSRVNVTFQg
dW51c2VkMSgpOworICAgIEhSRVNVTFQgdW51c2VkMigpOwogCiAgICAgLy8gSWYgcmVjdCBpcyAw
LCB0aGUgZW50aXJlIGJhY2tpbmcgc3RvcmUgd2lsbCBiZSBpbnZhbGlkYXRlZC4KICAgICBIUkVT
VUxUIGludmFsaWRhdGVCYWNraW5nU3RvcmUoW2luXSBjb25zdCBSRUNUKiByZWN0KTsKQEAgLTIx
OSw5ICsyMTgsOSBAQCBpbnRlcmZhY2UgSVdlYlZpZXdQcml2YXRlIDogSVVua25vd24KICAgICBI
UkVTVUxUIGhpc3RvcnlEZWxlZ2F0ZShbb3V0LHJldHZhbF0gSVdlYkhpc3RvcnlEZWxlZ2F0ZSoq
IGhpc3RvcnlEZWxlZ2F0ZSk7CiAgICAgSFJFU1VMVCBhZGRWaXNpdGVkTGlua3MoW2luXSBCU1RS
KiB2aXNpdGVkVVJMcywgW2luXSB1bnNpZ25lZCB2aXNpdGVkVVJMQ291bnQpOwogCi0gICAgSFJF
U1VMVCBpc05vZGVIYWx0ZWRQbHVnaW4oW2luXSBJRE9NTm9kZSosIFtyZXR2YWwsIG91dF0gQk9P
TCopOwotICAgIEhSRVNVTFQgcmVzdGFydEhhbHRlZFBsdWdpbkZvck5vZGUoW2luXSBJRE9NTm9k
ZSopOwotICAgIEhSRVNVTFQgaGFzUGx1Z2luRm9yTm9kZUJlZW5IYWx0ZWQoW2luXSBJRE9NTm9k
ZSosIFtyZXR2YWwsIG91dF0gQk9PTCopOworICAgIEhSRVNVTFQgdW51c2VkMygpOworICAgIEhS
RVNVTFQgdW51c2VkNCgpOworICAgIEhSRVNVTFQgdW51c2VkNSgpOwogCiAgICAgSFJFU1VMVCBz
ZXRHZW9sb2NhdGlvblByb3ZpZGVyKFtpbl0gSVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqIGxvY2F0
aW9uUHJvdmlkZXIpOwogICAgIEhSRVNVTFQgZ2VvbG9jYXRpb25Qcm92aWRlcihbb3V0LCByZXR2
YWxdIElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiogbG9jYXRpb25Qcm92aWRlcik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCShyZXZpc2lvbiA5MjQ4MikKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDcgKzEwOSw2IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKICNpbmNsdWRlICJJV2ViTm90
aWZpY2F0aW9uLmlkbCIKICNpbmNsdWRlICJJV2ViTm90aWZpY2F0aW9uQ2VudGVyLmlkbCIKICNp
bmNsdWRlICJJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIuaWRsIgotI2luY2x1ZGUgIklXZWJQbHVn
aW5IYWx0ZXJEZWxlZ2F0ZS5pZGwiCiAjaW5jbHVkZSAiSVdlYlBvbGljeURlbGVnYXRlLmlkbCIK
ICNpbmNsdWRlICJJV2ViUG9saWN5RGVsZWdhdGVQcml2YXRlLmlkbCIKICNpbmNsdWRlICJJV2Vi
UHJlZmVyZW5jZXMuaWRsIgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSGFsdGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuY3BwCShyZXZpc2lvbiA5MjQ4
MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJXZWJQbHVnaW5IYWx0ZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIkRPTUNvcmVDbGFz
c2VzLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm9kZS5oPgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1XZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OldlYlBsdWdpbkhhbHRlckNsaWVudChXZWJWaWV3KiB3
ZWJWaWV3KQotICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgQVNTRVJUX0FSRyh3ZWJW
aWV3LCB3ZWJWaWV3KTsKLX0KLQotYm9vbCBXZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OnNob3VsZEhh
bHRQbHVnaW4oTm9kZSogbiwgYm9vbCBpc1dpbmRvd2VkLCBjb25zdCBTdHJpbmcmIHBsdWdpbk5h
bWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FSRyhuLCBuKTsKLQotICAgIElXZWJQbHVnaW5IYWx0
ZXJEZWxlZ2F0ZSogZDsKLSAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+cGx1Z2luSGFsdGVyRGVs
ZWdhdGUoJmQpKSB8fCAhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ09NUHRyPElE
T01Ob2RlPiBkb21Ob2RlKEFkb3B0Q09NLCBET01Ob2RlOjpjcmVhdGVJbnN0YW5jZShuKSk7Ci0K
LSAgICBCT09MIHNob3VsZEhhbHQ7Ci0gICAgaWYgKEZBSUxFRChkLT5zaG91bGRIYWx0UGx1Z2lu
KG1fd2ViVmlldywgZG9tTm9kZS5nZXQoKSwgaXNXaW5kb3dlZCwgQlN0cmluZyhwbHVnaW5OYW1l
KSwgJnNob3VsZEhhbHQpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHNo
b3VsZEhhbHQ7Ci19Ci0KLWJvb2wgV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjplbmFibGVkKCkgY29u
c3QKLXsKLSAgICBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqIGQ7Ci0gICAgaWYgKEZBSUxFRCht
X3dlYlZpZXctPnBsdWdpbkhhbHRlckRlbGVnYXRlKCZkKSkgfHwgIWQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z2luSGFsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFdlYlBsdWdp
bkhhbHRlckNsaWVudF9oCi0jZGVmaW5lIFdlYlBsdWdpbkhhbHRlckNsaWVudF9oCi0KLSNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkhhbHRlckNsaWVudC5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBOb2RlOwotfQotCi1jbGFzcyBX
ZWJWaWV3OwotCi1jbGFzcyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
UGx1Z2luSGFsdGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBXZWJQbHVnaW5IYWx0ZXJDbGllbnQo
V2ViVmlldyogd2ViVmlldyk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGFsdFBsdWdpbihX
ZWJDb3JlOjpOb2RlKiBuLCBib29sIGlzV2luZG93ZWQsIGNvbnN0IFdURjo6U3RyaW5nJiBwbHVn
aW5OYW1lKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0OwotCi1wcml2
YXRlOgotICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKLX07Ci0KLSNlbmRpZiAvLyBXZWJQbHVnaW5I
YWx0ZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRl
cmZhY2VzLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNw
cm9qL0ludGVyZmFjZXMudmNwcm9qCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMw
NjUsNTggKzMwNjUsNiBAQAogCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJPC9GaWxlPgogCQk8
RmlsZQotCQkJUmVsYXRpdmVQYXRoPSIuLlxJbnRlcmZhY2VzXElXZWJQbHVnaW5IYWx0ZXJEZWxl
Z2F0ZS5pZGwiCi0JCQk+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiIKLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wKLQkJ
CQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCi0JCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJPgotCQkJCTxUb29sCi0JCQkJCU5hbWU9IlZDTUlETFRv
b2wiCi0JCQkJLz4KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRp
b24KLQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0J
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJ
CQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgotCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJPgotCQkJCTxU
b29sCi0JCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJLz4KLQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+Ci0JCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8
V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJPgotCQkJCTxUb29sCi0J
CQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJLz4KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CTwvRmlsZT4KLQkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViUG9s
aWN5RGVsZWdhdGUuaWRsIgogCQkJPgogCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCShyZXZpc2lvbiA5
MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTI0MywxNCArMTI0Myw2IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlxXZWJDb3JlU3VwcG9ydFxXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKIAkJCQk+CiAJCQk8L0Zp
bGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViQ29yZVN1cHBvcnRcV2ViUGx1
Z2luSGFsdGVyQ2xpZW50LmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cV2ViQ29yZVN1cHBvcnRcV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0J
CQkJPgotCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViS2l0UHJlZml4LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQ4MikK
KysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTEtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIERvbid0IGluY2x1ZGUgUGx1Z2luSGFsdGVyQ2xpZW50Lmgs
IGl0J3MgYmVlbiByZW1vdmVkLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTEtMDgt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogcmVtb3ZlIE5vZGUgcGFyYW1ldGVyIGZyb20gdGhlIEluc3BlY3RvckNsaWVu
dDo6aGlnaGxpZ2h0CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysg
U291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCi0jaW5jbHVkZSAiUGx1
Z2luSGFsdGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdlci5oIgpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
OTI0ODIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxMS0wOC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1NzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNhbGwgdG8gc2V0IHRoZSBhbGxvd2VkIHBsdWctaW4g
cnVuIHRpbWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW06CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKwogMjAxMS0w
OC0wNSAgQWRlbWFyIGRlIFNvdXphIFJlaXMgSnIuICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXQtTWluaW1hbCBidWlsZGJv
dApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2
aXNpb24gOTI0ODIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0Nyw3ICs0NDcsNiBAQCBzdGF0aWMgdm9pZCByZXNldERl
ZmF1bHRzVG9Db25zaXN0ZW50VmFsCiAgICAgW3ByZWZlcmVuY2VzIHNldENhY2hlTW9kZWw6V2Vi
Q2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcl07CiAgICAgW3ByZWZlcmVuY2VzIHNldFhTU0F1ZGl0
b3JFbmFibGVkOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0RXhwZXJpbWVudGFsTm90aWZpY2F0
aW9uc0VuYWJsZWQ6Tk9dOwotICAgIFtwcmVmZXJlbmNlcyBzZXRQbHVnaW5BbGxvd2VkUnVuVGlt
ZToxXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0UGx1Z0luc0VuYWJsZWQ6WUVTXTsKIAogICAgIFtw
cmVmZXJlbmNlcyBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkOk5PXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103088</attachid>
            <date>2011-08-05 11:21:04 -0700</date>
            <delta_ts>2011-08-05 11:28:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65729-20110805112103.patch</filename>
            <type>text/plain</type>
            <size>84688</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMDUgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGx1Z2luSGFs
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBwbHVnLWluIGhhbHRlciBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IHBhZ2UvSGFsdGFibGVQbHVnaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgICogcGFnZS9QbHVnaW5IYWx0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBh
Z2UvUGx1Z2luSGFsdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QbHVnaW5IYWx0ZXJD
bGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5o
OgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAqIHBs
dWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld05vbmUuY3Bw
OgorICAgICAgICAqIHBsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwOgorICAgICAgICAqIHBs
dWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5W
aWV3V2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuaDoKKwogMjAxMS0wOC0wNSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRUeXBlIGZvciBYSFJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
OTkyLDcgKzk5Miw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL1BlcmZvcm1hbmNl
LmNwcAogICAgIHBhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcAogICAgIHBhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuY3BwCi0gICAgcGFnZS9QbHVnaW5IYWx0ZXIuY3BwCiAgICAgcGFnZS9Qcmlu
dENvbnRleHQuY3BwCiAgICAgcGFnZS9TY3JlZW4uY3BwCiAgICAgcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTI0ODIp
CisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzEwLDkgKzIzMTAsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGlt
aW5nLmggXAotCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvcGFnZS9QbHVn
aW5IYWx0ZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNr
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yODUsNyArMjg1LDYgQEAgX19aTjdXZWJDb3JlMTJQcmludENvbnRl
eHRDMUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHREMUV2CiBfX1pON1dl
YkNvcmUxMlJlbmRlck9iamVjdDE2cmVwYWludFJlY3RhbmdsZUVSS05TXzdJbnRSZWN0RWIKIF9f
Wk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCi1fX1pO
N1dlYkNvcmUxMlJlbmRlcldpZGdldDE5c2hvd1N1YnN0aXR1dGVJbWFnZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU181SW1hZ2VFRUUKIF9fWk43V2ViQ29yZTEyUmVuZGVyV2lkZ2V0MjhyZXN1bWVXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVyV2lkZ2V0MjlzdXNwZW5k
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEwd3Jh
cE5TRGF0YUVQNk5TRGF0YQpAQCAtNjk4LDggKzY5Nyw2IEBAIF9fWk43V2ViQ29yZTRQYWdlMTBm
aW5kU3RyaW5nRVJLTjNXVEY2U3QKIF9fWk43V2ViQ29yZTRQYWdlMTFQYWdlQ2xpZW50c0MxRXYK
IF9fWk43V2ViQ29yZTRQYWdlMTFQYWdlQ2xpZW50c0QxRXYKIF9fWk43V2ViQ29yZTRQYWdlMTJz
ZXRHcm91cE5hbWVFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmU0UGFnZTEzZGlkU3RvcFBs
dWdpbkVQTlNfMTRIYWx0YWJsZVBsdWdpbkUKLV9fWk43V2ViQ29yZTRQYWdlMTRkaWRTdGFydFBs
dWdpbkVQTlNfMTRIYWx0YWJsZVBsdWdpbkUKIF9fWk43V2ViQ29yZTRQYWdlMTRzZXRNZWRpYVZv
bHVtZUVmCiBfX1pON1dlYkNvcmU0UGFnZTE1YWRkU2NoZWR1bGVQYWlyRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzEyU2NoZWR1bGVQYWlyRUVFCiBfX1pON1dlYkNvcmU0UGFnZTE1ZGlkTW92ZU9uc2Ny
ZWVuRXYKQEAgLTg5OCw3ICs4OTUsNiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldEVkaXRh
YmxlTGlua0JlCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldExvYWREZWZlcnJpbmdFbmFibGVk
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIzc2V0TmVlZHNUaWdlck1haWxRdWlya3NFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjNzZXRQaWN0b2dyYXBoRm9udEZhbWlseUVSS04zV1RGMTJBdG9t
aWNTdHJpbmdFMTFVU2NyaXB0Q29kZQotX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRQbHVnaW5B
bGxvd2VkUnVuVGltZUVqCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldFVzZXNFbmNvZGluZ0Rl
dGVjdG9yRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0QXBwbGljYXRpb25DaHJvbWVNb2Rl
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkRWIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC05NDEsNyArOTQxLDYgQEAgU09VUkNFUyArPSBcCiAg
ICAgcGFnZS9QZXJmb3JtYW5jZS5jcHAgXAogICAgIHBhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmNwcCBcCiAgICAgcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgXAotICAgIHBhZ2UvUGx1Z2lu
SGFsdGVyLmNwcCBcCiAgICAgcGFnZS9QcmludENvbnRleHQuY3BwIFwKICAgICBwYWdlL1NjcmVl
bi5jcHAgXAogICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5MjQ4MikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTczMCwxOCArMjU3MzAsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFBsdWdpbkhhbHRlci5jcHAiCi0JCQkJPgotCQkJ
PC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUGx1Z2luSGFsdGVy
LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBh
Z2VcUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25DYWxsYmFjay5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDEwICsxNzMw
LDYgQEAKIAkJNzYzN0M1NDMxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
MzdDNTQyMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87
IH07CiAJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NjdGOTlCRDExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3Bw
ICovOyB9OwogCQk3NjdGOTlDMDExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
ICovOyB9OwotCQk3NjkzQkFEMjEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNFMTA2
QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTc2OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQ
bHVnaW5IYWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi87IH07
Ci0JCTc2OTNCQUQ0MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQwMTA2QzJEQ0EwMDdC
MDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLzsgfTsKLQkJNzY5M0JBRDUxMDZDMkRDQTAwN0IwODIz
IC8qIFBsdWdpbkhhbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzY5M0JBRDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlckNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTc2OTQ1NjNDMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Njk0NTYzQTEyMTREOTdDMDAw
N0NCQUUgLyogSlNET01Ub2tlbkxpc3QuY3BwICovOyB9OwogCQk3Njk0NTYzRDEyMTREOTdDMDAw
N0NCQUUgLyogSlNET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc2OTQ1NjNCMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlz
dC5oICovOyB9OwogCQk3Njk0NTY1QjEyMTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5MaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Njk0NTY1
OTEyMTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5MaXN0LmggKi87IH07CkBAIC04MzY2LDEw
ICs4MzYyLDYgQEAKIAkJNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjdGOTlC
RDExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjdGOTlCRjExQTExOTU2MDA4
MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNzY5M0JBQ0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1
Z2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbHRhYmxlUGx1Z2luLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGx1Z2luSGFsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzY5M0JBRDAx
MDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NzY5M0JBRDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlckNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5NDU2M0ExMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9r
ZW5MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NVG9r
ZW5MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5NDU2M0IxMjE0RDk3
QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2
OTQ1NjU5MTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDYxMCw3ICsxNDYwMiw2IEBACiAJCQkJRkU4MEQ3QkMwRTlDMUYyNTAw
MEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLywKIAkJCQlDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2
RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUw
IC8qIEdyb3VwU2V0dGluZ3MuaCAqLywKLQkJCQk3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyog
SGFsdGFibGVQbHVnaW4uaCAqLywKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2MTcgLyogSGlz
dG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaCAq
LywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwgKi8sCkBAIC0x
NDY2MCw5ICsxNDY1MSw2IEBACiAJCQkJOEFGNEU1NTgxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZv
cm1hbmNlVGltaW5nLmNwcCAqLywKIAkJCQk4QUY0RTU1OTExREM1QTYzMDAwRUQzREUgLyogUGVy
Zm9ybWFuY2VUaW1pbmcuaCAqLywKIAkJCQk4QUY0RTU1QTExREM1QTYzMDAwRUQzREUgLyogUGVy
Zm9ybWFuY2VUaW1pbmcuaWRsICovLAotCQkJCTc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQ
bHVnaW5IYWx0ZXIuY3BwICovLAotCQkJCTc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXIuaCAqLywKLQkJCQk3NjkzQkFEMTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFs
dGVyQ2xpZW50LmggKi8sCiAJCQkJRkU4MEQ3QkQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9u
Q2FsbGJhY2suaCAqLywKIAkJCQk1OTNBQjY5NzEzNTVDRDkyMDBGQzgyMTEgLyogUG9zaXRpb25D
YWxsYmFjay5pZGwgKi8sCiAJCQkJRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9u
RXJyb3IuaCAqLywKQEAgLTIxNTExLDcgKzIxNDk5LDYgQEAKIAkJCQlCMkEwMTVBQjBBRjZDRDUz
MDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdBMTdBN0Ix
MkYyODkwQjAwNEUwMkY2IC8qIEdyYXBoaWNzVHlwZXMzRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzUwQjU2MTcxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
LAotCQkJCTc2OTNCQUQyMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQ4MkI3NDYxMTk4QzM1NDAwQkZCMDA1IC8qIEhhc2hDaGFuZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3NDhCRTAxMkNCRjJEQzAwMUZCQTQxIC8qIEhhc2hU
b29scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQzAxMjUxRjEyRDAwM0VGMjY5IC8qIEhp
ZGRlbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjUwMyw4ICsyMjQ5MCw2IEBACiAJ
CQkJOTM1QzQ3NkIwOUFDNEQ0RjAwQTZBQUI0IC8qIFBsYXRmb3JtV2hlZWxFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTlDNkU0RjQwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzY5M0JBRDQxMDZDMkRDQTAwN0IwODIzIC8qIFBs
dWdpbkhhbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzY5M0JBRDUxMDZDMkRDQTAwN0IwODIz
IC8qIFBsdWdpbkhhbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEQTE0MTEwRTFB
RTVEOTAwMDIzRUU1IC8qIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQTg3OTkwMTFDQkU4NDYwMDNDNjY0RiAvKiBQbHVnaW5TdHJhdGVneS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEFGREFDM0QxMEY1NDQ4QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDgzLDcgKzI1NDY4LDYgQEAKIAkJCQkxQUQ4RjgxQzEx
Q0FCOUU5MDBFOTNFNTQgLyogUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE5QzZFNEYzMEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3MjA1QUJCMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFs
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBREExNDEwMEUxQUU1RDkwMDAyM0VFNSAvKiBQ
bHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkYxN0Uz
MTEyMzU2NzMwMDFENjFCNSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkIxRjcxNjBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2
aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJQbHVnaW5IYWx0ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2Vh
cmNoUG9wdXBNZW51LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hhbHRhYmxlUGx1Z2lu
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9IYWx0YWJsZVBsdWdpbi5oCShy
ZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGFsdGFibGVQbHVnaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSGFsdGFibGVQbHVnaW5faAotI2RlZmluZSBI
YWx0YWJsZVBsdWdpbl9oCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsKLQot
Y2xhc3MgSGFsdGFibGVQbHVnaW4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkhhbHRhYmxlUGx1
Z2luKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaGFsdCgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVzdGFydCgpID0gMDsKLSAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGlzV2luZG93ZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBTdHJp
bmcgcGx1Z2luTmFtZSgpIGNvbnN0ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEhhbHRhYmxlUGx1Z2luX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIK
ICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCi0jaW5jbHVk
ZSAiUGx1Z2luSGFsdGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBs
dWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkBAIC0xNzYsMTEg
KzE3NSw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgIEFTU0VS
VCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKICAgICBhbGxQYWdlcy0+YWRkKHRoaXMpOwog
Ci0gICAgaWYgKHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVudCkgewotICAgICAgICBtX3Bs
dWdpbkhhbHRlciA9IGFkb3B0UHRyKG5ldyBQbHVnaW5IYWx0ZXIocGFnZUNsaWVudHMucGx1Z2lu
SGFsdGVyQ2xpZW50LnJlbGVhc2UoKSkpOwotICAgICAgICBtX3BsdWdpbkhhbHRlci0+c2V0UGx1
Z2luQWxsb3dlZFJ1blRpbWUobV9zZXR0aW5ncy0+cGx1Z2luQWxsb3dlZFJ1blRpbWUoKSk7Ci0g
ICAgfQotCiAjaWZuZGVmIE5ERUJVRwogICAgIHBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwogI2Vu
ZGlmCkBAIC04ODYsMjQgKzg4MCw2IEBAIHZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVD
aGFuZ2VkKCkKICAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5wcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9CiAKLXZvaWQgUGFnZTo6cGx1Z2lu
QWxsb3dlZFJ1blRpbWVDaGFuZ2VkKCkKLXsKLSAgICBpZiAobV9wbHVnaW5IYWx0ZXIpCi0gICAg
ICAgIG1fcGx1Z2luSGFsdGVyLT5zZXRQbHVnaW5BbGxvd2VkUnVuVGltZShtX3NldHRpbmdzLT5w
bHVnaW5BbGxvd2VkUnVuVGltZSgpKTsKLX0KLQotdm9pZCBQYWdlOjpkaWRTdGFydFBsdWdpbihI
YWx0YWJsZVBsdWdpbiogb2JqKQotewotICAgIGlmIChtX3BsdWdpbkhhbHRlcikKLSAgICAgICAg
bV9wbHVnaW5IYWx0ZXItPmRpZFN0YXJ0UGx1Z2luKG9iaik7Ci19Ci0KLXZvaWQgUGFnZTo6ZGlk
U3RvcFBsdWdpbihIYWx0YWJsZVBsdWdpbiogb2JqKQotewotICAgIGlmIChtX3BsdWdpbkhhbHRl
cikKLSAgICAgICAgbV9wbHVnaW5IYWx0ZXItPmRpZFN0b3BQbHVnaW4ob2JqKTsKLX0KLQogdm9p
ZCBQYWdlOjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEp
CiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhU2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDggKzc0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5vZGU7
CiAgICAgY2xhc3MgUGFnZUdyb3VwOwogICAgIGNsYXNzIFBsdWdpbkRhdGE7Ci0gICAgY2xhc3Mg
UGx1Z2luSGFsdGVyOwotICAgIGNsYXNzIFBsdWdpbkhhbHRlckNsaWVudDsKICAgICBjbGFzcyBQ
cm9ncmVzc1RyYWNrZXI7CiAgICAgY2xhc3MgUmVuZGVyVGhlbWU7CiAgICAgY2xhc3MgVmlzaWJs
ZVNlbGVjdGlvbjsKQEAgLTExMyw3ICsxMTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudDsKICAgICAgICAgICAgIERyYWdDbGll
bnQqIGRyYWdDbGllbnQ7CiAgICAgICAgICAgICBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudDsKLSAgICAgICAgICAgIE93blB0cjxQbHVnaW5IYWx0ZXJDbGllbnQ+IHBsdWdpbkhhbHRl
ckNsaWVudDsKICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVu
dDsKICAgICAgICAgICAgIERldmljZU1vdGlvbkNsaWVudCogZGV2aWNlTW90aW9uQ2xpZW50Owog
ICAgICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xp
ZW50OwpAQCAtMjUzLDEwICsyNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAotICAgICAgICB2b2lkIGRpZFN0YXJ0UGx1Z2luKEhhbHRh
YmxlUGx1Z2luKik7Ci0gICAgICAgIHZvaWQgZGlkU3RvcFBsdWdpbihIYWx0YWJsZVBsdWdpbiop
OwotICAgICAgICB2b2lkIHBsdWdpbkFsbG93ZWRSdW5UaW1lQ2hhbmdlZCgpOwotCiAgICAgICAg
IHN0YXRpYyB2b2lkIHNldERlYnVnZ2VyRm9yQWxsUGFnZXMoSlNDOjpEZWJ1Z2dlciopOwogICAg
ICAgICB2b2lkIHNldERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKICAgICAgICAgSlNDOjpEZWJ1
Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CkBAIC0zOTMsOCAr
Mzg2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9jYW5TdGFydE1l
ZGlhOwogCi0gICAgICAgIE93blB0cjxQbHVnaW5IYWx0ZXI+IG1fcGx1Z2luSGFsdGVyOwotCiAj
aWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4g
bV9zZXNzaW9uU3RvcmFnZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QbHVn
aW5IYWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFs
dGVyLmNwcAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhh
bHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlBsdWdpbkhhbHRlci5oIgotCi0jaW5jbHVkZSAiSGFsdGFibGVQbHVnaW4uaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBsdWdpbkhhbHRl
cjo6UGx1Z2luSGFsdGVyKFBhc3NPd25QdHI8UGx1Z2luSGFsdGVyQ2xpZW50PiBjbGllbnQpCi0g
ICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3RpbWVyKHRoaXMsICZQbHVnaW5IYWx0ZXI6
OnRpbWVyRmlyZWQpCi0gICAgLCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKG51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCi17Ci0gICAgQVNTRVJUX0FSRyhtX2NsaWVudCwgbV9jbGllbnQp
OwotfQotCi12b2lkIFBsdWdpbkhhbHRlcjo6ZGlkU3RhcnRQbHVnaW4oSGFsdGFibGVQbHVnaW4q
IG9iaikKLXsKLSAgICBBU1NFUlRfQVJHKG9iaiwgb2JqKTsKLSAgICBBU1NFUlRfQVJHKG9iaiwg
IW1fcGx1Z2lucy5jb250YWlucyhvYmopKTsKLQotICAgIGlmICghbV9jbGllbnQtPmVuYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJy
ZW50VGltZSgpOwotCi0gICAgbV9wbHVnaW5zLmFkZChvYmosIGN1cnJlbnRUaW1lKTsKLQotICAg
IGlmIChtX3BsdWdpbnMuc2l6ZSgpID09IDEpCi0gICAgICAgIG1fb2xkZXN0U3RhcnRUaW1lID0g
Y3VycmVudFRpbWU7Ci0KLSAgICBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBQ
bHVnaW5IYWx0ZXI6OmRpZFN0b3BQbHVnaW4oSGFsdGFibGVQbHVnaW4qIG9iaikKLXsKLSAgICBp
ZiAoIW1fY2xpZW50LT5lbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGx1Z2lu
cy5yZW1vdmUob2JqKTsKLX0KLQotdm9pZCBQbHVnaW5IYWx0ZXI6OnRpbWVyRmlyZWQoVGltZXI8
UGx1Z2luSGFsdGVyPiopCi17Ci0gICAgaWYgKG1fcGx1Z2lucy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFZlY3RvcjxIYWx0YWJsZVBsdWdpbio+IHBsdWdpbnM7Ci0gICAgY29w
eUtleXNUb1ZlY3RvcihtX3BsdWdpbnMsIHBsdWdpbnMpOwotCi0gICAgLy8gUGx1Zy1pbnMgb2xk
ZXIgdGhhbiB0aGlzIGFyZSBjYW5kaWRhdGVzIHRvIGJlIGhhbHRlZC4KLSAgICBkb3VibGUgcGx1
Z2luQ3V0T2ZmVGltZSA9IFdURjo6Y3VycmVudFRpbWUoKSAtIG1fcGx1Z2luQWxsb3dlZFJ1blRp
bWU7Ci0KLSAgICBtX29sZGVzdFN0YXJ0VGltZSA9IG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1h
eCgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGRvdWJsZSB0aGlzU3RhcnRUaW1lID0gbV9wbHVnaW5zLmdldChwbHVnaW5zW2ld
KTsKLSAgICAgICAgaWYgKHRoaXNTdGFydFRpbWUgPiBwbHVnaW5DdXRPZmZUaW1lKSB7Ci0gICAg
ICAgICAgICAvLyBUaGlzIHBsdWctaW4gaXMgdG9vIHlvdW5nIHRvIGJlIGhhbHRlZC4gV2UgZmlu
ZCB0aGUgb2xkZXN0Ci0gICAgICAgICAgICAvLyBwbHVnLWluIHRoYXQgaXMgbm90IG9sZCBlbm91
Z2ggdG8gYmUgaGFsdGVkIGFuZCB1c2UgaXQgdG8gc2V0Ci0gICAgICAgICAgICAvLyB0aGUgdGlt
ZXIncyBuZXh0IGZpcmUgdGltZS4KLSAgICAgICAgICAgIGlmICh0aGlzU3RhcnRUaW1lIDwgbV9v
bGRlc3RTdGFydFRpbWUpCi0gICAgICAgICAgICAgICAgbV9vbGRlc3RTdGFydFRpbWUgPSB0aGlz
U3RhcnRUaW1lOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAobV9jbGllbnQtPnNob3VsZEhhbHRQbHVnaW4ocGx1Z2luc1tpXS0+bm9kZSgpLCBwbHVnaW5z
W2ldLT5pc1dpbmRvd2VkKCksIHBsdWdpbnNbaV0tPnBsdWdpbk5hbWUoKSkpCi0gICAgICAgICAg
ICBwbHVnaW5zW2ldLT5oYWx0KCk7Ci0KLSAgICAgICAgbV9wbHVnaW5zLnJlbW92ZShwbHVnaW5z
W2ldKTsKLSAgICB9Ci0KLSAgICBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBQ
bHVnaW5IYWx0ZXI6OnN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpCi17Ci0gICAgaWYgKG1fdGltZXIu
aXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcGx1Z2lucy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBuZXh0RmlyZUludGVydmFsID0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKSAtIChjdXJyZW50VGltZSgp
IC0gbV9vbGRlc3RTdGFydFRpbWUpOwotICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KG5leHRGaXJl
SW50ZXJ2YWwgPCAwID8gMCA6IG5leHRGaXJlSW50ZXJ2YWwpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmgJKHJldmlzaW9uIDky
NDgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpZm5kZWYgUGx1Z2luSGFsdGVyX2gKLSNkZWZpbmUgUGx1Z2luSGFsdGVyX2gK
LQotI2luY2x1ZGUgIlBsdWdpbkhhbHRlckNsaWVudC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSGFsdGFibGVQbHVnaW47Ci0KLWNsYXNzIFBsdWdpbkhh
bHRlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1Z2luSGFsdGVyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUGx1Z2luSGFsdGVyKFBhc3NPd25QdHI8UGx1
Z2luSGFsdGVyQ2xpZW50Pik7Ci0KLSAgICB2b2lkIGRpZFN0YXJ0UGx1Z2luKEhhbHRhYmxlUGx1
Z2luKik7Ci0gICAgdm9pZCBkaWRTdG9wUGx1Z2luKEhhbHRhYmxlUGx1Z2luKik7Ci0KLSAgICB2
b2lkIHNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKHVuc2lnbmVkIHJ1blRpbWUpIHsgbV9wbHVnaW5B
bGxvd2VkUnVuVGltZSA9IHJ1blRpbWU7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHRpbWVyRmly
ZWQoVGltZXI8UGx1Z2luSGFsdGVyPiopOwotICAgIHZvaWQgc3RhcnRUaW1lcklmTmVjZXNzYXJ5
KCk7Ci0KLSAgICBPd25QdHI8UGx1Z2luSGFsdGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBUaW1l
cjxQbHVnaW5IYWx0ZXI+IG1fdGltZXI7Ci0gICAgdW5zaWduZWQgbV9wbHVnaW5BbGxvd2VkUnVu
VGltZTsKLSAgICBkb3VibGUgbV9vbGRlc3RTdGFydFRpbWU7Ci0gICAgSGFzaE1hcDxIYWx0YWJs
ZVBsdWdpbiosIGRvdWJsZT4gbV9wbHVnaW5zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gUGx1Z2luSGFsdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGx1Z2luSGFsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnaW5IYWx0ZXJDbGllbnQuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BsdWdpbkhhbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBQ
bHVnaW5IYWx0ZXJDbGllbnRfaAotI2RlZmluZSBQbHVnaW5IYWx0ZXJDbGllbnRfaAotCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2Rl
OwotCi1jbGFzcyBQbHVnaW5IYWx0ZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgflBs
dWdpbkhhbHRlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEhhbHRQbHVn
aW4oTm9kZSosIGJvb2wgaXNXaW5kb3dlZCwgY29uc3QgU3RyaW5nJiBwbHVnaW5OYW1lKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQbHVnaW5IYWx0ZXJDbGllbnRfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNiBA
QCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
CiAgICAgLCBtX3Nlc3Npb25TdG9yYWdlUXVvdGEoU3RvcmFnZU1hcDo6bm9RdW90YSkKICNlbmRp
ZgotICAgICwgbV9wbHVnaW5BbGxvd2VkUnVuVGltZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICwgbV9lZGl0aW5nQmVoYXZpb3JUeXBlKGVkaXRpbmdCZWhhdmlvclR5cGVG
b3JQbGF0Zm9ybSgpKQogICAgICwgbV9tYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aChkZWZh
dWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgpCiAgICAgLCBtX2lzU3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKGZhbHNlKQpAQCAtNzQ4LDEyICs3NDcsNiBAQCB2b2lkIFNldHRpbmdzOjpz
ZXRFeHBlcmltZW50YWxOb3RpZmljYXRpCiAgICAgbV9leHBlcmltZW50YWxOb3RpZmljYXRpb25z
RW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFBsdWdpbkFsbG93ZWRS
dW5UaW1lKHVuc2lnbmVkIHJ1blRpbWUpCi17Ci0gICAgbV9wbHVnaW5BbGxvd2VkUnVuVGltZSA9
IHJ1blRpbWU7Ci0gICAgbV9wYWdlLT5wbHVnaW5BbGxvd2VkUnVuVGltZUNoYW5nZWQoKTsKLX0K
LQogI2lmIFBMQVRGT1JNKFdJTikgfHwgKE9TKFdJTkRPV1MpICYmIFBMQVRGT1JNKFdYKSkKIHZv
aWQgU2V0dGluZ3M6OnNldFNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKGJvb2wgc2hvdWxk
VXNlSGlnaFJlc29sdXRpb25UaW1lcnMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShy
ZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQ0LDkgKzM0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
c3RhdGljIGJvb2wgc2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSB7IHJldHVybiBnU2hv
dWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnM7IH0KICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2V0
UGx1Z2luQWxsb3dlZFJ1blRpbWUodW5zaWduZWQpOwotICAgICAgICB1bnNpZ25lZCBwbHVnaW5B
bGxvd2VkUnVuVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWU7IH0K
LQogICAgICAgICB2b2lkIHNldFdlYkF1ZGlvRW5hYmxlZChib29sKTsKICAgICAgICAgYm9vbCB3
ZWJBdWRpb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkF1ZGlvRW5hYmxlZDsgfQogCkBA
IC00NzgsNyArNDc1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKICAgICAgICAgdW5zaWduZWQgbV9zZXNzaW9uU3RvcmFnZVF1b3RhOwogI2VuZGlmCi0g
ICAgICAgIHVuc2lnbmVkIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWU7CiAgICAgICAgIHVuc2lnbmVk
IG1fZWRpdGluZ0JlaGF2aW9yVHlwZTsKICAgICAgICAgdW5zaWduZWQgbV9tYXhpbXVtSFRNTFBh
cnNlckRPTVRyZWVEZXB0aDsKICAgICAgICAgYm9vbCBtX2lzU3BhdGlhbE5hdmlnYXRpb25FbmFi
bGVkIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNp
b24gOTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzEsOSArMjcxLDYgQEAgYm9vbCBQbHVnaW5WaWV3OjpzdGFydCgpCiAg
ICAgaWYgKG1fc3RhdHVzICE9IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHBhcmVudEZyYW1lKCktPnBhZ2UoKSkKLSAgICAg
ICAgcGFyZW50RnJhbWUoKS0+cGFnZSgpLT5kaWRTdGFydFBsdWdpbih0aGlzKTsKLQogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0zMTgsOSArMzE1LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjpzdG9w
KCkKICAgICBpZiAoIW1faXNTdGFydGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocGFy
ZW50RnJhbWUoKS0+cGFnZSgpKQotICAgICAgICBwYXJlbnRGcmFtZSgpLT5wYWdlKCktPmRpZFN0
b3BQbHVnaW4odGhpcyk7Ci0KICAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OnN0b3AoKTog
U3RvcHBpbmcgcGx1Zy1pbiAnJXMnIiwgbV9wbHVnaW4tPm5hbWUoKS51dGY4KCkuZGF0YSgpKTsK
IAogICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVhbT4gPiBzdHJlYW1zID0gbV9zdHJlYW1z
OwpAQCAtODgwLDggKzg3NCw2IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoRnJhbWUqIHBhcmVu
dEZyYW0KICAgICAsIG1fbG9hZE1hbnVhbGx5KGxvYWRNYW51YWxseSkKICAgICAsIG1fbWFudWFs
U3RyZWFtKDApCiAgICAgLCBtX2lzSmF2YVNjcmlwdFBhdXNlZChmYWxzZSkKLSAgICAsIG1faXNI
YWx0ZWQoZmFsc2UpCi0gICAgLCBtX2hhc0JlZW5IYWx0ZWQoZmFsc2UpCiAgICAgLCBtX2hhdmVD
YWxsZWRTZXRXaW5kb3coZmFsc2UpCiB7CiAgICAgaWYgKCFtX3BsdWdpbikgewpAQCAtMTI5MCwx
NiArMTI4Miw2IEBAIGNvbnN0IGNoYXIqIFBsdWdpblZpZXc6OnVzZXJBZ2VudFN0YXRpYygKICNl
bmRpZgogCiAKLU5vZGUqIFBsdWdpblZpZXc6Om5vZGUoKSBjb25zdAotewotICAgIHJldHVybiBt
X2VsZW1lbnQ7Ci19Ci0KLVN0cmluZyBQbHVnaW5WaWV3OjpwbHVnaW5OYW1lKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wbHVnaW4tPm5hbWUoKTsKLX0KLQogdm9pZCBQbHVnaW5WaWV3OjpsaWZl
U3VwcG9ydFRpbWVyRmlyZWQoVGltZXI8UGx1Z2luVmlldz4qKQogewogICAgIGRlcmVmKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gOTI0ODIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNiBAQAogI2RlZmluZSBQbHVnaW5WaWV3X2gKIAogI2luY2x1ZGUgIkZyYW1lTG9hZFJl
cXVlc3QuaCIKLSNpbmNsdWRlICJIYWx0YWJsZVBsdWdpbi5oIgogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJQbHVnaW5W
aWV3QmFzZS5oIgpAQCAtMTQxLDcgKzE0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgICAgICAgICAgICwgcHJpdmF0ZSBQbHVnaW5TdHJlYW1DbGllbnQKICNlbmRpZgogICAg
ICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgUGx1Z2luTWFudWFsTG9hZGVyCi0gICAgICAgICAg
ICAgICAgICAgICAsIHByaXZhdGUgSGFsdGFibGVQbHVnaW4KICAgICAgICAgICAgICAgICAgICAg
ICwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luVmlldz4gY3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwg
Y29uc3QgSW50U2l6ZSYsIEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwpAQCAtMjQ0LDE2ICsyNDIsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpOwog
ICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgICAgIC8v
IEhhbHRhYmxlUGx1Z2luCi0gICAgICAgIHZpcnR1YWwgdm9pZCBoYWx0KCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCByZXN0YXJ0KCk7Ci0gICAgICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNX
aW5kb3dlZDsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBwbHVnaW5OYW1lKCkgY29uc3Q7Ci0K
LSAgICAgICAgYm9vbCBpc0hhbHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYWx0ZWQ7IH0KLSAg
ICAgICAgYm9vbCBoYXNCZWVuSGFsdGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNCZWVuSGFsdGVk
OyB9Ci0KICAgICAgICAgc3RhdGljIGJvb2wgaXNDYWxsaW5nUGx1Z2luKCk7CiAKICAgICAgICAg
Ym9vbCBzdGFydCgpOwpAQCAtNDYxLDkgKzQ0OSw2IEBAIHByaXZhdGU6CiAKICAgICAgICAgYm9v
bCBtX2lzSmF2YVNjcmlwdFBhdXNlZDsKIAotICAgICAgICBib29sIG1faXNIYWx0ZWQ7Ci0gICAg
ICAgIGJvb2wgbV9oYXNCZWVuSGFsdGVkOwotCiAgICAgICAgIGJvb2wgbV9oYXZlQ2FsbGVkU2V0
V2luZG93OwogCiAgICAgICAgIHN0YXRpYyBQbHVnaW5WaWV3KiBzX2N1cnJlbnRQbHVnaW5WaWV3
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAJKHJldmlz
aW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCwxNCArMTIwLDYgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1cGRh
dGVQbHVnaW5XaWRnZXQoKQogewogfQogCi12b2lkIFBsdWdpblZpZXc6OmhhbHQoKQotewotfQot
Ci12b2lkIFBsdWdpblZpZXc6OnJlc3RhcnQoKQotewotfQotCiAjaWYgZGVmaW5lZChYUF9VTklY
KSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxl
Rm9jdXNJbkV2ZW50KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdp
blZpZXdHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1Bs
dWdpblZpZXdHdGsuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTIsMTIgKzk1Miw0
IEBAIHZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1EZXN0cm95KCkKICNlbmRpZgogfQogCi12b2lk
IFBsdWdpblZpZXc6OmhhbHQoKQotewotfQotCi12b2lkIFBsdWdpblZpZXc6OnJlc3RhcnQoKQot
ewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0MCwx
NCArMTA0MCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1EZXN0cm95KCkKICAgICAgICAg
WEZyZWVDb2xvcm1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBtX2NvbG9ybWFwKTsKIH0KIAotdm9p
ZCBQbHVnaW5WaWV3OjpoYWx0KCkKLXsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpyZXN0YXJ0KCkK
LXsKLX0KLSAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQbGF0Zm9ybUxheWVy
KiBQbHVnaW5WaWV3OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCShyZXZpc2lvbiA5MjQ4MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDY2LDM0ICsxMDY2LDQgQEAgUGFzc1JlZlB0cjxJbWFnZT4gUGx1Z2luVmlldzo6
c25hcHNob3QoKQogI2VuZGlmCiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6aGFsdCgpCi17Ci0gICAg
QVNTRVJUKCFtX2lzSGFsdGVkKTsKLSAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwotCi0jaWYgIVBM
QVRGT1JNKFFUKQotICAgIC8vIFNob3cgYSBzY3JlZW5zaG90IG9mIHRoZSBwbHVnLWluLgotICAg
IHRvUmVuZGVyV2lkZ2V0KG1fZWxlbWVudC0+cmVuZGVyZXIoKSktPnNob3dTdWJzdGl0dXRlSW1h
Z2Uoc25hcHNob3QoKSk7Ci0jZW5kaWYKLQotICAgIG1faXNIYWx0ZWQgPSB0cnVlOwotICAgIG1f
aGFzQmVlbkhhbHRlZCA9IHRydWU7Ci0KLSAgICBzdG9wKCk7Ci0gICAgcGxhdGZvcm1EZXN0cm95
KCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6cmVzdGFydCgpCi17Ci0gICAgQVNTRVJUKCFtX2lz
U3RhcnRlZCk7Ci0gICAgQVNTRVJUKG1faXNIYWx0ZWQpOwotCi0gICAgLy8gQ2xlYXIgYW55IHN1
YnN0aXR1dGUgaW1hZ2UuCi0gICAgdG9SZW5kZXJXaWRnZXQobV9lbGVtZW50LT5yZW5kZXJlcigp
KS0+c2hvd1N1YnN0aXR1dGVJbWFnZSgwKTsKLQotICAgIG1faXNIYWx0ZWQgPSBmYWxzZTsKLSAg
ICBtX2hhdmVVcGRhdGVkUGx1Z2luV2lkZ2V0ID0gZmFsc2U7Ci0gICAgc3RhcnQoKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiwxMiArMjE2LDYgQEAg
dm9pZCBSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRAogICAgIH0KIH0KIAotdm9p
ZCBSZW5kZXJXaWRnZXQ6OnNob3dTdWJzdGl0dXRlSW1hZ2UoUGFzc1JlZlB0cjxJbWFnZT4gcHJw
SW1hZ2UpCi17Ci0gICAgbV9zdWJzdGl0dXRlSW1hZ2UgPSBwcnBJbWFnZTsKLSAgICByZXBhaW50
KCk7Ci19Ci0KIHZvaWQgUmVuZGVyV2lkZ2V0Ojpub3RpZnlXaWRnZXQoV2lkZ2V0Tm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAobV93aWRnZXQpCkBAIC0yNjgsMjUgKzI2Miwy
MSBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWluCiAgICAgaWYgKG1f
d2lkZ2V0KSB7CiAgICAgICAgIC8vIFRlbGwgdGhlIHdpZGdldCB0byBwYWludCBub3cuICBUaGlz
IGlzIHRoZSBvbmx5IHRpbWUgdGhlIHdpZGdldCBpcyBhbGxvd2VkCiAgICAgICAgIC8vIHRvIHBh
aW50IGl0c2VsZi4gIFRoYXQgd2F5IGl0IHdpbGwgY29tcG9zaXRlIHByb3Blcmx5IHdpdGggei1p
bmRleGVkIGxheWVycy4KLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZUltYWdlKQotICAgICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShtX3N1YnN0aXR1dGVJbWFnZS5nZXQoKSwg
c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBtX3dpZGdldC0+ZnJhbWVSZWN0KCkpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIExheW91dFBvaW50IHdpZGdldExvY2F0aW9uID0gbV93aWRnZXQt
PmZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgICAgICBMYXlvdXRQb2ludCBwYWludExv
Y2F0aW9uKGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xl
ZnQoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KSk7Ci0gICAgICAgICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0Owot
Ci0gICAgICAgICAgICBMYXlvdXRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlv
biAtIHdpZGdldExvY2F0aW9uOwotICAgICAgICAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRz
IGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBl
bmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIsCi0gICAgICAgICAgICAvLyBub3QgdGhlIHJvb3Qu
IEluIHRoaXMgY2FzZSwgc2hpZnQgdGhlIENUTSBhbmQgYWRqdXN0IHRoZSBwYWludFJlY3QgdG8g
YmUgcm9vdC1yZWxhdGl2ZSB0byBmaXggcGx1Zy1pbiBkcmF3aW5nLgotICAgICAgICAgICAgaWYg
KCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkgewotICAgICAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwotICAgICAgICAgICAgICAg
IHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCk7Ci0K
LSAgICAgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpCi0gICAgICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwor
ICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRMb2NhdGlvbiA9IG1fd2lkZ2V0LT5mcmFtZVJlY3Qo
KS5sb2NhdGlvbigpOworICAgICAgICBMYXlvdXRQb2ludCBwYWludExvY2F0aW9uKGFkanVzdGVk
UGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYWRqdXN0ZWRQ
YWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7CisgICAgICAgIExh
eW91dFJlY3QgcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CisKKyAgICAgICAgTGF5b3V0U2l6
ZSB3aWRnZXRQYWludE9mZnNldCA9IHBhaW50TG9jYXRpb24gLSB3aWRnZXRMb2NhdGlvbjsKKyAg
ICAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRzIGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0
eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIs
CisgICAgICAgIC8vIG5vdCB0aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFu
ZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBiZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWlu
IGRyYXdpbmcuCisgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpIHsKKyAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQp
OworICAgICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAg
ICAgfQorICAgICAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVj
dCk7CisKKyAgICAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKKyAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXdpZGdldFBhaW50T2Zmc2V0KTsKIAog
ICAgICAgICBpZiAobV93aWRnZXQtPmlzRnJhbWVWaWV3KCkpIHsKICAgICAgICAgICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV93aWRnZXQuZ2V0KCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkocmV2aXNpb24g
OTI0ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIHZvaWQgd2lkZ2V0UG9zaXRp
b25zVXBkYXRlZCgpOwogICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdDsKIAotICAg
IHZvaWQgc2hvd1N1YnN0aXR1dGVJbWFnZShQYXNzUmVmUHRyPEltYWdlPik7Ci0KICAgICB2b2lk
IG5vdGlmeVdpZGdldChXaWRnZXROb3RpZmljYXRpb24pOwogICAgIAogICAgIHN0YXRpYyB2b2lk
IHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CkBAIC03NCw3ICs3Miw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzZXRXaWRnZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
U2l6ZSYpOwogCiAgICAgUmVmUHRyPFdpZGdldD4gbV93aWRnZXQ7Ci0gICAgUmVmUHRyPEltYWdl
PiBtX3N1YnN0aXR1dGVJbWFnZTsKICAgICBGcmFtZVZpZXcqIG1fZnJhbWVWaWV3OwogICAgIElu
dFJlY3QgbV9jbGlwUmVjdDsgLy8gVGhlIHJlY3RhbmdsZSBuZWVkcyB0byByZW1haW4gY29ycmVj
dCBhZnRlciBzY3JvbGxpbmcsIHNvIGl0IGlzIHN0b3JlZCBpbiBjb250ZW50IHZpZXcgY29vcmRp
bmF0ZXMsIGFuZCBub3QgY2xpcHBlZCB0byB3aW5kb3cuCiAgICAgaW50IG1fcmVmQ291bnQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA4LTA1ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGVs
ZXRlZCBmaWxlcyBmcm9tIFhjb2RlIHByb2plY3QuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0wNy0yOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzcWwgdG8gc3ZuOmlnbm9yZSBhbmQgcmVtb3ZlIGFw
cC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw2IEBACiAJCTA2NUFE
NUE0MEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NUFENUEyMEIwQzMyQzcwMDVB
MkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSAqLzsgfTsKIAkJMDY2OTNEREMwQkZCQTg1
MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OTNEREEwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYklu
c3BlY3RvckNsaWVudC5oICovOyB9OwogCQkwNjY5M0RERDBCRkJBODUyMDAyMTYwNzIgLyogV2Vi
SW5zcGVjdG9yQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDY2OTNEREIwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5t
bSAqLzsgfTsKLQkJMEEyRDg3RkQxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEEy
RDg3RkIxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5oICovOyB9Owot
CQkwQTJEODdGRTEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEEyRDg3RkMxMDdB
RjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5tbSAqLzsgfTsKIAkJMEFCNzUy
MzcwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFCNzUy
MzUwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5m
by5oICovOyB9OwogCQkwQUI3NTIzODBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250
YWluZXJDaGVja0NvbnRleHRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29u
dGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSAqLzsgfTsKIAkJMEFDRTkxNzMxMEZFNDdFMzAwOTZB
NDVGIC8qIE9wZW5HTC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQUNFOTE3MjEwRkU0N0UzMDA5NkE0NUYgLyogT3BlbkdMLmZyYW1l
d29yayAqLzsgfTsKQEAgLTM4OSw4ICszODcsNiBAQAogCQkwNjVBRDVBMjBCMEMzMkM3MDA1QTJC
MUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA2NjkzRERBMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNjY5M0REQjBCRkJBODUyMDAyMTYw
NzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwQTJEODdGQjEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsdWdpbkhhbHRlckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwQTJEODdGQzEwN0FGNTJCMDBDRERF
RTMgLyogV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQUI3NTIzNTBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250
YWluZXJDaGVja0NvbnRleHRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQUI3NTIzNjBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250
YWluZXJDaGVja0NvbnRleHRJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwQUNFOTE3MjEwRkU0N0UzMDA5NkE0NUYgLyogT3BlbkdM
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gT3BlbkdMLmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07CkBAIC0xMzIyLDggKzEzMTgsNiBAQAogCQkJCTg0NzIzQkU0MDU2RDcx
OUUwMDQ0QkZFQSAvKiBXZWJLZXlHZW5lcmF0b3IubW0gKi8sCiAJCQkJMUFBODc5QjQxMUNCRTlC
RjAwM0M2NjRGIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oICovLAogCQkJCTFBQTg3OUI1MTFD
QkU5QkYwMDNDNjY0RiAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gKi8sCi0JCQkJMEEyRDg3
RkIxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBsdWdpbkhhbHRlckNsaWVudC5oICovLAotCQkJCTBB
MkQ4N0ZDMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGllbnQubW0gKi8sCiAJ
CQkJQTVERUZDMDcxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tICovLAog
CQkJCUE1REVGQzA4MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFs
LmggKi8sCiAJCQkJQTVERUZDMDkxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2lu
UHJpdmF0ZS5oICovLApAQCAtMTU3NSw3ICsxNTY5LDYgQEAKIAkJCQk5Mzk4MTBCMDA4MjRCRjAx
MDA4REYwMzggLyogV2ViUGx1Z2luQ29udGFpbmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM5ODEwMzcwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOTgxMDM4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5EYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEEyRDg3RkQxMDdBRjUyQjAwQ0RERUUzIC8qIFdl
YlBsdWdpbkhhbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMzkwODI0QkYw
MTAwOERGMDM4IC8qIFdlYlBsdWdpblBhY2thZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyNUY4
ODE1MDlGOTdFOEEwMDQyM0E0MCAvKiBXZWJQbHVnaW5Qcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTc3QjAyRTBFRTc3MzA1MDBDOEExRjkgLyogV2ViUGx1Z2luUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xOTY3LDcgKzE5NjAsNiBAQAogCQkJCTkzOTgxMTI2MDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXJDaGVjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTgxMERBMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM5ODEwREIwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkRhdGFiYXNl
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMEEyRDg3RkUxMDdBRjUyQjAwQ0RERUUzIC8qIFdlYlBs
dWdpbkhhbHRlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMERDMDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJQbHVnaW5QYWNrYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3N0Iw
MkYwRUU3NzMwNTAwQzhBMUY5IC8qIFdlYlBsdWdpblJlcXVlc3QubSBpbiBTb3VyY2VzICovLAog
CQkJCTIyNDEwMEY5MDkxODE5MDEwMEQyRDI2NiAvKiBXZWJQbHVnaW5zUHJpdmF0ZS5tIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisy
MDExLTA4LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgcGx1Zy1pbiBoYWx0ZXIgYW5kIGFzc29jaWF0ZWQgY2xhc3Nl
cy4KKworICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oOgorICAg
ICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1b
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBpbml0V2l0aEZyYW1lOnBsdWdpblBhY2thZ2U6VVJM
OmJhc2VVUkw6TUlNRVR5cGU6YXR0cmlidXRlS2V5czphdHRyaWJ1dGVWYWx1ZXM6bG9hZE1hbnVh
bGx5OmVsZW1lbnQ6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcgc3RhcnRdKToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBzdG9w
XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1t
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6
CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJl
ZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1
bWVudFZpZXdzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTA4LTA0ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRnV0dXJlLXByb29mIFhjb2RlIGNv
bmZpZ3VyYXRpb24gc2V0dGluZ3MuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAkocmV2aXNpb24gOTI0ODIpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiB9CiAKLWNsYXNzIFdlYkhhbHRhYmxlUGx1Z2luOwot
CiAvLyBBbHNvIGRlY2xhcmVkIGluIFdlYkNvcmUvV2lkZ2V0TWFjLm1tCiBAaW50ZXJmYWNlIE5T
VmlldyAoV2lkZ2V0KQogLSAodm9pZCl2aXNpYmxlUmVjdERpZENoYW5nZTsKQEAgLTY4LDggKzY2
LDYgQEAgQGludGVyZmFjZSBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IDogTgogICAgIEJPT0wg
X2hhc0ZvY3VzOwogICAgIEJPT0wgX2lzQ29tcGxldGVseU9ic2N1cmVkOwogICAgIEJPT0wgX2lz
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKLSAgICBCT09MIF9pc0hhbHRlZDsKLSAgICBCT09MIF9o
YXNCZWVuSGFsdGVkOwogICAgIEJPT0wgX3NuYXBzaG90dGluZzsKICAgICAKICAgICBSZWZQdHI8
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+IF9lbGVtZW50OwpAQCAtNzgsOCArNzQsNiBAQCBA
aW50ZXJmYWNlIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgOiBOCiAgICAgUmV0YWluUHRyPE5T
VVJMPiBfc291cmNlVVJMOwogICAgIFJldGFpblB0cjxOU0ltYWdlPiBfY2FjaGVkU25hcHNob3Q7
CiAgICAgCi0gICAgT3duUHRyPFdlYkhhbHRhYmxlUGx1Z2luPiBfaGFsdGFibGU7Ci0gICAgCiAg
ICAgTlNUcmFja2luZ1JlY3RUYWcgX3RyYWNraW5nVGFnOwogfQogCkBAIC0xMjIsMTEgKzExNiw2
IEBAIEBpbnRlcmZhY2UgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyA6IE4KIC0gKHZvaWQpc3Rh
cnQ7CiAtICh2b2lkKXN0b3A7CiAKLS0gKHZvaWQpaGFsdDsKLS0gKHZvaWQpcmVzdW1lRnJvbUhh
bHQ7Ci0tIChCT09MKWlzSGFsdGVkOwotLSAoQk9PTCloYXNCZWVuSGFsdGVkOwotCiAtICh2b2lk
KWFkZFdpbmRvd09ic2VydmVyczsKIC0gKHZvaWQpcmVtb3ZlV2luZG93T2JzZXJ2ZXJzOwogLSAo
Qk9PTClzaG91bGRDbGlwT3V0UGx1Z2luOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSGFsdGFibGVQbHVnaW4u
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9u
U3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtNzEsNDggKzcwLDYg
QEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIENsZWFyU3Vic3RpdAogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotY2xhc3MgV2ViSGFsdGFibGVQbHVnaW4gOiBwdWJsaWMgSGFsdGFi
bGVQbHVnaW4gewotcHVibGljOgotICAgIFdlYkhhbHRhYmxlUGx1Z2luKFdlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcqIHZpZXcpCi0gICAgICAgIDogbV92aWV3KHZpZXcpCi0gICAgewotICAgIH0K
LSAgICAKLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGhhbHQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVzdGFydCgpOwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z2luTmFt
ZSgpIGNvbnN0OwotCi0gICAgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyogbV92aWV3OwotfTsK
LQotdm9pZCBXZWJIYWx0YWJsZVBsdWdpbjo6aGFsdCgpCi17Ci0gICAgW21fdmlldyBoYWx0XTsK
LX0KLQotdm9pZCBXZWJIYWx0YWJsZVBsdWdpbjo6cmVzdGFydCgpCi17IAotICAgIFttX3ZpZXcg
cmVzdW1lRnJvbUhhbHRdOwotfQotICAgIAotTm9kZSogV2ViSGFsdGFibGVQbHVnaW46Om5vZGUo
KSBjb25zdAotewotICAgIHJldHVybiBbbV92aWV3IGVsZW1lbnRdOwotfQotCi1ib29sIFdlYkhh
bHRhYmxlUGx1Z2luOjppc1dpbmRvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLVN0cmluZyBXZWJIYWx0YWJsZVBsdWdpbjo6cGx1Z2luTmFtZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFtbbV92aWV3IHBsdWdpblBhY2thZ2VdIHBsdWdpbkluZm9dLm5hbWU7Ci19Ci0KIEBp
bXBsZW1lbnRhdGlvbiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3CiAKICsgKHZvaWQpaW5pdGlh
bGl6ZQpAQCAtMTYzLDcgKzEyMCw2IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFt
ZQogICAgICAgICBfbW9kZSA9IE5QX0VNQkVEOwogICAgIAogICAgIF9sb2FkTWFudWFsbHkgPSBs
b2FkTWFudWFsbHk7Ci0gICAgX2hhbHRhYmxlID0gYWRvcHRQdHIobmV3IFdlYkhhbHRhYmxlUGx1
Z2luKHNlbGYpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNDU0LDcgKzQxMCw2IEBAIC0g
KHZvaWQpc3RhcnQKICAgICB9CiAgICAgCiAgICAgX2lzU3RhcnRlZCA9IFlFUzsKLSAgICBwYWdl
LT5kaWRTdGFydFBsdWdpbihfaGFsdGFibGUuZ2V0KCkpOwogCiAgICAgW1tzZWxmIHdlYlZpZXdd
IGFkZFBsdWdpbkluc3RhbmNlVmlldzpzZWxmXTsKIApAQCAtNDg0LDExICs0MzksNiBAQCAtICh2
b2lkKXN0b3AKICAgICBpZiAoIV9pc1N0YXJ0ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChGcmFtZSogZnJhbWUgPSBjb3JlKFtzZWxmIHdlYkZyYW1lXSkpIHsKLSAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+ZGlkU3RvcFBsdWdp
bihfaGFsdGFibGUuZ2V0KCkpOwotICAgIH0KLSAgICAKICAgICBfaXNTdGFydGVkID0gTk87CiAg
ICAgCiAgICAgW1tzZWxmIHdlYlZpZXddIHJlbW92ZVBsdWdpbkluc3RhbmNlVmlldzpzZWxmXTsK
QEAgLTUwMiw2MSArNDUyLDYgQEAgLSAodm9pZClzdG9wCiAgICAgW3NlbGYgZGVzdHJveVBsdWdp
bl07CiB9CiAKLS0gKHZvaWQpaGFsdAotewotICAgIEFTU0VSVCghX2lzSGFsdGVkKTsKLSAgICBB
U1NFUlQoX2lzU3RhcnRlZCk7Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtzZWxmIGVsZW1lbnRd
OwotI2lmbmRlZiBCVUlMRElOR19PTl9MRU9QQVJECi0gICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0g
Q0dJbWFnZVJldGFpbihbY29yZShbc2VsZiB3ZWJGcmFtZV0pLT5ub2RlSW1hZ2UoZWxlbWVudCku
Z2V0KCkgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSk7
Ci0jZWxzZQotICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBpbWFnZVJlZihBZG9wdENG
LCBDR0ltYWdlU291cmNlQ3JlYXRlV2l0aERhdGEoKENGRGF0YVJlZilbY29yZShbc2VsZiB3ZWJG
cmFtZV0pLT5ub2RlSW1hZ2UoZWxlbWVudCkuZ2V0KCkgVElGRlJlcHJlc2VudGF0aW9uXSwgMCkp
OwotICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5k
ZXgoaW1hZ2VSZWYuZ2V0KCksIDAsIDApOwotI2VuZGlmCi0gICAgQVNTRVJUKGNnSW1hZ2UpOwot
ICAgIAotICAgIC8vIEJpdG1hcEltYWdlIHdpbGwgcmVsZWFzZSB0aGUgcGFzc2VkIGluIENHSW1h
Z2Ugb24gZGVzdHJ1Y3Rpb24uCi0gICAgUmVmUHRyPEltYWdlPiBub2RlSW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKGNnSW1hZ2UpOwotICAgIEFTU0VSVChlbGVtZW50LT5yZW5kZXJlcigpKTsK
LSAgICB0b1JlbmRlcldpZGdldChlbGVtZW50LT5yZW5kZXJlcigpKS0+c2hvd1N1YnN0aXR1dGVJ
bWFnZShub2RlSW1hZ2UpOwotICAgIFtzZWxmIHN0b3BdOwotICAgIF9pc0hhbHRlZCA9IFlFUzsg
IAotICAgIF9oYXNCZWVuSGFsdGVkID0gWUVTOwotfQotCi0tICh2b2lkKV9jbGVhclN1YnN0aXR1
dGVJbWFnZQotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBbc2VsZiBlbGVtZW50XTsKLSAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT5zaG93U3Vic3Rp
dHV0ZUltYWdlKDApOwotfQotCi0tICh2b2lkKXJlc3VtZUZyb21IYWx0Ci17Ci0gICAgQVNTRVJU
KF9pc0hhbHRlZCk7Ci0gICAgQVNTRVJUKCFfaXNTdGFydGVkKTsKLSAgICBbc2VsZiBzdGFydF07
Ci0gICAgCi0gICAgaWYgKF9pc1N0YXJ0ZWQpCi0gICAgICAgIF9pc0hhbHRlZCA9IE5POwotICAg
IAotICAgIEFTU0VSVChbc2VsZiBlbGVtZW50XS0+cmVuZGVyZXIoKSk7Ci0gICAgLy8gRklYTUUg
NzQxNzQ4NDogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHBsdWctaW5zIG5vdCBkcmF3aW5nIGlt
bWVkaWF0ZWx5LiBXZSdkIGxpa2UgdG8gZGV0ZWN0IHdoZW4gdGhlCi0gICAgLy8gcGx1Zy1pbiBh
Y3R1YWxseSBkcmF3cyBpbnN0ZWFkIG9mIGp1c3QgYXNzdW1pbmcgaXQgd2lsbCBkbyBzbyB3aXRo
aW4gMC41IHNlY29uZHMgb2YgYmVpbmcgcmVzdGFydGVkLgotICAgIFtzZWxmIHBlcmZvcm1TZWxl
Y3RvcjpAc2VsZWN0b3IoX2NsZWFyU3Vic3RpdHV0ZUltYWdlKSB3aXRoT2JqZWN0Om5pbCBhZnRl
ckRlbGF5OkNsZWFyU3Vic3RpdHV0ZUltYWdlRGVsYXldOwotfQotCi0tIChCT09MKWlzSGFsdGVk
Ci17Ci0gICAgcmV0dXJuIF9pc0hhbHRlZDsKLX0KLQogLSAoQk9PTClzaG91bGRDbGlwT3V0UGx1
Z2luCiB7CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CkBAIC01OTYsMTEg
KzQ5MSw2IEBAIC0gKHZvaWQpY2xlYXJDYWNoZWRTbmFwc2hvdAogICAgIF9jYWNoZWRTbmFwc2hv
dC5jbGVhcigpOwogfQogCi0tIChCT09MKWhhc0JlZW5IYWx0ZWQKLXsKLSAgICByZXR1cm4gX2hh
c0JlZW5IYWx0ZWQ7Ci19Ci0KIC0gKHZvaWQpdmlld1dpbGxNb3ZlVG9XaW5kb3c6KE5TV2luZG93
ICopbmV3V2luZG93CiB7CiAgICAgLy8gV2UgbXVzdCByZW1vdmUgdGhlIHRyYWNraW5nIHJlY3Qg
YmVmb3JlIHdlIG1vdmUgdG8gdGhlIG5ldyB3aW5kb3cuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJDbGllbnQuaAko
cmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5IYWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNv
cmUvUGx1Z2luSGFsdGVyQ2xpZW50Lmg+Ci0jaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgTm9kZTsKLX0KLQotQGNsYXNzIFdlYlZpZXc7Ci0K
LWNsYXNzIFdlYlBsdWdpbkhhbHRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5IYWx0
ZXJDbGllbnQgewotcHVibGljOgotICAgIFdlYlBsdWdpbkhhbHRlckNsaWVudChXZWJWaWV3ICop
OwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYWx0UGx1Z2luKFdlYkNvcmU6Ok5vZGUq
LCBib29sLCBjb25zdCBXVEY6OlN0cmluZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBlbmFi
bGVkKCkgY29uc3Q7Ci0gICAgCi1wcml2YXRlOgotICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKLX07
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJD
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSGFsdGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbXBvcnQgIldlYlBsdWdpbkhhbHRlckNsaWVudC5oIgotCi0jaW1wb3J0
ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoaW5nLmgiCi0jaW1wb3J0ICJXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3Jt
U3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1XZWJQbHVnaW5IYWx0ZXJD
bGllbnQ6OldlYlBsdWdpbkhhbHRlckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQotICAgIDogbV93
ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgQVNTRVJUX0FSRyh3ZWJWaWV3LCB3ZWJWaWV3KTsKLX0K
LQotYm9vbCBXZWJQbHVnaW5IYWx0ZXJDbGllbnQ6OnNob3VsZEhhbHRQbHVnaW4oTm9kZSogcGx1
Z2luTm9kZSwgYm9vbCBpc1dpbmRvd2VkLCBjb25zdCBTdHJpbmcmIHBsdWdpbk5hbWUpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUX0FSRyhwbHVnaW5Ob2RlLCBwbHVnaW5Ob2RlKTsKLSAgICByZXR1cm4g
Q2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKE5PLCBtX3dlYlZpZXcsIEBzZWxlY3Rvcih3
ZWJWaWV3OnNob3VsZEhhbHRQbHVnaW46aXNXaW5kb3dlZDpwbHVnaW5OYW1lOiksIGtpdChwbHVn
aW5Ob2RlKSwgaXNXaW5kb3dlZCwgKE5TU3RyaW5nICopcGx1Z2luTmFtZSk7Ci19Ci0KLWJvb2wg
V2ViUGx1Z2luSGFsdGVyQ2xpZW50OjplbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW1tt
X3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
OnNob3VsZEhhbHRQbHVnaW46aXNXaW5kb3dlZDpwbHVnaW5OYW1lOildOwotfQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDYgQEAKICNk
ZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkF1ZGlv
RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViR0xFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktp
dFdlYkdMRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQiCi0jZGVmaW5l
IFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSBAIldlYktpdFBsdWdpbkFs
bG93ZWRSdW5UaW1lIgogI2RlZmluZSBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSBAIldlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRQYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQiCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDky
NDgyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzY3LDcgKzM2Nyw2IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFNob3dSZXBhaW50Q291bnRl
clByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAg
V2ViS2l0V2ViR0xFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhCb29sOk5PXSwgICBXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZFByZWZlcmVu
Y2VLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6NF0sIFdlYktp
dFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5j
ZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6Tk9dLCAgV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtl
eSwKQEAgLTEzMzMsMTYgKzEzMzIsNiBAQCAtICh2b2lkKXNldEFjY2VsZXJhdGVkMmRDYW52YXNF
bmFibGVkOihCCiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRB
Y2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZFByZWZlcmVuY2VLZXldOwogfQogCi0tICh1bnNpZ25l
ZClwbHVnaW5BbGxvd2VkUnVuVGltZQotewotICAgIHJldHVybiBbc2VsZiBfaW50ZWdlclZhbHVl
Rm9yS2V5OldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleV07Ci19Ci0KLS0g
KHZvaWQpc2V0UGx1Z2luQWxsb3dlZFJ1blRpbWU6KHVuc2lnbmVkKWFsbG93ZWRSdW5UaW1lCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6YWxsb3dlZFJ1blRpbWUgZm9yS2V5
OldlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleV07Ci19Ci0KIC0gKEJPT0wp
aXNGcmFtZUZsYXR0ZW5pbmdFbmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVG
b3JLZXk6V2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXldOwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5o
CShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw5ICsxMjYsNiBAQCBAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogLSAoQk9PTClleHBlcmltZW50YWxOb3Rp
ZmljYXRpb25zRW5hYmxlZDsKIC0gKHZvaWQpc2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0Vu
YWJsZWQ6KEJPT0wpbm90aWZpY2F0aW9uc0VuYWJsZWQ7CiAKLS0gKHVuc2lnbmVkKXBsdWdpbkFs
bG93ZWRSdW5UaW1lOwotLSAodm9pZClzZXRQbHVnaW5BbGxvd2VkUnVuVGltZToodW5zaWduZWQp
YWxsb3dlZFJ1blRpbWU7Ci0KIC0gKEJPT0wpaXNGcmFtZUZsYXR0ZW5pbmdFbmFibGVkOwogLSAo
dm9pZClzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkOihCT09MKWZsYWc7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw2
IEBACiAjaW1wb3J0ICJXZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAi
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJXZWJQbHVnaW5EYXRhYmFzZS5oIgot
I2ltcG9ydCAiV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJQb2xpY3lEZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCiAjaW1wb3J0ICJX
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKQEAgLTc0NCw3ICs3NDMsNiBAQCAtICh2b2lkKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50
ID0gbmV3IFdlYkVkaXRvckNsaWVudChzZWxmKTsKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50
ID0gbmV3IFdlYkRyYWdDbGllbnQoc2VsZik7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xp
ZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKLSAgICBwYWdlQ2xpZW50cy5wbHVn
aW5IYWx0ZXJDbGllbnQgPSBhZG9wdFB0cihuZXcgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KHNlbGYp
KTsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIHBhZ2VDbGllbnRz
Lmdlb2xvY2F0aW9uQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHNlbGYpOwogI2Vu
ZGlmCkBAIC0xNTYzLDcgKzE1NjEsNiBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdl
YlByZWZlcmVuCiAgICAgc2V0dGluZ3MtPnNldENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmco
W3ByZWZlcmVuY2VzIGNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmddKTsgICAgCiAgICAgc2V0
dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoW3ByZWZlcmVuY2VzIHNob3dEZWJ1Z0JvcmRlcnNd
KTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKFtwcmVmZXJlbmNlcyBzaG93
UmVwYWludENvdW50ZXJdKTsKLSAgICBzZXR0aW5ncy0+c2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUo
W3ByZWZlcmVuY2VzIHBsdWdpbkFsbG93ZWRSdW5UaW1lXSk7CiAgICAgc2V0dGluZ3MtPnNldFdl
YkF1ZGlvRW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViQXVkaW9FbmFibGVkXSk7CiAgICAgc2V0dGlu
Z3MtPnNldFdlYkdMRW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViR0xFbmFibGVkXSk7CiAgICAgc2V0
dGluZ3MtPnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKFtwcmVmZXJlbmNlcyBhY2NlbGVy
YXRlZDJkQ2FudmFzRW5hYmxlZF0pOwpAQCAtMjUzOSw1OSArMjUzNiw2IEBAIC0gKEJPT0wpX2lu
Y2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXkKICAgICByZXR1cm4gX3ByaXZhdGUtPmluY2x1
ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOwogfQogCi0j
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi1zdGF0aWMgV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldyAqX3BsdWdpblZpZXdGb3JOb2RlKERPTU5vZGUgKm5vZGUpCi17Ci0gICAgaWYgKCFu
b2RlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIE5vZGUqIGNvcmVOb2RlID0gY29y
ZShub2RlKTsKLSAgICBpZiAoIWNvcmVOb2RlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNXaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+
d2lkZ2V0KCk7Ci0gICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1ZpZXcgKnZpZXcgPSB3aWRnZXQtPnBs
YXRmb3JtV2lkZ2V0KCk7Ci0gICAgaWYgKCFbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
cmV0dXJuIChXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3ICopdmlldzsKLX0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotKyAoQk9PTClfaXNOb2RlSGFsdGVkUGx1Z2lu
OihET01Ob2RlICopbm9kZQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
IHJldHVybiBbX3BsdWdpblZpZXdGb3JOb2RlKG5vZGUpIGlzSGFsdGVkXTsKLSNlbHNlCi0gICAg
cmV0dXJuIFlFUzsKLSNlbmRpZgotfQotCi0rIChCT09MKV9oYXNQbHVnaW5Gb3JOb2RlQmVlbkhh
bHRlZDooRE9NTm9kZSAqKW5vZGUKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LSAgICByZXR1cm4gW19wbHVnaW5WaWV3Rm9yTm9kZShub2RlKSBoYXNCZWVuSGFsdGVkXTsKLSNl
bHNlCi0gICAgcmV0dXJuIFlFUzsKLSNlbmRpZgotfQotKyAodm9pZClfcmVzdGFydEhhbHRlZFBs
dWdpbkZvck5vZGU6KERPTU5vZGUgKilub2RlCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCi0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgW19wbHVn
aW5WaWV3Rm9yTm9kZShub2RlKSByZXN1bWVGcm9tSGFsdF07Ci0jZW5kaWYKLX0KLQogLSAoTlNQ
YXN0ZWJvYXJkICopX2luc2VydGlvblBhc3RlYm9hcmQKIHsKICAgICByZXR1cm4gX3ByaXZhdGUg
PyBfcHJpdmF0ZS0+aW5zZXJ0aW9uUGFzdGVib2FyZCA6IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDkyNDgyKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MDMsMTEgKzUwMyw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAo
dm9pZClfc2V0SW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9C
aXRtYXA6KEJPT0wpZmxhZzsKIC0gKEJPT0wpX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdM
YXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOwogCi0vLyBTUEkgZm9yIFBsdWdpbkhhbHRlcgotKyAo
Qk9PTClfaXNOb2RlSGFsdGVkUGx1Z2luOihET01Ob2RlICopbm9kZTsKLSsgKEJPT0wpX2hhc1Bs
dWdpbkZvck5vZGVCZWVuSGFsdGVkOihET01Ob2RlICopbm9kZTsKLSsgKHZvaWQpX3Jlc3RhcnRI
YWx0ZWRQbHVnaW5Gb3JOb2RlOihET01Ob2RlICopbm9kZTsKLQogLy8gV2hpY2ggcGFzdGVib2Fy
ZCB0ZXh0IGlzIGNvbWluZyBmcm9tIGluIGVkaXRpbmcgZGVsZWdhdGUgbWV0aG9kcyBzdWNoIGFz
IHNob3VsZEluc2VydE5vZGUuCiAtIChOU1Bhc3RlYm9hcmQgKilfaW5zZXJ0aW9uUGFzdGVib2Fy
ZDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gOTI0ODQpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxMS0w
OC0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bW92ZSBQbHVnaW5IYWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIHBsdWctaW4gaGFsdGVyIGFuZCBhc3NvY2lhdGVkIGNsYXNzZXMuCisK
KyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5pZGw6IFJlbW92
ZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbDoKKyAg
ICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJm
YWNlcy9XZWJLaXQuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRl
ckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0LnZjcHJvai9JbnRlcmZh
Y2VzLnZjcHJvajoKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2o6CisgICAg
ICAgICogV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJlZmVyZW5j
ZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGlu
Z3MpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpjbG9zZSk6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZy
YW1lKToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJWaWV3Ojp1bnVzZWQxKToKKyAgICAgICAgKFdlYlZpZXc6OnVudXNlZDIpOgorICAg
ICAgICAoV2ViVmlldzo6dW51c2VkMyk6CisgICAgICAgIChXZWJWaWV3Ojp1bnVzZWQ0KToKKyAg
ICAgICAgKFdlYlZpZXc6OnVudXNlZDUpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxMS0w
OC0wNCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgd2hldGhlciBBVkZvdW5kYXRpb24gaXMgZW5hYmxl
ZCB0byBJV2ViUHJlZmVyZW5jZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsOCArMTM2
LDYgQEAKIAogI2RlZmluZSBXZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1ByZWZlcmVuY2VL
ZXkgIldlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzIgogCi0jZGVmaW5lIFdlYktpdFBsdWdp
bkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSAiV2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWUi
Ci0KICNkZWZpbmUgV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgIldl
YktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQiCiAKICNkZWZpbmUgV2ViS2l0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlz
aW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTYsOSArMjU2LDYgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlh
bGl6ZURlZmF1bHRTZQogCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGx1Z2luQWxsb3dlZFJ1blRpbWUo
QWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIldSIpLCBudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJlZmVyZW5jZUtleSks
IHBsdWdpbkFsbG93ZWRSdW5UaW1lLmdldCgpKTsKLQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIAogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CkBAIC0xNDkwLDE4ICsxNDg3LDYgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlcwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFdlYlByZWZlcmVuY2VzOjpzZXRQbHVnaW5BbGxvd2VkUnVuVGltZShVSU5UIGFsbG93ZWRSdW5U
aW1lKQotewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRQbHVnaW5BbGxvd2VkUnVu
VGltZVByZWZlcmVuY2VLZXkpLCBhbGxvd2VkUnVuVGltZSk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19
Ci0KLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnBsdWdpbkFsbG93ZWRSdW5UaW1lKFVJTlQqIGFs
bG93ZWRSdW5UaW1lKQotewotICAgICphbGxvd2VkUnVuVGltZSA9IGludGVnZXJWYWx1ZUZvcktl
eShDRlNUUihXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXkpKTsKLSAgICBy
ZXR1cm4gU19PSzsKLX0KLQogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0UHJlZmVyZW5jZUZv
clRlc3QoQlNUUiBrZXksIEJTVFIgdmFsdWUpCiB7CiAgICAgaWYgKCFTeXNTdHJpbmdMZW4oa2V5
KSB8fCAhU3lzU3RyaW5nTGVuKHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZXMuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsMTIgKzQwNCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1l
cnMoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiB1c2VIaWdoUmVzb2x1dGlvblRpbWVy
cyk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UGx1Z2luQWxs
b3dlZFJ1blRpbWUoCi0gICAgLyogW2luXSAqLyBVSU5UIGFsbG93ZWRSdW5UaW1lKTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwbHVnaW5BbGxvd2VkUnVuVGltZSgK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQqIGFsbG93ZWRSdW5UaW1lKTsKLQogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
CiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKIApJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHJldmlzaW9uIDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJXZWJNdXRh
YmxlVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2lu
Y2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIldlYlBsdWdpbkhhbHRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViU2Ny
aXB0V29ybGQuaCIKICNpbmNsdWRlICJyZXNvdXJjZS5oIgpAQCAtNzA4LDcgKzcwNyw2IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2xvc2UKICAgICBzZXRSZXNvdXJjZUxv
YWREZWxlZ2F0ZSgwKTsKICAgICBzZXRVSURlbGVnYXRlKDApOwogICAgIHNldEZvcm1EZWxlZ2F0
ZSgwKTsKLSAgICBzZXRQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSgwKTsKIAogICAgIGlmIChtX3dlYklu
c3BlY3RvcikKICAgICAgICAgbV93ZWJJbnNwZWN0b3ItPndlYlZpZXdDbG9zZWQoKTsKQEAgLTI2
NDMsNyArMjY0MSw2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcK
ICAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMp
OwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsK
ICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50
KHRoaXMpOwotICAgIHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVudCA9IGFkb3B0UHRyKG5l
dyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQodGhpcykpOwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCiAgICAgcGFnZUNsaWVudHMuZ2VvbG9jYXRpb25DbGllbnQgPSBuZXcgV2Vi
R2VvbG9jYXRpb25DbGllbnQodGhpcyk7CiAjZW5kaWYKQEAgLTQ4MDYsMTIgKzQ4MDMsNiBAQCBI
UkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgICAgIHJldHVybiBo
cjsKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoZW5hYmxl
ZCk7CiAKLSAgICBVSU5UIHJ1blRpbWU7Ci0gICAgaHIgPSBwcmVmc1ByaXZhdGUtPnBsdWdpbkFs
bG93ZWRSdW5UaW1lKCZydW5UaW1lKTsKLSAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0
dXJuIGhyOwotICAgIHNldHRpbmdzLT5zZXRQbHVnaW5BbGxvd2VkUnVuVGltZShydW5UaW1lKTsK
LQogICAgIGhyID0gcHJlZnNQcml2YXRlLT5pc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoJmVuYWJs
ZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkBAIC02NDY3LDg1
ICs2NDU4LDM0IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZygKIH0K
ICNlbmRpZgogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFBsdWdpbkhh
bHRlckRlbGVnYXRlKElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZSogZCkKLXsKLSAgICBtX3BsdWdp
bkhhbHRlckRlbGVnYXRlID0gZDsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwbHVnaW5IYWx0ZXJEZWxlZ2F0ZShJV2ViUGx1Z2luSGFs
dGVyRGVsZWdhdGUqKiBkKQorSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQxKCkKIHsKLSAgICBpZiAo
IWQpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICBpZiAoIW1fcGx1Z2luSGFsdGVy
RGVsZWdhdGUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAgICByZXR1cm4gbV9wbHVnaW5I
YWx0ZXJEZWxlZ2F0ZS5jb3B5UmVmVG8oZCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIEVfRkFJTDsKIH0KIAotc3RhdGljIFBsdWdpblZpZXcqIHBsdWdpblZpZXdGb3JO
b2RlKElET01Ob2RlKiBkb21Ob2RlKQorSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQyKCkKIHsKLSAg
ICBDT01QdHI8RE9NTm9kZT4gd2ViS2l0RE9NTm9kZShRdWVyeSwgZG9tTm9kZSk7Ci0gICAgaWYg
KCF3ZWJLaXRET01Ob2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIE5vZGUqIG5vZGUgPSB3
ZWJLaXRET01Ob2RlLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlm
ICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQo
KTsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc1BsdWdpblZpZXcoKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHdpZGdldCk7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAotSFJF
U1VMVCBXZWJWaWV3Ojppc05vZGVIYWx0ZWRQbHVnaW4oSURPTU5vZGUqIGRvbU5vZGUsIEJPT0wq
IHJlc3VsdCkKK0hSRVNVTFQgV2ViVmlldzo6dW51c2VkMygpCiB7Ci0gICAgaWYgKCFkb21Ob2Rl
IHx8ICFyZXN1bHQpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICAqcmVzdWx0ID0g
RkFMU0U7Ci0KLSAgICBQbHVnaW5WaWV3KiB2aWV3ID0gcGx1Z2luVmlld0Zvck5vZGUoZG9tTm9k
ZSk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgKnJlc3Vs
dCA9IHZpZXctPmlzSGFsdGVkKCk7Ci0gICAgcmV0dXJuIFNfT0s7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjpyZXN0
YXJ0SGFsdGVkUGx1Z2luRm9yTm9kZShJRE9NTm9kZSogZG9tTm9kZSkKK0hSRVNVTFQgV2ViVmll
dzo6dW51c2VkNCgpCiB7Ci0gICAgaWYgKCFkb21Ob2RlKQotICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwotCi0gICAgUGx1Z2luVmlldyogdmlldyA9IHBsdWdpblZpZXdGb3JOb2RlKGRvbU5vZGUp
OwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgIHZpZXctPnJl
c3RhcnQoKTsKLSAgICByZXR1cm4gU19PSzsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6Omhhc1BsdWdpbkZvck5vZGVC
ZWVuSGFsdGVkKElET01Ob2RlKiBkb21Ob2RlLCBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYlZp
ZXc6OnVudXNlZDUoKQogewotICAgIGlmICghZG9tTm9kZSB8fCAhcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgKnJlc3VsdCA9IEZBTFNFOwotCi0gICAgUGx1Z2luVmll
dyogdmlldyA9IHBsdWdpblZpZXdGb3JOb2RlKGRvbU5vZGUpOwotICAgIGlmICghdmlldykKLSAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgICpyZXN1bHQgPSB2aWV3LT5oYXNCZWVuSGFsdGVk
KCk7Ci0gICAgcmV0dXJuIFNfT0s7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEVfRkFJTDsKIH0KIAogSFJFU1VMVCBXZWJWaWV3OjpzZXRHZW9sb2NhdGlvblByb3ZpZGVy
KElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiBsb2NhdGlvblByb3ZpZGVyKQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuaAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgwMiw4ICs4MDIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Hcm91cChC
U1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxkKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwKEJTVFIgZ3JvdXBO
YW1lKTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQbHVnaW5I
YWx0ZXJEZWxlZ2F0ZShJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqKTsKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGx1Z2luSGFsdGVyRGVsZWdhdGUoSVdlYlBsdWdpbkhh
bHRlckRlbGVnYXRlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1
bnVzZWQxKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDIo
KTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnZhbGlkYXRlQmFj
a2luZ1N0b3JlKGNvbnN0IFJFQ1QqKTsKIApAQCAtODE1LDkgKzgxNSw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGlzdG9yeURlbGVnYXRlKElXZWJI
aXN0b3J5RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBhZGRWaXNpdGVkTGlua3MoQlNUUiogdmlzaXRlZFVSTHMsIHVuc2ln
bmVkIHZpc2l0ZWRVUkxDb3VudCk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaXNOb2RlSGFsdGVkUGx1Z2luKElET01Ob2RlKiwgQk9PTCopOwotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXN0YXJ0SGFsdGVkUGx1Z2luRm9yTm9kZShJRE9N
Tm9kZSopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNQbHVnaW5G
b3JOb2RlQmVlbkhhbHRlZChJRE9NTm9kZSosIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMygpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB1bnVzZWQ0KCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHVudXNlZDUoKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRHZW9sb2NhdGlvblByb3ZpZGVyKElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiBsb2NhdGlvblBy
b3ZpZGVyKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2VvbG9jYXRp
b25Qcm92aWRlcihJV2ViR2VvbG9jYXRpb25Qcm92aWRlcioqIGxvY2F0aW9uUHJvdmlkZXIpOwpA
QCAtMTA1OSw3ICsxMDU5LDYgQEAgcHJvdGVjdGVkOgogICAgIENPTVB0cjxJV2ViSGlzdG9yeURl
bGVnYXRlPiBtX2hpc3RvcnlEZWxlZ2F0ZTsKICAgICBDT01QdHI8V2ViUHJlZmVyZW5jZXM+IG1f
cHJlZmVyZW5jZXM7CiAgICAgQ09NUHRyPFdlYkluc3BlY3Rvcj4gbV93ZWJJbnNwZWN0b3I7Ci0g
ICAgQ09NUHRyPElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZT4gbV9wbHVnaW5IYWx0ZXJEZWxlZ2F0
ZTsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fZ2VvbG9jYXRpb25Qcm92
aWRlcjsKIAogICAgIGJvb2wgbV91c2VyQWdlbnRPdmVycmlkZGVuOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlBsdWdpbkhhbHRlckRlbGVn
YXRlLmlkbAkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIERPX05PX0lNUE9SVFMKLWltcG9ydCAib2FpZGwuaWRsIjsKLWltcG9ydCAib2NpZGwuaWRs
IjsKLSNlbmRpZgotCi1pbnRlcmZhY2UgSURPTU5vZGU7Ci1pbnRlcmZhY2UgSVdlYlZpZXc7Ci0K
LVsKLSAgICBvYmplY3QsCi0gICAgb2xlYXV0b21hdGlvbiwKLSAgICB1dWlkKDJlMGU1ZDllLWZm
YzktNDE4NS1hYTE1LWU2Njg2OGQ1NDhlZSksCi0gICAgcG9pbnRlcl9kZWZhdWx0KHVuaXF1ZSkK
LV0KLWludGVyZmFjZSBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUgOiBJVW5rbm93bgotewotICAg
IEhSRVNVTFQgc2hvdWxkSGFsdFBsdWdpbihbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElE
T01Ob2RlKiwgW2luXSBCT09MIGlzV2luZG93ZWQsIFtpbl0gQlNUUiBwbHVnaW5OYW1lLCBbb3V0
LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwJKHJldmlzaW9u
IDkyNDgyKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsOCBAQCBpbnRlcmZhY2UgSVdl
YlByZWZlcmVuY2VzUHJpdmF0ZSA6IElVbmtuCiAgICAgLy8gVXNlZCBieSBEdW1wUmVuZGVyVHJl
ZS4KICAgICBIUkVTVUxUIHNldFByZWZlcmVuY2VGb3JUZXN0KFtpbl0gQlNUUiBrZXksIFtpbl0g
QlNUUiB2YWx1ZSk7CiAKLSAgICBIUkVTVUxUIHNldFBsdWdpbkFsbG93ZWRSdW5UaW1lKFtpbl0g
VUlOVCBhbGxvd2VkUnVuVGltZSk7Ci0gICAgSFJFU1VMVCBwbHVnaW5BbGxvd2VkUnVuVGltZShb
b3V0LCByZXR2YWxdIFVJTlQqIGFsbG93ZWRSdW5UaW1lKTsKKyAgICBIUkVTVUxUIHVudXNlZDEo
KTsKKyAgICBIUkVTVUxUIHVudXNlZDIoKTsKIAogICAgIEhSRVNVTFQgc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoW2luXSBCT09MKTsKICAgICBIUkVTVUxUIGFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCopOwpJbmRleDogU291cmNlL1dlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZVByaXZhdGU7CiBpbnRlcmZhY2UgSVdlYkhpc3RvcnlEZWxlZ2F0ZTsKIGludGVyZmFj
ZSBJV2ViSW5zcGVjdG9yOwogaW50ZXJmYWNlIElXZWJJbnNwZWN0b3JQcml2YXRlOwotaW50ZXJm
YWNlIElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZTsKIGludGVyZmFjZSBJV2ViVVJMUmVxdWVzdDsK
IGludGVyZmFjZSBJV2ViVmlldzsKIApAQCAtMTk3LDggKzE5Niw4IEBAIGludGVyZmFjZSBJV2Vi
Vmlld1ByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgcmVtb3ZlVXNlclN0eWxlU2hlZXRz
RnJvbUdyb3VwKFtpbl0gQlNUUiBncm91cE5hbWUsIFtpbl0gSVdlYlNjcmlwdFdvcmxkKik7CiAg
ICAgSFJFU1VMVCByZW1vdmVBbGxVc2VyQ29udGVudEZyb21Hcm91cChbaW5dIEJTVFIgZ3JvdXBO
YW1lKTsKIAotICAgIEhSRVNVTFQgc2V0UGx1Z2luSGFsdGVyRGVsZWdhdGUoW2luXSBJV2ViUGx1
Z2luSGFsdGVyRGVsZWdhdGUqIGQpOwotICAgIEhSRVNVTFQgcGx1Z2luSGFsdGVyRGVsZWdhdGUo
W3JldHZhbCwgb3V0XSBJV2ViUGx1Z2luSGFsdGVyRGVsZWdhdGUqKiBkKTsKKyAgICBIUkVTVUxU
IHVudXNlZDEoKTsKKyAgICBIUkVTVUxUIHVudXNlZDIoKTsKIAogICAgIC8vIElmIHJlY3QgaXMg
MCwgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlIHdpbGwgYmUgaW52YWxpZGF0ZWQuCiAgICAgSFJF
U1VMVCBpbnZhbGlkYXRlQmFja2luZ1N0b3JlKFtpbl0gY29uc3QgUkVDVCogcmVjdCk7CkBAIC0y
MTksOSArMjE4LDkgQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAg
SFJFU1VMVCBoaXN0b3J5RGVsZWdhdGUoW291dCxyZXR2YWxdIElXZWJIaXN0b3J5RGVsZWdhdGUq
KiBoaXN0b3J5RGVsZWdhdGUpOwogICAgIEhSRVNVTFQgYWRkVmlzaXRlZExpbmtzKFtpbl0gQlNU
UiogdmlzaXRlZFVSTHMsIFtpbl0gdW5zaWduZWQgdmlzaXRlZFVSTENvdW50KTsKIAotICAgIEhS
RVNVTFQgaXNOb2RlSGFsdGVkUGx1Z2luKFtpbl0gSURPTU5vZGUqLCBbcmV0dmFsLCBvdXRdIEJP
T0wqKTsKLSAgICBIUkVTVUxUIHJlc3RhcnRIYWx0ZWRQbHVnaW5Gb3JOb2RlKFtpbl0gSURPTU5v
ZGUqKTsKLSAgICBIUkVTVUxUIGhhc1BsdWdpbkZvck5vZGVCZWVuSGFsdGVkKFtpbl0gSURPTU5v
ZGUqLCBbcmV0dmFsLCBvdXRdIEJPT0wqKTsKKyAgICBIUkVTVUxUIHVudXNlZDMoKTsKKyAgICBI
UkVTVUxUIHVudXNlZDQoKTsKKyAgICBIUkVTVUxUIHVudXNlZDUoKTsKIAogICAgIEhSRVNVTFQg
c2V0R2VvbG9jYXRpb25Qcm92aWRlcihbaW5dIElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiBsb2Nh
dGlvblByb3ZpZGVyKTsKICAgICBIUkVTVUxUIGdlb2xvY2F0aW9uUHJvdmlkZXIoW291dCwgcmV0
dmFsXSBJV2ViR2VvbG9jYXRpb25Qcm92aWRlcioqIGxvY2F0aW9uUHJvdmlkZXIpOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkocmV2aXNpb24gOTI0ODIpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTEwOSw3ICsxMDksNiBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiAjaW5jbHVkZSAiSVdlYk5v
dGlmaWNhdGlvbi5pZGwiCiAjaW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlvbkNlbnRlci5pZGwiCiAj
aW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyLmlkbCIKLSNpbmNsdWRlICJJV2ViUGx1
Z2luSGFsdGVyRGVsZWdhdGUuaWRsIgogI2luY2x1ZGUgIklXZWJQb2xpY3lEZWxlZ2F0ZS5pZGwi
CiAjaW5jbHVkZSAiSVdlYlBvbGljeURlbGVnYXRlUHJpdmF0ZS5pZGwiCiAjaW5jbHVkZSAiSVdl
YlByZWZlcmVuY2VzLmlkbCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdpbkhhbHRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTI0
ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5IYWx0ZXJD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aW5jbHVkZSAiV2ViUGx1Z2luSGFsdGVyQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJET01Db3JlQ2xh
c3Nlcy5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4K
LSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjpXZWJQbHVnaW5IYWx0ZXJDbGllbnQoV2ViVmlldyog
d2ViVmlldykKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQotewotICAgIEFTU0VSVF9BUkcod2Vi
Vmlldywgd2ViVmlldyk7Ci19Ci0KLWJvb2wgV2ViUGx1Z2luSGFsdGVyQ2xpZW50OjpzaG91bGRI
YWx0UGx1Z2luKE5vZGUqIG4sIGJvb2wgaXNXaW5kb3dlZCwgY29uc3QgU3RyaW5nJiBwbHVnaW5O
YW1lKSBjb25zdAotewotICAgIEFTU0VSVF9BUkcobiwgbik7Ci0KLSAgICBJV2ViUGx1Z2luSGFs
dGVyRGVsZWdhdGUqIGQ7Ci0gICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnBsdWdpbkhhbHRlckRl
bGVnYXRlKCZkKSkgfHwgIWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENPTVB0cjxJ
RE9NTm9kZT4gZG9tTm9kZShBZG9wdENPTSwgRE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UobikpOwot
Ci0gICAgQk9PTCBzaG91bGRIYWx0OwotICAgIGlmIChGQUlMRUQoZC0+c2hvdWxkSGFsdFBsdWdp
bihtX3dlYlZpZXcsIGRvbU5vZGUuZ2V0KCksIGlzV2luZG93ZWQsIEJTdHJpbmcocGx1Z2luTmFt
ZSksICZzaG91bGRIYWx0KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBz
aG91bGRIYWx0OwotfQotCi1ib29sIFdlYlBsdWdpbkhhbHRlckNsaWVudDo6ZW5hYmxlZCgpIGNv
bnN0Ci17Ci0gICAgSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlKiBkOwotICAgIGlmIChGQUlMRUQo
bV93ZWJWaWV3LT5wbHVnaW5IYWx0ZXJEZWxlZ2F0ZSgmZCkpIHx8ICFkKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkhhbHRlckNsaWVudC5oCShy
ZXZpc2lvbiA5MjQ4MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkhhbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBXZWJQbHVn
aW5IYWx0ZXJDbGllbnRfaAotI2RlZmluZSBXZWJQbHVnaW5IYWx0ZXJDbGllbnRfaAotCi0jaW5j
bHVkZSA8V2ViQ29yZS9QbHVnaW5IYWx0ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgTm9kZTsKLX0KLQotY2xhc3Mg
V2ViVmlldzsKLQotY2xhc3MgV2ViUGx1Z2luSGFsdGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OlBsdWdpbkhhbHRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgV2ViUGx1Z2luSGFsdGVyQ2xpZW50
KFdlYlZpZXcqIHdlYlZpZXcpOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEhhbHRQbHVnaW4o
V2ViQ29yZTo6Tm9kZSogbiwgYm9vbCBpc1dpbmRvd2VkLCBjb25zdCBXVEY6OlN0cmluZyYgcGx1
Z2luTmFtZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdDsKLQotcHJp
dmF0ZToKLSAgICBXZWJWaWV3KiBtX3dlYlZpZXc7Ci19OwotCi0jZW5kaWYgLy8gV2ViUGx1Z2lu
SGFsdGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovSW50
ZXJmYWNlcy52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9JbnRlcmZhY2VzLnZjcHJvagkocmV2aXNpb24gOTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDY1LDU4ICszMDY1LDYgQEAKIAkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCTwvRmlsZT4KIAkJ
PEZpbGUKLQkJCVJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViUGx1Z2luSGFsdGVyRGVs
ZWdhdGUuaWRsIgotCQkJPgotCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iRGVidWd8
V2luMzIiCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJPgotCQkJCTxUb29sCi0J
CQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkJLz4KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAotCQkJCQlOYW1lPSJWQ01JRExU
b29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKLQkJCQk+Ci0JCQkJPFRvb2wKLQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCQkvPgot
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCU5hbWU9
IkRlYnVnX0FsbHxXaW4zMiIKLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQk+Ci0J
CQkJPFRvb2wKLQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCQkvPgotCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KLQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8
VG9vbAotCQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgotCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCT4KLQkJCQk8VG9vbAot
CQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJCS8+Ci0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQk8L0ZpbGU+Ci0JCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXEludGVyZmFjZXNcSVdlYlBv
bGljeURlbGVnYXRlLmlkbCIKIAkJCT4KIAkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagkocmV2aXNpb24g
OTI0ODIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNDMsMTQgKzEyNDMsNiBAQAogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViQ29yZVN1cHBvcnRcV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAJCQkJPgogCQkJPC9G
aWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYlBs
dWdpbkhhbHRlckNsaWVudC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYlBsdWdpbkhhbHRlckNsaWVudC5oIgot
CQkJCT4KLQkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFdlYktpdFByZWZpeC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gOTI0ODIp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDExLTA4LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBpbmNsdWRlIFBsdWdpbkhhbHRlckNsaWVudC5o
LCBpdCdzIGJlZW4gcmVtb3ZlZC4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDExLTA4
LTAzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHJlbW92ZSBOb2RlIHBhcmFtZXRlciBmcm9tIHRoZSBJbnNwZWN0b3JDbGll
bnQ6OmhpZ2hsaWdodApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lvbiA5MjQ4MikKKysr
IFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlBs
dWdpbkhhbHRlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDkyNDgyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMDgtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSBjYWxsIHRvIHNldCB0aGUgYWxsb3dlZCBwbHVnLWlu
IHJ1biB0aW1lLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisKIDIwMTEt
MDgtMDUgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyLiAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFF0LU1pbmltYWwgYnVpbGRi
b3QKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJl
dmlzaW9uIDkyNDgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDcsNyArNDQ3LDYgQEAgc3RhdGljIHZvaWQgcmVzZXRE
ZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgIFtwcmVmZXJlbmNlcyBzZXRDYWNoZU1vZGVsOldl
YkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXJdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRYU1NBdWRp
dG9yRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldEV4cGVyaW1lbnRhbE5vdGlmaWNh
dGlvbnNFbmFibGVkOk5PXTsKLSAgICBbcHJlZmVyZW5jZXMgc2V0UGx1Z2luQWxsb3dlZFJ1blRp
bWU6MV07CiAgICAgW3ByZWZlcmVuY2VzIHNldFBsdWdJbnNFbmFibGVkOllFU107CiAKICAgICBb
cHJlZmVyZW5jZXMgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDpOT107Cg==
</data>
<flag name="review"
          id="98565"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>