<?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>9390</bug_id>
          
          <creation_ts>2006-06-10 08:00:09 -0700</creation_ts>
          <short_desc>Move full-frame plugins to WebCore</short_desc>
          <delta_ts>2006-06-11 18:24:04 -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>Plug-ins</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>45248</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-06-10 08:00:09 -0700</bug_when>
    <thetext>We should move handling of full-frame plugins to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45251</commentid>
    <comment_count>1</comment_count>
      <attachid>8797</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-06-10 08:47:48 -0700</bug_when>
    <thetext>Created attachment 8797
Patch

After this it&apos;s possible to merge WebNetscapePluginEmbeddedView with WebBaseNetscapePluginView, and WebNetscapePluginStream with WebBaseNetscapePluginStream. I didn&apos;t want to do this right now because it would mean a lot of extra changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45272</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-10 11:53:50 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=8797) [edit]
&gt; Patch

FWIW, there are tabs in some of the ChangeLogs and a few source files.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45291</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Omernick">timo</who>
    <bug_when>2006-06-10 18:07:26 -0700</bug_when>
    <thetext>I read this patch, and it seems OK.  You should have someone else look at the WebCore tokenizer/document stuff as well for a review+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45339</commentid>
    <comment_count>4</comment_count>
      <attachid>8797</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-06-11 12:31:06 -0700</bug_when>
    <thetext>Comment on attachment 8797
Patch

I reviewed the WebCore parts, so by our powers combined... r+

Recommended changing some &quot; *&quot; to &quot;* &quot; and adding the new files to the Windows project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45363</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-11 18:12:42 -0700</bug_when>
    <thetext>This commit changed the results of (broke is too strong of a word :) the following tests:

    css2.1/t0801-c412-hz-box-00-b-a
    plugins/pluginDocumentView-deallocated-dataSource

http://build.webkit.org/results/post-commit-powerpc-mac-os-x/2186/

The other failing test on the above link (dom/svg/level3/xpath/Attribute_Nodes) is known to fail from time-to-time.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45367</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-11 18:24:04 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This commit changed the results of (broke is too strong of a word :) the
&gt; following tests: [...]

See Bug 9406.  Sorry...I used the word &quot;broke&quot; on that summary.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8797</attachid>
            <date>2006-06-10 08:47:48 -0700</date>
            <delta_ts>2006-06-11 12:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>full-frame-plugins.txt</filename>
            <type>text/plain</type>
            <size>98939</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDgwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMDYtMDYtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwkJaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05MzkwCisJCU1vdmUg
ZnVsbC1mcmFtZSBwbHVnaW5zIHRvIFdlYkNvcmUKKwkJCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCQlBZGQgUGx1Z2luRG9jdW1lbnQKKwkJCisgICAgICAg
ICogYnJpZGdlL21hYy9GcmFtZU1hYy5oOgorICAgICAgICAqIGJyaWRnZS9tYWMvRnJhbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU1hYzo6cmVkaXJlY3REYXRhVG9QbHVnaW4pOgor
CQlDYWxsIHRoZSBicmlkZ2UuCisJCQorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1l
QnJpZGdlLmg6CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW06CisJ
CUFkZCByZWRpcmVjdERhdGFUb1BsdWdpbiB3aGljaCBpcyB1c2VkIHRvIHJlZGlyZWN0IGluY29t
aW5nIGRhdGEKKwkJdG8gYSBwbHVnaW4uCisJCQorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29y
ZVZpZXdGYWN0b3J5Lmg6CisJCUFkZCBwbHVnaW5TdXBwb3J0c01JTUVUeXBlIHdoaWNoIHJldHVy
bnMgd2hldGhlciBhbnkgcGx1Z2lucyBzdXBwb3J0IGEgZ2l2ZW4gTUlNRSB0eXBlLgorCQkKKyAg
ICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGRvbS9ET01JbXBs
ZW1lbnRhdGlvbi5oOgorCQlHZXQgcmlkIG9mIGNyZWF0ZVRleHREb2N1bWVudCBhbmQganVzdCBj
cmVhdGUgYSB0ZXh0IGRvY3VtZW50IGV4cGxpY2l0bHkgd2hlbiBuZWVkZWQuCisJCQorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzUGx1Z2lu
RG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVG9rZW5pemVyOjpQbHVnaW5Ub2tlbml6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVG9rZW5pemVyOjp3YW50c1Jhd0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luVG9rZW5pemVyOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5Ub2tlbml6ZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblRva2VuaXplcjo6d3JpdGVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blRva2VuaXplcjo6c3RvcFBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVG9rZW5p
emVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVG9rZW5pemVyOjppc1dhaXRp
bmdGb3JTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50OjpQbHVnaW5E
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlVG9rZW5p
emVyKToKKyAgICAgICAgKiBsb2FkZXIvUGx1Z2luRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6aXNQbHVnaW5Eb2N1bWVudCk6CisJCUFkZCBQbHVn
aW5Eb2N1bWVudC4KKwkJCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6YmVnaW4pOgorCQlQb3NzaWJseSBjcmVhdGUgYSBwbHVnaW4gZG9jdW1lbnQu
CisJCQorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpy
ZWRpcmVjdERhdGFUb1BsdWdpbik6CisJCUFkZCBkZWNsYXJhdGlvbi4KKwkJCisgICAgICAgICog
cGxhdGZvcm0vUGx1Z0luSW5mb1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsdWdJ
bkluZm9TdG9yZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdJbkluZm9TdG9yZTo6c3Vw
cG9ydHNNSU1FVHlwZSk6CisJCUFzayBXZWJDb3JlVmlld0ZhY3RvcnkgaWYgdGhlIE1JTUUgdHlw
ZSBpcyBzdXBwb3J0ZWQuCisKIDIwMDYtMDYtMDkgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIE9tZXJuaWNrIGFuZCBEYXZlIEh5
YXR0LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE0ODA2KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsOCBAQAogCQkxQTg1QjJCNjBBMUIyQUM3
MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTg1QjJCNDBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1M
RGl2RWxlbWVudC5jcHAgKi87IH07CiAJCTFBODVCMkI3MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hU
TUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTg1QjJCNTBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5oICovOyB9
OwogCQkxQTlFRjQ1NzBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMUFDNjk0QzcwQTNCMTY3NjAwM0Y1MDQ5IC8qIFBsdWdpbkRv
Y3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBQzY5NEM1MEEzQjE2NzYwMDNGNTA0OSAvKiBQbHVnaW5Eb2N1bWVudC5jcHAgKi87IH07CisJ
CTFBQzY5NEM4MEEzQjE2NzYwMDNGNTA0OSAvKiBQbHVnaW5Eb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNjk0QzYwQTNCMTY3NjAwM0Y1
MDQ5IC8qIFBsdWdpbkRvY3VtZW50LmggKi87IH07CiAJCTFBRTJBQTFFMEExQ0RBQjQwMEI0MkIy
NSAvKiBKU0hUTUxBcmVhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUUyQUEwQTBBMUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MQXJlYUVs
ZW1lbnQuY3BwICovOyB9OwogCQkxQUUyQUExRjBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQXJl
YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRTJBQTBCMEExQ0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxBcmVhRWxlbWVudC5oICovOyB9Owog
CQkxQUUyQUEyMDBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQmFzZUZvbnRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTJBQTBDMEEx
Q0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTUz
NCwyMyArMTUzNiw2IEBACiAJCUZBRTA0MTkwMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFF
MDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9hZGVyLmggKi87IH07CiAvKiBFbmQg
UEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAotLyogQmVnaW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9u
ICovCi0JCUJDQzBDMjk2MEEzNzkyRTYwMDhDRDdBRCAvKiBEZXZlbG9wbWVudCAqLyA9IHsKLQkJ
CWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gRGV2ZWxvcG1lbnQ7Ci0JCX07Ci0JCUJD
QzBDMjk3MEEzNzkyRTYwMDhDRDdBRCAvKiBEZXBsb3ltZW50ICovID0gewotCQkJaXNhID0gUEJY
QnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVwbG95bWVudDsKLQkJfTsKLS8qIEVuZCBQQlhCdWls
ZFN0eWxlIHNlY3Rpb24gKi8KLQogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rp
b24gKi8KIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKQEAgLTE2NzQsNiArMTY1
OSw4IEBACiAJCTFBODVCMkI0MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxEaXZFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4NUIyQjUwQTFCMkFDNzAwRDhD
ODdDIC8qIEpTSFRNTERpdkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTERpdkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE5
RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFD
Njk0QzUwQTNCMTY3NjAwM0Y1MDQ5IC8qIFBsdWdpbkRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5Eb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFBQzY5NEM2MEEzQjE2NzYwMDNGNTA0OSAvKiBQbHVnaW5Eb2N1
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luRG9jdW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFMkE5RjAwQTFDREE1NzAwQjQyQjI1
IC8qIEhUTUxBcmVhRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxBcmVh
RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRTJBOUYxMEExQ0RB
NTcwMEI0MkIyNSAvKiBIVE1MQmFzZUZvbnRFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSFRNTEJhc2VGb250RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBRTJBOUYyMEExQ0RBNTcwMEI0MkIyNSAvKiBIVE1MQm9keUVsZW1lbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQm9keUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDkxMCw2ICs0ODk3LDggQEAKIAkJCQk5M0FCQ0U1RTA2RTFBNDJFMDA4
NTkyNUIgLyogRm9ybURhdGEuaCAqLywKIAkJCQkxQTgyMEQ4RjBBMTNFQkE2MDBBRjg0M0MgLyog
SW1hZ2VEb2N1bWVudC5jcHAgKi8sCiAJCQkJMUE4MjBEOTAwQTEzRUJBNjAwQUY4NDNDIC8qIElt
YWdlRG9jdW1lbnQuaCAqLywKKwkJCQkxQUM2OTRDNTBBM0IxNjc2MDAzRjUwNDkgLyogUGx1Z2lu
RG9jdW1lbnQuY3BwICovLAorCQkJCTFBQzY5NEM2MEEzQjE2NzYwMDNGNTA0OSAvKiBQbHVnaW5E
b2N1bWVudC5oICovLAogCQkJCUJDQjE2QzEzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuY3Bw
ICovLAogCQkJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLywKIAkJCQlC
Q0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi8sCkBAIC02MjM1LDYgKzYy
MjQsNyBAQAogCQkJCTRFMTk1OTJBMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0RTE5NTkyQzBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2
YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8q
IE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQzY5NEM4MEEzQjE2NzYwMDNG
NTA0OSAvKiBQbHVnaW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MjY4LDEyICs2MjU4
LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0g
ewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlD
Mjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQ
cm9qZWN0ICJXZWJDb3JlIiAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJYnVp
bGRTdHlsZXMgPSAoCi0JCQkJQkNDMEMyOTYwQTM3OTJFNjAwOENEN0FEIC8qIERldmVsb3BtZW50
ICovLAotCQkJCUJDQzBDMjk3MEEzNzkyRTYwMDhDRDdBRCAvKiBEZXBsb3ltZW50ICovLAotCQkJ
KTsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAog
CQkJCUVuZ2xpc2gsCkBAIC03MDc2LDYgKzcwNjAsNyBAQAogCQkJCTRFMTk1OTI5MEEzOURBQ0Mw
MDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRFMTk1OTJCMEEz
OURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTRFMTk1OTJEMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTFBQzY5NEM3MEEzQjE2NzYwMDNGNTA0OSAvKiBQbHVnaW5Eb2N1bWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5oCShyZXZpc2lvbiAxNDgw
NikKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzYsNiArMTM2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBv
YmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogICAgIHZpcnR1YWwgUGx1Z2luKiBjcmVhdGVQbHVnaW4oRWxlbWVudCogZWxlbWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwl2aXJ0
dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOworCiAg
ICAgdmlydHVhbCBGcmFtZSogY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFJlbmRlclBhcnQqIHJlbmRlcmVyLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNsb3NlKCk7CkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9tYWMvRnJhbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL0ZyYW1l
TWFjLm1tCShyZXZpc2lvbiAxNDgwNikKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTI0LDEyICs1MjQsMTggQEAgUGx1Z2luKiBGcmFtZU1hYzo6
Y3JlYXRlUGx1Z2luKEVsZW1lbnQqIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZU5hbWVzOm5zQXJyYXkocGFyYW1OYW1lcykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6bnNBcnJheShwYXJhbVZhbHVlcykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTptaW1lVHlwZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERPTUVsZW1lbnQ6KGVsZW1lbnQgPyBbRE9NRWxlbWVu
dCBfZWxlbWVudFdpdGg6ZWxlbWVudF0gOiBuaWwpXSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERPTUVsZW1lbnQ6KGVsZW1lbnQgPyBbRE9NRWxlbWVudCBfZWxlbWVudFdp
dGg6ZWxlbWVudF0gOiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YW51YWxseTpkLT5tX2RvYy0+aXNQbHVnaW5Eb2N1bWVudCgpXSkpOwogCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBGcmFtZU1hYzo6cmVk
aXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCit7CisJW19icmlkZ2UgcmVk
aXJlY3REYXRhVG9QbHVnaW46cGx1Z2luV2lkZ2V0LT5nZXRWaWV3KCldOworfQorCiAKIEZyYW1l
KiBGcmFtZU1hYzo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFJlbmRlclBhcnQqIHJlbmRlcmVyLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewpJbmRl
eDogV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24gMTQ4MDYp
CisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5MSwxMiArNTkxLDE0IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVOYW1lczooTlNBcnJheSAqKWF0dHJpYnV0ZU5hbWVzCiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZVZhbHVlczooTlNBcnJheSAqKWF0dHJpYnV0ZVZhbHVlcwogICAgICAgICAg
ICAgICAgICAgICAgICAgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUKLSAgICAgICAgICAg
ICAgICAgICAgICBET01FbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudDsKKyAgICAgICAgICAg
ICAgICAgICAgICBET01FbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAorICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFudWFsbHk6KEJPT0wpbG9hZE1hbnVhbGx5OwogLSAoTlNWaWV3ICopdmll
d0ZvckphdmFBcHBsZXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQogICAgICAgICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlTmFtZXM6KE5TQXJyYXkgKilhdHRyaWJ1dGVOYW1lcwogICAgICAgICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6KE5TQXJyYXkgKilhdHRyaWJ1dGVWYWx1ZXMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01FbGVtZW50OihET01FbGVtZW50ICopZWxl
bWVudDsKKy0gKHZvaWQpcmVkaXJlY3REYXRhVG9QbHVnaW46KE5TVmlldyAqKXBsdWdpblZpZXc7
CiAKIC0gKEJPT0wpc2F2ZURvY3VtZW50VG9QYWdlQ2FjaGU6KGlkKWRvY3VtZW50SW5mbzsKIApJ
bmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCShyZXZpc2lvbiAx
NDgwNikKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbXBvcnQgIk1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5oIgogI2ltcG9ydCAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbXBvcnQgIlBhZ2Uu
aCIKKyNpbXBvcnQgIlBsdWdJbkluZm9TdG9yZS5oIgogI2ltcG9ydCAiUmVuZGVyVmlldy5oIgog
I2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJlbmRlclBhcnQuaCIKQEAgLTI1NTks
NyArMjU2MCw4IEBAIHN0YXRpYyBOU0NoYXJhY3RlclNldCAqX2dldFBvc3RTbWFydFNldCgKICAg
ICBTdHJpbmcgbWltZVR5cGUgPSBtX2ZyYW1lLT5yZXNvdXJjZVJlcXVlc3QoKS5tX3Jlc3BvbnNl
TUlNRVR5cGU7CiAgICAgCiAgICAgaWYgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1Rl
eHRNSU1FVHlwZShtaW1lVHlwZSkgfHwKLSAgICAgICAgSW1hZ2U6OnN1cHBvcnRzVHlwZShtaW1l
VHlwZSkpCisgICAgICAgIEltYWdlOjpzdXBwb3J0c1R5cGUobWltZVR5cGUpIHx8CisgICAgICAg
IFBsdWdJbkluZm9TdG9yZTo6c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJl
dHVybiBOTzsKICAgICAKICAgICByZXR1cm4gWUVTOwpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFj
L1dlYkNvcmVWaWV3RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9X
ZWJDb3JlVmlld0ZhY3RvcnkuaAkocmV2aXNpb24gMTQ4MDYpCisrKyBXZWJDb3JlL2JyaWRnZS9t
YWMvV2ViQ29yZVZpZXdGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
IAogLSAoTlNBcnJheSAqKXBsdWdpbnNJbmZvOyAvLyBhcnJheSBvZiBpZCA8V2ViQ29yZVBsdWdp
bkluZm8+CiAtICh2b2lkKXJlZnJlc2hQbHVnaW5zOihCT09MKXJlbG9hZFBhZ2VzOworLSAoQk9P
TClwbHVnaW5TdXBwb3J0c01JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlOwogCiAtIChOU1N0
cmluZyAqKWlucHV0RWxlbWVudEFsdFRleHQ7CiAtIChOU1N0cmluZyAqKXJlc2V0QnV0dG9uRGVm
YXVsdExhYmVsOwpJbmRleDogV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMTQ4
MDYpCisrKyBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MCwxMSArMTgwLDYgQEAgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVu
dGF0aQogICAgIHJldHVybiBuZXcgSFRNTERvY3VtZW50KHRoaXMsIHYpOwogfQogCi1QYXNzUmVm
UHRyPFRleHREb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZVRleHREb2N1bWVudChG
cmFtZVZpZXcgKnYpCi17Ci0gICAgcmV0dXJuIG5ldyBUZXh0RG9jdW1lbnQodGhpcywgdik7Ci19
Ci0KIERPTUltcGxlbWVudGF0aW9uKiBET01JbXBsZW1lbnRhdGlvbjo6aW5zdGFuY2UoKQogewog
ICAgIHN0YXRpYyBSZWZQdHI8RE9NSW1wbGVtZW50YXRpb24+IGkgPSBuZXcgRE9NSW1wbGVtZW50
YXRpb247CkluZGV4OiBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgJKHJldmlzaW9uIDE0ODA2KQorKysg
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyAr
NjEsNiBAQCBwdWJsaWM6CiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQog
ICAgIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KEZyYW1lVmlldyogPSAwKTsK
ICAgICBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KEZyYW1lVmll
dyogPSAwKTsKLSAgICBQYXNzUmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlVGV4dERvY3VtZW50
KEZyYW1lVmlldyogdiA9IDApOwogCiAgICAgLy8gUmV0dXJucyB0aGUgc3RhdGljIGluc3RhbmNl
IG9mIHRoaXMgY2xhc3MgLSBvbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHNob3VsZAog
ICAgIC8vIGV2ZXIgYmUgcHJlc2VudCwgYW5kIGlzIHVzZWQgYXMgYSBmYWN0b3J5IG1ldGhvZCBm
b3IgY3JlYXRpbmcgRG9jdW1lbnQgb2JqZWN0cwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNDgwNikK
KysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMs
OCBAQCBwdWJsaWM6CiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQogICAg
IHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNIVE1MRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
CisgICAgdmlydHVhbCBib29sIGlzUGx1Z2luRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIAogICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlU2VsZWN0b3I7IH0KIAogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUFj
Y2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Q
bHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCisKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRl
ICJUZXh0LmgiCisjaW5jbHVkZSAiSFRNTEVtYmVkRWxlbWVudC5oIgorI2luY2x1ZGUgInhtbF90
b2tlbml6ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKKyAgICAKK2NsYXNzIFBsdWdpblRva2VuaXplciA6IHB1YmxpYyBUb2tlbml6
ZXIgeworcHVibGljOgorICAgIFBsdWdpblRva2VuaXplcihEb2N1bWVudCogZG9jKSA6IG1fZG9j
KGRvYyksIG1fZW1iZWRFbGVtZW50KDApIHt9CisgICAgICAgIAorICAgIHZpcnR1YWwgYm9vbCB3
cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmLCBib29sIGFwcGVuZERhdGEpOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wUGFyc2luZygpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0OworICAgICAgICAKKyAgICB2
aXJ0dWFsIGJvb2wgd2FudHNSYXdEYXRhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCB3cml0ZVJhd0RhdGEoY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbik7CisgICAg
ICAgIAorICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKK3ByaXZhdGU6CisgICAg
RG9jdW1lbnQqIG1fZG9jOworICAgIEhUTUxFbWJlZEVsZW1lbnQgKm1fZW1iZWRFbGVtZW50Owor
fTsKKyAgICAKK2Jvb2wgUGx1Z2luVG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJp
bmcmIHMsIGJvb2wgYXBwZW5kRGF0YSkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisgICAgCit2b2lkIFBsdWdpblRva2VuaXplcjo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgUmVmUHRyPEVs
ZW1lbnQ+IHJvb3RFbGVtZW50ID0gbV9kb2MtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFj
ZVVSSSwgImh0bWwiLCBlYyk7CisgICAgbV9kb2MtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LCBl
Yyk7CisgICAgICAgIAorICAgIFJlZlB0cjxFbGVtZW50PiBib2R5ID0gbV9kb2MtPmNyZWF0ZUVs
ZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImJvZHkiLCBlYyk7CisgICAgYm9keS0+c2V0QXR0
cmlidXRlKG1hcmdpbndpZHRoQXR0ciwgIjAiKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUobWFy
Z2luaGVpZ2h0QXR0ciwgIjAiKTsKKyAgICAgICAKKyAgICByb290RWxlbWVudC0+YXBwZW5kQ2hp
bGQoYm9keSwgZWMpOworICAgICAgICAKKyAgICBSZWZQdHI8RWxlbWVudD4gZW1iZWRFbGVtZW50
ID0gbV9kb2MtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImVtYmVkIiwgZWMp
OworICAgICAgICAKKyAgICBtX2VtYmVkRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbWJlZEVs
ZW1lbnQgKj4oZW1iZWRFbGVtZW50LmdldCgpKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0
cmlidXRlKHdpZHRoQXR0ciwgIjEwMCUiKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmli
dXRlKGhlaWdodEF0dHIsICIxMDAlIik7CisgICAgCisgICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0
dHJpYnV0ZShuYW1lQXR0ciwgInBsdWdpbiIpOworICAgIG1fZW1iZWRFbGVtZW50LT5zZXRTcmMo
bV9kb2MtPlVSTCgpKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0VHlwZShtX2RvYy0+ZnJhbWUo
KS0+cmVzb3VyY2VSZXF1ZXN0KCkubV9yZXNwb25zZU1JTUVUeXBlKTsKKyAgICAKKyAgICBib2R5
LT5hcHBlbmRDaGlsZChlbWJlZEVsZW1lbnQsIGVjKTsgICAgCit9CisgICAgCitib29sIFBsdWdp
blRva2VuaXplcjo6d3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4pCit7Cisg
ICAgaWYgKCFtX2VtYmVkRWxlbWVudCkgeworICAgICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVy
ZSgpOworICAgICAgICBtX2RvYy0+ZnJhbWUoKS0+cmVkaXJlY3REYXRhVG9QbHVnaW4oc3RhdGlj
X2Nhc3Q8UmVuZGVyV2lkZ2V0Kj4obV9lbWJlZEVsZW1lbnQtPnJlbmRlcmVyKCkpLT53aWRnZXQo
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKwl9CisJCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorICAgIAordm9pZCBQbHVnaW5Ub2tlbml6
ZXI6OnN0b3BQYXJzaW5nKCkKK3sKKyAgICBUb2tlbml6ZXI6OnN0b3BQYXJzaW5nKCk7ICAgICAg
ICAKK30KKyAgICAKK3ZvaWQgUGx1Z2luVG9rZW5pemVyOjpmaW5pc2goKQoreworICAgIGlmICgh
bV9wYXJzZXJTdG9wcGVkKSAKKyAgICAgICAgbV9kb2MtPmZpbmlzaGVkUGFyc2luZygpOyAgICAg
ICAgICAgIAorfQorICAgIAorYm9vbCBQbHVnaW5Ub2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlw
dHMoKSBjb25zdAoreworICAgIC8vIEEgcGx1Z2luIGRvY3VtZW50IGlzIG5ldmVyIHdhaXRpbmcg
Zm9yIHNjcmlwdHMKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCitQbHVnaW5Eb2N1bWVudDo6
UGx1Z2luRG9jdW1lbnQoRE9NSW1wbGVtZW50YXRpb24gKl9pbXBsZW1lbnRhdGlvbiwgRnJhbWVW
aWV3ICp2KQorICAgIDogSFRNTERvY3VtZW50KF9pbXBsZW1lbnRhdGlvbiwgdikKK3sKKyAgICBz
ZXRQYXJzZU1vZGUoQ29tcGF0KTsKK30KKyAgICAKK1Rva2VuaXplciogUGx1Z2luRG9jdW1lbnQ6
OmNyZWF0ZVRva2VuaXplcigpCit7CisgICAgcmV0dXJuIG5ldyBQbHVnaW5Ub2tlbml6ZXIodGhp
cyk7Cit9CisgICAgCit9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKyNpZm5kZWYgUGx1Z2luRG9jdW1lbnRfaAorI2RlZmluZSBQbHVnaW5E
b2N1bWVudF9oCisKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIAorY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CitjbGFzcyBGcmFtZVZpZXc7Cisg
ICAgCitjbGFzcyBQbHVnaW5Eb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQKK3sKK3B1Ymxp
YzoKKyAgICBQbHVnaW5Eb2N1bWVudChET01JbXBsZW1lbnRhdGlvbiosIEZyYW1lVmlldyogPSAw
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdpbkRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgICAgICAKKyAgICB2aXJ0dWFsIFRva2VuaXplciogY3JlYXRlVG9rZW5pemVy
KCk7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gSW1hZ2VEb2N1bWVudF9oCkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJ
KHJldmlzaW9uIDE0ODA2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNiArNTcsOCBAQAogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiUGx1Z0luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtNjE0LDgg
KzYxNiwxMCBAQCB2b2lkIEZyYW1lOjpiZWdpbihjb25zdCBLVVJMJiB1cmwpCiAgICAgZC0+bV9k
b2MgPSBET01JbXBsZW1lbnRhdGlvbjo6aW5zdGFuY2UoKS0+Y3JlYXRlRG9jdW1lbnQoZC0+bV92
aWV3LmdldCgpKTsKICAgZWxzZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBl
KGQtPm1fcmVxdWVzdC5tX3Jlc3BvbnNlTUlNRVR5cGUpKQogICAgIGQtPm1fZG9jID0gbmV3IFRl
eHREb2N1bWVudChET01JbXBsZW1lbnRhdGlvbjo6aW5zdGFuY2UoKSwgZC0+bV92aWV3LmdldCgp
KTsKLSBlbHNlIGlmIChJbWFnZTo6c3VwcG9ydHNUeXBlKGQtPm1fcmVxdWVzdC5tX3Jlc3BvbnNl
TUlNRVR5cGUpKQorICBlbHNlIGlmIChJbWFnZTo6c3VwcG9ydHNUeXBlKGQtPm1fcmVxdWVzdC5t
X3Jlc3BvbnNlTUlNRVR5cGUpKQogICAgIGQtPm1fZG9jID0gbmV3IEltYWdlRG9jdW1lbnQoRE9N
SW1wbGVtZW50YXRpb246Omluc3RhbmNlKCksIGQtPm1fdmlldy5nZXQoKSk7CisgIGVsc2UgaWYg
KFBsdWdJbkluZm9TdG9yZTo6c3VwcG9ydHNNSU1FVHlwZShkLT5tX3JlcXVlc3QubV9yZXNwb25z
ZU1JTUVUeXBlKSkKKyAgICBkLT5tX2RvYyA9IG5ldyBQbHVnaW5Eb2N1bWVudChET01JbXBsZW1l
bnRhdGlvbjo6aW5zdGFuY2UoKSwgZC0+bV92aWV3LmdldCgpKTsKICAgZWxzZQogICAgIGQtPm1f
ZG9jID0gRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCktPmNyZWF0ZUhUTUxEb2N1bWVudChk
LT5tX3ZpZXcuZ2V0KCkpOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMTQ4MDYpCisrKyBXZWJDb3JlL3Bh
Z2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTY4LDEyICs1NjgsMTMgQEAgcHVibGljOgog
ICB2aXJ0dWFsIGJvb2wgcGFzc1doZWVsRXZlbnRUb0NoaWxkV2lkZ2V0KE5vZGUqKSA9IDA7CiAg
IHZpcnR1YWwgYm9vbCBsYXN0RXZlbnRJc01vdXNlVXAoKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwg
U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpIHsgfQogcHJvdGVjdGVkOgog
ICB2aXJ0dWFsIFBsdWdpbiogY3JlYXRlUGx1Z2luKEVsZW1lbnQqIG5vZGUsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwogICB2aXJ0dWFs
IEZyYW1lKiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UmVuZGVyUGFydCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpID0gMDsKICAgdmly
dHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dGlvblRpbWVyRmlyZWQoVGltZXI8RnJhbWU+Kik7CisgIHZpcnR1YWwgdm9pZCByZWRpcmVjdGlv
blRpbWVyRmlyZWQoVGltZXI8RnJhbWU+Kik7CiAKIHB1YmxpYzoKICAgdm9pZCBsb2FkRG9uZSgp
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9QbHVnSW5JbmZvU3RvcmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1BsdWdJbkluZm9TdG9yZS5oCShyZXZpc2lvbiAxNDgwNikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vUGx1Z0luSW5mb1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDggQEAgc3RydWN0IFBsdWdpbkluZm8gewogY2xhc3MgUGx1Z0luSW5mb1N0b3JlIHsK
IHB1YmxpYzoKICAgICBQbHVnaW5JbmZvICpjcmVhdGVQbHVnaW5JbmZvRm9yUGx1Z2luQXRJbmRl
eCh1bnNpZ25lZCk7Ci0gICAgdW5zaWduZWQgcGx1Z2luQ291bnQoKSBjb25zdDsgICAgCisgICAg
dW5zaWduZWQgcGx1Z2luQ291bnQoKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogfTsKIAogdm9pZCByZWZyZXNoUGx1Z2lu
cyhib29sIHJlbG9hZE9wZW5QYWdlcyk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVn
SW5JbmZvU3RvcmVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1
Z0luSW5mb1N0b3JlTWFjLm1tCShyZXZpc2lvbiAxNDgwNikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsdWdJbkluZm9TdG9yZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTUg
QEAgdW5zaWduZWQgUGx1Z0luSW5mb1N0b3JlOjpwbHVnaW5Db3VudCgpIAogICAgIHJldHVybiAw
OwogfQogCitib29sIFBsdWdJbkluZm9TdG9yZTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBy
ZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gcGx1Z2luU3VwcG9ydHNN
SU1FVHlwZTptaW1lVHlwZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsgICAgCisg
ICAgCisgICAgcmV0dXJuIE5POworfQorCiB2b2lkIHJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2Fk
T3BlblBhZ2VzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKSW5kZXg6IFdl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MTQ4MDYpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODkg
QEAKKzIwMDYtMDYtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFz
ZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm06CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdp
blN0cmVhbSBpbnN0YW5jZV0pOgorCQlBZGQgaW5zdGFuY2UgbWV0aG9kIHdoaWNoIHJldHVybnMg
dGhlIHBsdWdpbiBpbnN0YW5jZS4KKwkJCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlUGx1Z2lu
UGFja2FnZS5oOgorCQlBZGQgV2ViUGx1Z2luTWFudWFsTG9hZGVyIHByb3RvY29sCisJCQorICAg
ICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRG9jdW1lbnRWaWV3Lm06IFJlbW92
ZWQuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3Lmg6
CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldy5tOgorICAg
ICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldyBpbml0V2l0aEZyYW1lOnBsdWdp
bjpVUkw6YmFzZVVSTDpNSU1FVHlwZTphdHRyaWJ1dGVLZXlzOmF0dHJpYnV0ZVZhbHVlczpsb2Fk
TWFudWFsbHk6XSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3IGRl
YWxsb2NdKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcgZGlkU3Rh
cnRdKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcgcGx1Z2luVmll
dzpyZWNlaXZlZFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpbkVtYmVk
ZGVkVmlldyBwbHVnaW5WaWV3OnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKC1bV2ViTmV0c2Nh
cGVQbHVnaW5FbWJlZGRlZFZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZEVycm9yOl0pOgorICAgICAg
ICAoLVtXZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldyBwbHVnaW5WaWV3RmluaXNoZWRMb2Fk
aW5nOl0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldyByZWRlbGl2
ZXJTdHJlYW1dKToKKwkJTWFrZSBXZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldyBzdXBwb3J0
IHRoZSBXZWJQbHVnaW5NYW51YWxMb2FkZXIgcHJvdG9jb2wuIEl0IGNyZWF0ZXMgYSBwbHVnaW4g
c3RyZWFtIGFuZCBmZWVkcyB0aGUKKwkJZGF0YSBtYW51YWxseS4gTXVjaCBvZiB0aGlzIGNvZGUg
aGFzIGJlZW4gY29waWVkIGZyb20gV2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbi4KKwor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbi5t
OiBSZW1vdmVkLgorCisgICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLmg6Cisg
ICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm06CisgICAgICAgICgtW1dlYlBs
dWdpbkNvbnRyb2xsZXIgcGx1Z2luVmlldzpyZWNlaXZlZFJlc3BvbnNlOl0pOgorICAgICAgICAo
LVtXZWJQbHVnaW5Db250cm9sbGVyIHBsdWdpblZpZXc6cmVjZWl2ZWREYXRhOl0pOgorICAgICAg
ICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIHBsdWdpblZpZXc6cmVjZWl2ZWRFcnJvcjpdKToKKyAg
ICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBwbHVnaW5WaWV3RmluaXNoZWRMb2FkaW5nOl0p
OgorCQlNYWtlIFdlYlBsdWdpbkNvbnRyb2xsZXIgc3VwcG9ydCB0aGUgV2ViUGx1Z2luTWFudWFs
TG9hZGVyIHByb3RvY29sIHNvIGl0IGNhbiBmZWVkIGRhdGEgbWFudWFsbHkgdG8gV2ViS2l0IHBs
dWdpbnMuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm06CQkKKyAgICAg
ICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgcmVmcmVzaF0pOgorCQlVc2UgV2ViSFRNTFZpZXcgYW5k
IFdlYkhUTUxSZXByZXNlbnRhdGlvbiB3aGVuIHJlZ2lzdGVyaW5nL3VucmVnaXN0ZXJpbmcgcGx1
Zy1pbiBNSU1FIHR5cGVzLgorCQkKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkRvY3VtZW50
Vmlldy5oOiBSZW1vdmVkLgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luRG9jdW1lbnRWaWV3
Lm06IFJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5t
OgorICAgICAgICAoLVtXZWJGcmFtZUJyaWRnZSBwbHVnaW5WaWV3V2l0aFBhY2thZ2U6YXR0cmli
dXRlTmFtZXM6YXR0cmlidXRlVmFsdWVzOmJhc2VVUkw6RE9NRWxlbWVudDpsb2FkTWFudWFsbHk6
XSk6CisgICAgICAgICgtW1dlYkZyYW1lQnJpZGdlIHZpZXdGb3JQbHVnaW5XaXRoVVJMOmF0dHJp
YnV0ZU5hbWVzOmF0dHJpYnV0ZVZhbHVlczpNSU1FVHlwZTpET01FbGVtZW50OmxvYWRNYW51YWxs
eTpdKToKKwkJQWRkIGxvYWRNYW51YWxseSBhcmd1bWVudC4KKwkJCisgICAgICAgICgtW1dlYkZy
YW1lQnJpZGdlIHJlZGlyZWN0RGF0YVRvUGx1Z2luOl0pOgorCQlDYWxsIGRvd24gdG8gdGhlIEhU
TUwgcmVwcmVzZW50YXRpb24uCisJCQorICAgICAgICAoLVtXZWJGcmFtZUJyaWRnZSB2aWV3Rm9y
SmF2YUFwcGxldFdpdGhGcmFtZTphdHRyaWJ1dGVOYW1lczphdHRyaWJ1dGVWYWx1ZXM6YmFzZVVS
TDpET01FbGVtZW50Ol0pOgorCQlQYXNzIE5PIHRvIGxvYWRNYW51YWxseS4KKwkJCisgICAgICAg
ICgtW1dlYkZyYW1lQnJpZGdlIGRldGVybWluZU9iamVjdEZyb21NSU1FVHlwZTpVUkw6XSk6CisJ
CUV4cGxpY2l0bHkgY2hlY2sgaWYgdGhlIE1JTUUgdHlwZSBpcyBzdXBwb3J0ZWQgYnkgYSBwbHVn
LWluIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIHZpZXcgY2xhc3MuCisJCQorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm06CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5
IHBsdWdpblN1cHBvcnRzTUlNRVR5cGU6XSk6CisJCU5ldyBmdW5jdGlvbiB3aGljaCByZXR1cm5z
IHdoZXRoZXIgYW55IHBsdWdpbnMgc3VwcG9ydCBhIGdpdmVuIE1JTUUgdHlwZS4KKwkJCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisJCVVwZGF0ZSBmb3IgcmVt
b3ZlZCBmaWxlcy4KKwkJCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tOgorICAgICAgICAo
LVtXZWJGcmFtZSBfcmVsb2FkRm9yUGx1Z2luQ2hhbmdlc10pOgorCQlSZW1vdmUgdmlldyB0eXBl
IGNoZWNrcy4KKwkJCisgICAgICAgICgtW1dlYkZyYW1lIF9yZWN1cnNpdmVfcGF1c2VOdWxsRXZl
bnRzRm9yQWxsTmV0c2NhcGVQbHVnaW5zXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9yZWN1cnNp
dmVfcmVzdW1lTnVsbEV2ZW50c0ZvckFsbE5ldHNjYXBlUGx1Z2luc10pOgorCQlSZW1vdmUgRklY
TUUgY29tbWVudHMuCisJCQorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBfcmVkaXJlY3REYXRhVG9NYW51
YWxMb2FkZXI6Zm9yUGx1Z2luVmlldzpdKToJCQorCQlOZXcgZnVuY3Rpb24gd2hpY2ggcmVkaXJl
Y3RzIGluY29taW5nIGRhdGEgdG8gYSBtYW51YWwgbG9hZGVyLgorCQkKKyAgICAgICAgKC1bV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIHJlY2VpdmVkRGF0YTp3aXRoRGF0YVNvdXJjZTpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIHJlY2VpdmVkRXJyb3I6d2l0aERhdGFTb3VyY2U6
XSk6CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBmaW5pc2hlZExvYWRpbmdXaXRo
RGF0YVNvdXJjZTpdKToKKwkJT3B0aW9uYWxseSByZWRpcmVjdCBpbmNvbWluZyBkYXRhLgorCQkK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvblByaXZhdGUuaDoJCQorCiAy
MDA2LTA2LTA5ICBKb2huIFN1bGxpdmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBPbWVybmljayBhbmQgRGF2ZSBIeWF0dC4KSW5kZXg6IFdlYktpdC9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5oCShyZXZpc2lvbiAxNDgwNikK
KysrIFdlYktpdC9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiAtICh2b2lkKXNldFBsdWdpblBvaW50ZXI6KE5QUClw
bHVnaW5Qb2ludGVyOwogCiAtICh1aW50MTYpdHJhbnNmZXJNb2RlOworLSAoTlBQKWluc3RhbmNl
OwogCiAtICh2b2lkKXN0YXJ0U3RyZWFtUmVzcG9uc2VVUkw6KE5TVVJMICopdGhlUmVzcG9uc2VV
UkwKICAgICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aDoobG9uZyBsb25nKWV4cGVjdGVkQ29u
dGVudExlbmd0aApJbmRleDogV2ViS2l0L1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm0JKHJldmlzaW9uIDE0ODA2KQorKysgV2ViS2l0L1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luU3RyZWFtLm0JKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsMTEgQEAgc3Rh
dGljIGNoYXIgKkNhcmJvblBhdGhGcm9tUE9TSVhQYXRoKGNvbgogICAgIHJldHVybiB0cmFuc2Zl
ck1vZGU7CiB9CiAKKy0gKE5QUClpbnN0YW5jZQoreworICAgIHJldHVybiBpbnN0YW5jZTsKK30K
KwogLSAodm9pZClzZXRSZXF1ZXN0VVJMOihOU1VSTCAqKXRoZVJlcXVlc3RVUkwKIHsKICAgICBb
dGhlUmVxdWVzdFVSTCByZXRhaW5dOwpJbmRleDogV2ViS2l0L1BsdWdpbnMvV2ViQmFzZVBsdWdp
blBhY2thZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFj
a2FnZS5oCShyZXZpc2lvbiAxNDgwNikKKysrIFdlYktpdC9QbHVnaW5zL1dlYkJhc2VQbHVnaW5Q
YWNrYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEzIEBACiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVWaWV3RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViS2l0L25wZnVuY3Rpb25zLmg+
CiAKK0Bwcm90b2NvbCBXZWJQbHVnaW5NYW51YWxMb2FkZXIKKy0gKHZvaWQpcGx1Z2luVmlldzoo
TlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVz
cG9uc2U7CistICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRE
YXRhOihOU0RhdGEgKilkYXRhOworLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5W
aWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKy0gKHZvaWQpcGx1Z2luVmlld0Zp
bmlzaGVkTG9hZGluZzooTlNWaWV3ICopcGx1Z2luVmlldzsKK0BlbmQKKwogI2RlZmluZSBXZWJQ
bHVnaW5FeHRlbnNpb25zS2V5ICAgICAgICAgIEAiV2ViUGx1Z2luRXh0ZW5zaW9ucyIKICNkZWZp
bmUgV2ViUGx1Z2luRGVzY3JpcHRpb25LZXkgICAgICAgICBAIldlYlBsdWdpbkRlc2NyaXB0aW9u
IgogI2RlZmluZSBXZWJQbHVnaW5Mb2NhbGl6YXRpb25OYW1lS2V5ICAgIEAiV2ViUGx1Z2luTG9j
YWxpemF0aW9uTmFtZSIKSW5kZXg6IFdlYktpdC9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRG9j
dW1lbnRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5Eb2N1bWVudFZpZXcuaAkocmV2aXNpb24gMTQ4MDYpCisrKyBXZWJLaXQvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgotCi0jaW1wb3J0IDxX
ZWJLaXQvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oPgotCi1AcHJvdG9jb2wgV2ViRG9jdW1l
bnRWaWV3OwotCi1AaW50ZXJmYWNlIFdlYk5ldHNjYXBlUGx1Z2luRG9jdW1lbnRWaWV3IDogV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldyAgIDxXZWJEb2N1bWVudFZpZXc+Ci17Ci0gICAgV2ViRGF0
YVNvdXJjZSAqZGF0YVNvdXJjZTsKLQotICAgIEJPT0wgbmVlZHNMYXlvdXQ7Ci19Ci0KLUBlbmQK
SW5kZXg6IFdlYktpdC9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRG9jdW1lbnRWaWV3Lm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcu
bQkocmV2aXNpb24gMTQ4MDYpCisrKyBXZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkRv
Y3VtZW50Vmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2Vi
RG9jdW1lbnQuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgotI2ltcG9ydCA8V2ViS2l0
L1dlYkZyYW1lVmlldy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4K
LSNpbXBvcnQgPFdlYktpdC9XZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmlldy5oPgotI2ltcG9y
dCA8V2ViS2l0L1dlYk5ldHNjYXBlUGx1Z2luUmVwcmVzZW50YXRpb24uaD4KLSNpbXBvcnQgPFdl
YktpdC9XZWJOU1ZpZXdFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJOZXRzY2FwZVBsdWdp
blBhY2thZ2UuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW5EYXRhYmFzZS5oPgotI2ltcG9y
dCA8V2ViS2l0L1dlYlJlc291cmNlTG9hZERlbGVnYXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2Vi
Vmlld0ludGVybmFsLmg+Ci0KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4K
LSNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgotCi1AaW1wbGVtZW50YXRpb24g
V2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcKLQotLSBpbml0V2l0aEZyYW1lOihOU1JlY3Qp
ZnJhbWUKLXsKLSAgICBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07Ci0gICAgW3NlbGYgc2V0
RnJhbWU6TlNaZXJvUmVjdF07Ci0gICAgW3NlbGYgc2V0TW9kZTpOUF9GVUxMXTsKLSAgICBbc2Vs
ZiBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNp
emFibGVdOwotICAgIG5lZWRzTGF5b3V0ID0gWUVTOwotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbZGF0YVNvdXJjZSByZWxlYXNlXTsKLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0Ci17Ci0gICAgaWYo
bmVlZHNMYXlvdXQpewotICAgICAgICBbc2VsZiBsYXlvdXRdOwotICAgIH0KLQotICAgIFtzdXBl
ciBkcmF3UmVjdDpyZWN0XTsKLX0KLQotLSAoQk9PTCljYW5TdGFydAotewotICAgIHJldHVybiAo
ZGF0YVNvdXJjZSAhPSBuaWwpOwotfQotCi0tICh2b2lkKWRpZFN0YXJ0Ci17Ci0gICAgLy8gRGVs
aXZlciB3aGF0IGhhcyBub3QgYmVlbiBwYXNzZWQgdG8gdGhlIHBsdWctaW4gdXAgdG8gdGhpcyBw
b2ludC4KLSAgICAvLyBEbyB0aGlzIGluIGNhc2UgdGhlIHBsdWctaW4gd2FzIHN0YXJ0ZWQgYWZ0
ZXIgdGhlIGxvYWQgc3RhcnRlZC4KLSAgICBXZWJOZXRzY2FwZVBsdWdpblJlcHJlc2VudGF0aW9u
ICpyZXByZXNlbnRhdGlvbiA9IChXZWJOZXRzY2FwZVBsdWdpblJlcHJlc2VudGF0aW9uICopW2Rh
dGFTb3VyY2UgcmVwcmVzZW50YXRpb25dOwotICAgIEFTU0VSVChbcmVwcmVzZW50YXRpb24gaXNL
aW5kT2ZDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbiBjbGFzc11dKTsKLSAg
ICBbcmVwcmVzZW50YXRpb24gcmVkZWxpdmVyU3RyZWFtXTsKLX0KLQotLSAoV2ViRGF0YVNvdXJj
ZSAqKWRhdGFTb3VyY2UKLXsKLSAgICByZXR1cm4gZGF0YVNvdXJjZTsKLX0KLQotLSAodm9pZClz
ZXREYXRhU291cmNlOihXZWJEYXRhU291cmNlICopdGhlRGF0YVNvdXJjZQoteyAgICAKLSAgICBb
ZGF0YVNvdXJjZSByZWxlYXNlXTsKLSAgICBkYXRhU291cmNlID0gW3RoZURhdGFTb3VyY2UgcmV0
YWluXTsKLQotICAgIE5TU3RyaW5nICpNSU1FID0gW1tkYXRhU291cmNlIHJlc3BvbnNlXSBNSU1F
VHlwZV07Ci0gICAgCi0gICAgW3NlbGYgc2V0TUlNRVR5cGU6TUlNRV07Ci0gICAgW3NlbGYgc2V0
QmFzZVVSTDpbW2RhdGFTb3VyY2UgcmVxdWVzdF0gVVJMXV07Ci0KLSAgICBXZWJOZXRzY2FwZVBs
dWdpblBhY2thZ2UgKnRoZVBsdWdpbjsKLSAgICB0aGVQbHVnaW4gPSAoV2ViTmV0c2NhcGVQbHVn
aW5QYWNrYWdlICopW1tXZWJQbHVnaW5EYXRhYmFzZSBpbnN0YWxsZWRQbHVnaW5zXSBwbHVnaW5G
b3JNSU1FVHlwZTpNSU1FXTsKLSAgICBBU1NFUlQoW3RoZVBsdWdpbiBpc0tpbmRPZkNsYXNzOltX
ZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UgY2xhc3NdXSk7Ci0KLSAgICBpZiAoIVt0aGVQbHVnaW4g
bG9hZF0pIHsKLSAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIF9pbml0
V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnSW4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFVS
TDpbW3RoZURhdGFTb3VyY2UgcmVxdWVzdF0gVVJMXQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMOm5pbAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1l
Olt0aGVQbHVnaW4gbmFtZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpNSU1FXTsKLSAgICAgICAgV2ViVmlldyAqd2Vi
VmlldyA9IFtbdGhlRGF0YVNvdXJjZSB3ZWJGcmFtZV0gd2ViVmlld107Ci0gICAgICAgIFtbd2Vi
VmlldyBfcmVzb3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z0luRmFpbGVkV2l0aEVycm9yOmVy
cm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFT
b3VyY2U6dGhlRGF0YVNvdXJjZV07Ci0gICAgICAgIFtlcnJvciByZWxlYXNlXTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFBsdWdpbjp0aGVQbHVnaW5dOwotCi0gICAg
aWYgKFtzZWxmIGN1cnJlbnRXaW5kb3ddKSB7Ci0gICAgICAgIFtzZWxmIHN0YXJ0XTsKLSAgICB9
Ci19Ci0KLS0gKHZvaWQpZGF0YVNvdXJjZVVwZGF0ZWQ6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291
cmNlCi17Ci0gICAgaWYgKG5lZWRzTGF5b3V0KQotICAgICAgICBbc2VsZiBsYXlvdXRdOwotfQot
Ci0tICh2b2lkKXNldE5lZWRzTGF5b3V0OihCT09MKWZsYWcKLXsKLSAgICBuZWVkc0xheW91dCA9
IGZsYWc7Ci19Ci0KLS0gKHZvaWQpbGF5b3V0Ci17Ci0gICAgTlNSZWN0IHN1cGVyRnJhbWUgPSBb
W1tkYXRhU291cmNlIHdlYkZyYW1lXSBmcmFtZVZpZXddIGZyYW1lXTsKLSAgICBbc2VsZiBzZXRG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgoc3VwZXJGcmFtZSksIE5TSGVpZ2h0KHN1cGVy
RnJhbWUpKV07Ci0gICAgbmVlZHNMYXlvdXQgPSBOTzsKLX0KLQotLSAodm9pZCl2aWV3V2lsbE1v
dmVUb0hvc3RXaW5kb3c6KE5TV2luZG93ICopaG9zdFdpbmRvdwotewotICAgIFtzdXBlciB2aWV3
V2lsbE1vdmVUb0hvc3RXaW5kb3c6aG9zdFdpbmRvd107Ci19Ci0KLS0gKHZvaWQpdmlld0RpZE1v
dmVUb0hvc3RXaW5kb3cKLXsKLSAgICBbc3VwZXIgdmlld0RpZE1vdmVUb0hvc3RXaW5kb3ddOwot
fQotCi0tIChCT09MKWRvY3VtZW50Vmlld1Nob3VsZEhhbmRsZVByaW50Ci17Ci0gICAgLy8gQWxs
b3cgdGhlIHBsdWdpbiB0byB0YWtlIG92ZXIgcHJpbnRpbmcgaWYgaXQgZGVmaW5lcyBhbiBOUFBf
UHJpbnQgZnVuY3Rpb24KLSAgICByZXR1cm4gKE5QUF9QcmludCAhPSBOVUxMKTsKLX0KLQotLSAo
dm9pZClwcmludERvY3VtZW50VmlldwotewotICAgIC8vIFRoZSBwbHVnaW4gY2Fubm90IHByaW50
IGlmIGl0IGRvZXMgbm90IGhhdmUgYW4gTlBQX1ByaW50IGZ1bmN0aW9uCi0gICAgaWYgKCFOUFBf
UHJpbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBMZXQgdGhlIHBsdWdpbiB0YWtl
IGNvbnRyb2wgb2YgcHJpbnRpbmcgd2hlbiBpbiBOUF9GVUxMIG1vZGUKLSAgICBOUFByaW50IHBs
YXRmb3JtUHJpbnQ7Ci0gICAgcGxhdGZvcm1QcmludC5tb2RlID0gTlBfRlVMTDsKLSAgICBwbGF0
Zm9ybVByaW50LnByaW50LmZ1bGxQcmludC5wbHVnaW5QcmludGVkID0gMDsKLSAgICBwbGF0Zm9y
bVByaW50LnByaW50LmZ1bGxQcmludC5wcmludE9uZSA9IDA7Ci0gICAgcGxhdGZvcm1QcmludC5w
cmludC5mdWxsUHJpbnQucGxhdGZvcm1QcmludCA9IE5VTEw7Ci0gICAgTlBQX1ByaW50KGluc3Rh
bmNlLCAmcGxhdGZvcm1QcmludCk7Ci19Ci0KLUBlbmQKSW5kZXg6IFdlYktpdC9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcuaAkocmV2aXNpb24gMTQ4MDYpCisrKyBX
ZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxMyArMjksMjAgQEAKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KIAogI2lt
cG9ydCA8V2ViS2l0L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaD4KKyNpbXBvcnQgPFdlYktp
dC9XZWJCYXNlUGx1Z2luUGFja2FnZS5oPgogCiBAY2xhc3MgV2ViRnJhbWU7CitAY2xhc3MgV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW07CiAKLUBpbnRlcmZhY2UgV2ViTmV0c2NhcGVQbHVnaW5FbWJl
ZGRlZFZpZXcgOiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3CitAaW50ZXJmYWNlIFdlYk5ldHNj
YXBlUGx1Z2luRW1iZWRkZWRWaWV3IDogV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyA8V2ViUGx1
Z2luTWFudWFsTG9hZGVyPgogewogICAgIE5TVVJMICpVUkw7CiAgICAgV2ViRnJhbWUgKl93ZWJG
cmFtZTsKKyAgICAKKyAgICBCT09MIF9sb2FkTWFudWFsbHk7CisgICAgV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0gKl9tYW51YWxTdHJlYW07CisgICAgdW5zaWduZWQgX2RhdGFMZW5ndGhSZWNlaXZl
ZDsKKyAgICBOU0Vycm9yICpfZXJyb3I7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClyCkBAIC00NCw4ICs1MSwxMSBAQAogICAgICAgICAgICAgYmFzZVVSTDooTlNVUkwgKiliYXNl
VVJMCiAgICAgICAgICAgIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUUKICAgICAgIGF0dHJpYnV0
ZUtleXM6KE5TQXJyYXkgKilrZXlzCi0gICAgYXR0cmlidXRlVmFsdWVzOihOU0FycmF5ICopdmFs
dWVzOworICAgIGF0dHJpYnV0ZVZhbHVlczooTlNBcnJheSAqKXZhbHVlcworICAgICAgIGxvYWRN
YW51YWxseTooQk9PTClsb2FkTWFudWFsbHk7CiAKIC0gKHZvaWQpc2V0V2ViRnJhbWU6KFdlYkZy
YW1lICopd2ViRnJhbWU7CiAKKy0gKHZvaWQpcmVkZWxpdmVyU3RyZWFtOworCiBAZW5kCkluZGV4
OiBXZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldy5tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3Lm0JKHJl
dmlzaW9uIDE0ODA2KQorKysgV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRl
ZFZpZXcubQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW1wb3J0IDxXZWJL
aXQvV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcuaD4KIAorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvQXNzZXJ0aW9ucy5oPgorCiAjaW1wb3J0IDxXZWJLaXQvV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZUJyaWRnZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2UuaD4KQEAgLTM1LDYgKzM3LDcgQEAKICNpbXBvcnQg
PFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXcu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaD4KKyNpbXBvcnQg
PFdlYktpdC9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5T
Vmlld0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViTlNVUkxSZXF1ZXN0RXh0cmFzLmg+CkBAIC00OSw2ICs1Miw3IEBACiAgICAg
ICAgICAgIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUUKICAgICAgIGF0dHJpYnV0ZUtleXM6KE5T
QXJyYXkgKilrZXlzCiAgICAgYXR0cmlidXRlVmFsdWVzOihOU0FycmF5ICopdmFsdWVzCisgICAg
ICAgbG9hZE1hbnVhbGx5OihCT09MKWxvYWRNYW51YWxseQogewogICAgIFtzdXBlciBpbml0V2l0
aEZyYW1lOmZyYW1lXTsKIApAQCAtNjQsMjYgKzY4LDM4IEBACiAgICAgW3NlbGYgc2V0TUlNRVR5
cGU6TUlNRV07CiAgICAgW3NlbGYgc2V0QmFzZVVSTDp0aGVCYXNlVVJMXTsKICAgICBbc2VsZiBz
ZXRBdHRyaWJ1dGVLZXlzOmtleXMgYW5kVmFsdWVzOnZhbHVlc107Ci0gICAgW3NlbGYgc2V0TW9k
ZTpOUF9FTUJFRF07CisgICAgaWYgKGxvYWRNYW51YWxseSkKKyAgICAgICAgW3NlbGYgc2V0TW9k
ZTpOUF9GVUxMXTsKKyAgICBlbHNlCisgICAgICAgIFtzZWxmIHNldE1vZGU6TlBfRU1CRURdOwog
CisgICAgX2xvYWRNYW51YWxseSA9IGxvYWRNYW51YWxseTsKKyAgICAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW1VSTCByZWxlYXNlXTsKKyAgICBbX21h
bnVhbFN0cmVhbSByZWxlYXNlXTsKKyAgICBbX2Vycm9yIHJlbGVhc2VdOwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAogLSAodm9pZClkaWRTdGFydAogeworICAgIGlmIChfbG9hZE1hbnVhbGx5
KSB7CisgICAgICAgIFtzZWxmIHJlZGVsaXZlclN0cmVhbV07CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCiAgICAgLy8gSWYgdGhlIE9CSkVDVC9FTUJFRCB0YWcgaGFzIG5vIFNSQywgdGhl
IFVSTCBpcyBwYXNzZWQgdG8gdXMgYXMgIiIuCiAgICAgLy8gQ2hlY2sgZm9yIHRoaXMgYW5kIGRv
bid0IHN0YXJ0IGEgbG9hZCBpbiB0aGlzIGNhc2UuCiAgICAgaWYgKFVSTCAhPSBuaWwgJiYgIVtV
UkwgX3dlYl9pc0VtcHR5XSkgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXTsKICAgICAgICAgW3Jl
cXVlc3QgX3dlYl9zZXRIVFRQUmVmZXJyZXI6W1tbc2VsZiB3ZWJGcmFtZV0gX2JyaWRnZV0gcmVm
ZXJyZXJdXTsKLSAgICAgICAgW3NlbGYgbG9hZFJlcXVlc3Q6cmVxdWVzdCBpblRhcmdldDpuaWwg
d2l0aE5vdGlmeURhdGE6bmlsIHNlbmROb3RpZmljYXRpb246Tk9dOwotICAgIH0KKyAgICAgICAg
W3NlbGYgbG9hZFJlcXVlc3Q6cmVxdWVzdCBpblRhcmdldDpuaWwgd2l0aE5vdGlmeURhdGE6bmls
IHNlbmROb3RpZmljYXRpb246Tk8gbG9hZE1hbnVhbGx5Ol9sb2FkTWFudWFsbHldOworICAgIH0g
CiB9CiAKIC0gKHZvaWQpc2V0V2ViRnJhbWU6KFdlYkZyYW1lICopd2ViRnJhbWUKQEAgLTEwMiw0
ICsxMTgsNzYgQEAKICAgICByZXR1cm4gW193ZWJGcmFtZSBkYXRhU291cmNlXTsKIH0KIAorLSh2
b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlc3BvbnNlCit7CisgICAgQVNTRVJUKF9sb2FkTWFudWFsbHkpOworICAg
IEFTU0VSVCghX21hbnVhbFN0cmVhbSk7CisgICAgCisgICAgX21hbnVhbFN0cmVhbSA9IFtbV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0gYWxsb2NdIGluaXRdOworfQorCistICh2b2lkKXBsdWdpblZp
ZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCit7Cisg
ICAgQVNTRVJUKF9sb2FkTWFudWFsbHkpOworICAgIEFTU0VSVChfbWFudWFsU3RyZWFtKTsKKyAg
ICAKKyAgICBfZGF0YUxlbmd0aFJlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CisgICAgCisgICAg
aWYgKCFbc2VsZiBpc1N0YXJ0ZWRdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKFtf
bWFudWFsU3RyZWFtIGluc3RhbmNlXSA9PSBOVUxMKSB7CisgICAgICAgIFtfbWFudWFsU3RyZWFt
IHNldFJlcXVlc3RVUkw6W1tbc2VsZiBkYXRhU291cmNlXSByZXF1ZXN0XSBVUkxdXTsKKyAgICAg
ICAgW19tYW51YWxTdHJlYW0gc2V0UGx1Z2luUG9pbnRlcjpbc2VsZiBwbHVnaW5Qb2ludGVyXV07
CisgICAgICAgIEFTU0VSVChbX21hbnVhbFN0cmVhbSBpbnN0YW5jZV0pOworICAgICAgICBbX21h
bnVhbFN0cmVhbSBzdGFydFN0cmVhbVdpdGhSZXNwb25zZTpbW3NlbGYgZGF0YVNvdXJjZV0gcmVz
cG9uc2VdXTsKKyAgICB9CisgICAgCisgICAgaWYgKFtfbWFudWFsU3RyZWFtIGluc3RhbmNlXSkK
KyAgICAgICAgW19tYW51YWxTdHJlYW0gcmVjZWl2ZWREYXRhOmRhdGFdOworfQorCistICh2b2lk
KXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAq
KWVycm9yCit7CisgICAgQVNTRVJUKF9sb2FkTWFudWFsbHkpOworICAgIAorICAgIFtlcnJvciBy
ZXRhaW5dOworICAgIFtfZXJyb3IgcmVsZWFzZV07CisgICAgX2Vycm9yID0gZXJyb3I7CisgICAg
CisgICAgaWYgKCFbc2VsZiBpc1N0YXJ0ZWRdKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgW19tYW51YWxTdHJlYW0gZGVzdHJveVN0cmVhbVdpdGhFcnJvcjplcnJvcl07Cit9
CisKKy0gKHZvaWQpcGx1Z2luVmlld0ZpbmlzaGVkTG9hZGluZzooTlNWaWV3ICopcGx1Z2luVmll
dyAKK3sKKyAgICBBU1NFUlQoX2xvYWRNYW51YWxseSk7CisgICAgQVNTRVJUKF9tYW51YWxTdHJl
YW0pOworICAgIAorICAgIGlmIChbc2VsZiBpc1N0YXJ0ZWRdKQorICAgICAgICBbX21hbnVhbFN0
cmVhbSBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YTpbW3NlbGYgZGF0YVNvdXJjZV0gZGF0YV1dOyAg
ICAKK30KKworLSAodm9pZClyZWRlbGl2ZXJTdHJlYW0KK3sKKyAgICBpZiAoW3NlbGYgZGF0YVNv
dXJjZV0gJiYgW3NlbGYgaXNTdGFydGVkXSkgeworICAgICAgICAvLyBEZWxpdmVyIHdoYXQgaGFz
IG5vdCBiZWVuIHBhc3NlZCB0byB0aGUgcGx1Zy1pbiB1cCB0byB0aGlzIHBvaW50LgorICAgICAg
ICBpZiAoX2RhdGFMZW5ndGhSZWNlaXZlZCA+IDApIHsKKyAgICAgICAgICAgIE5TRGF0YSAqZGF0
YSA9IFtbW3NlbGYgZGF0YVNvdXJjZV0gZGF0YV0gc3ViZGF0YVdpdGhSYW5nZTpOU01ha2VSYW5n
ZSgwLCBfZGF0YUxlbmd0aFJlY2VpdmVkKV07CisgICAgICAgICAgICBpbnN0YW5jZSA9IE5VTEw7
CisgICAgICAgICAgICBfZGF0YUxlbmd0aFJlY2VpdmVkID0gMDsKKyAgICAgICAgICAgIFtzZWxm
IHBsdWdpblZpZXc6c2VsZiByZWNlaXZlZERhdGE6ZGF0YV07CisgICAgICAgICAgICBpZiAoIVtb
c2VsZiBkYXRhU291cmNlXSBpc0xvYWRpbmddKSB7CisgICAgICAgICAgICAgICAgaWYgKF9lcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYgcGx1Z2luVmlldzpzZWxmIHJlY2VpdmVkRXJy
b3I6X2Vycm9yXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFtz
ZWxmIHBsdWdpblZpZXdGaW5pc2hlZExvYWRpbmc6c2VsZl07CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKIEBlbmQKSW5kZXg6IFdlYktpdC9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luUmVwcmVzZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblJlcHJlc2VudGF0aW9uLmgJKHJldmlzaW9uIDE0ODA2KQorKysgV2ViS2l0
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+Ci0KLSNpbXBvcnQgPFdlYktpdC9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aD4KLQotQGNsYXNzIE5TRXJyb3I7Ci1AY2xhc3MgV2ViRGF0YVNvdXJjZTsKLUBwcm90b2NvbCBX
ZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uOwotCi1AaW50ZXJmYWNlIFdlYk5ldHNjYXBlUGx1Z2lu
UmVwcmVzZW50YXRpb24gOiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0gPFdlYkRvY3VtZW50
UmVwcmVzZW50YXRpb24+Ci17Ci0gICAgdW5zaWduZWQgX2RhdGFMZW5ndGhSZWNlaXZlZDsKLSAg
ICBXZWJEYXRhU291cmNlICpfZGF0YVNvdXJjZTsKLSAgICBOU0Vycm9yICpfZXJyb3I7Ci19Ci0K
LS0gKHZvaWQpcmVkZWxpdmVyU3RyZWFtOwotCi1AZW5kCkluZGV4OiBXZWJLaXQvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblJlcHJlc2VudGF0aW9uLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbi5tCShyZXZpc2lvbiAxNDgwNikK
KysrIFdlYktpdC9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luUmVwcmVzZW50YXRpb24ubQkod29y
a2luZyBjb3B5KQpAQCAtMSwxNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxXZWJL
aXQvV2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbi5oPgotCi0jaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZUludGVy
bmFsLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJG
cmFtZVZpZXcuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmll
dy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5oPgotCi0jaW1w
b3J0IDxGb3VuZGF0aW9uL05TVVJMUmVzcG9uc2UuaD4KLQotQGltcGxlbWVudGF0aW9uIFdlYk5l
dHNjYXBlUGx1Z2luUmVwcmVzZW50YXRpb24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19l
cnJvciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpc2V0RGF0
YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRzCi17Ci0gICAgX2RhdGFTb3VyY2UgPSBkczsKLX0K
LQotLSAoQk9PTClpc1BsdWdpblZpZXdTdGFydGVkCi17Ci0gICAgV2ViTmV0c2NhcGVQbHVnaW5E
b2N1bWVudFZpZXcgKnZpZXcgPSAoV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcgKilbW1tf
ZGF0YVNvdXJjZSB3ZWJGcmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwotICAgIEFTU0VS
VChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50VmlldyBjbGFz
c11dKTsKLSAgICByZXR1cm4gW3ZpZXcgaXNTdGFydGVkXTsKLX0KLQotLSAodm9pZClyZWNlaXZl
ZERhdGE6KE5TRGF0YSAqKWRhdGEgd2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkcwot
ewotICAgIF9kYXRhTGVuZ3RoUmVjZWl2ZWQgKz0gW2RhdGEgbGVuZ3RoXTsKLSAgICAKLSAgICBX
ZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50VmlldyAqdmlldyA9IChXZWJOZXRzY2FwZVBsdWdpbkRv
Y3VtZW50VmlldyAqKVtbW19kYXRhU291cmNlIHdlYkZyYW1lXSBmcmFtZVZpZXddIGRvY3VtZW50
Vmlld107Ci0gICAgQVNTRVJUKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYk5ldHNjYXBlUGx1Z2lu
RG9jdW1lbnRWaWV3IGNsYXNzXV0pOwotICAgIAotICAgIGlmICghW3ZpZXcgaXNTdGFydGVkXSkg
ewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChpbnN0YW5jZSA9PSBOVUxM
KSB7Ci0gICAgICAgIFtzZWxmIHNldFJlcXVlc3RVUkw6W1tfZGF0YVNvdXJjZSByZXF1ZXN0XSBV
UkxdXTsKLSAgICAgICAgW3NlbGYgc2V0UGx1Z2luUG9pbnRlcjpbdmlldyBwbHVnaW5Qb2ludGVy
XV07Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZSk7Ci0gICAgICAgIFtzZWxmIHN0YXJ0U3RyZWFt
V2l0aFJlc3BvbnNlOltkcyByZXNwb25zZV1dOwotICAgIH0KLSAgICAKLSAgICAvLyBEbyBub3Qg
YWRkIGRhdGEgaWYgdGhlcmUgaXMgbm8gTlBQIGluc3RhbmNlLiAgVGhlIGluc3RhbmNlIGlzIGNs
ZWFyZWQgd2hlbiB0aGUgc3RyZWFtIGlzIGRlc3Ryb3llZC4KLSAgICBpZiAoaW5zdGFuY2UpCi0g
ICAgICAgIFtzZWxmIHJlY2VpdmVkRGF0YTpkYXRhXTsKLX0KLQotLSAodm9pZClyZWNlaXZlZEVy
cm9yOihOU0Vycm9yICopZXJyb3Igd2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkcwot
ewotICAgIFtlcnJvciByZXRhaW5dOwotICAgIFtfZXJyb3IgcmVsZWFzZV07Ci0gICAgX2Vycm9y
ID0gZXJyb3I7Ci0gICAgCi0gICAgaWYgKCFbc2VsZiBpc1BsdWdpblZpZXdTdGFydGVkXSkgewot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFtzZWxmIGRlc3Ryb3lTdHJlYW1XaXRo
RXJyb3I6ZXJyb3JdOwotfQotCi0tICh2b2lkKWNhbmNlbExvYWRXaXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvcgotewotICAgIFtfZGF0YVNvdXJjZSBfc3RvcExvYWRpbmdXaXRoRXJyb3I6ZXJyb3Jd
OwotfQotCi0tICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291
cmNlICopZHMKLXsgICAgCi0gICAgaWYgKFtzZWxmIGlzUGx1Z2luVmlld1N0YXJ0ZWRdKSB7Ci0g
ICAgICAgIFtzZWxmIGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhOltkcyBkYXRhXV07Ci0gICAgfQot
fQotCi0tIChCT09MKWNhblByb3ZpZGVEb2N1bWVudFNvdXJjZQotewotICAgIHJldHVybiBOTzsK
LX0KLQotLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQotewotICAgIHJldHVybiBuaWw7Ci19
Ci0KLS0gKE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lk
KXJlZGVsaXZlclN0cmVhbQotewotICAgIGlmIChfZGF0YVNvdXJjZSAmJiBbc2VsZiBpc1BsdWdp
blZpZXdTdGFydGVkXSkgewotICAgICAgICAvLyBEZWxpdmVyIHdoYXQgaGFzIG5vdCBiZWVuIHBh
c3NlZCB0byB0aGUgcGx1Zy1pbiB1cCB0byB0aGlzIHBvaW50LgotICAgICAgICBpZiAoX2RhdGFM
ZW5ndGhSZWNlaXZlZCA+IDApIHsKLSAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbX2RhdGFT
b3VyY2UgZGF0YV0gc3ViZGF0YVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCBfZGF0YUxlbmd0aFJl
Y2VpdmVkKV07Ci0gICAgICAgICAgICBpbnN0YW5jZSA9IE5VTEw7Ci0gICAgICAgICAgICBfZGF0
YUxlbmd0aFJlY2VpdmVkID0gMDsKLSAgICAgICAgICAgIFtzZWxmIHJlY2VpdmVkRGF0YTpkYXRh
IHdpdGhEYXRhU291cmNlOl9kYXRhU291cmNlXTsKLSAgICAgICAgICAgIGlmICghW19kYXRhU291
cmNlIGlzTG9hZGluZ10pIHsKLSAgICAgICAgICAgICAgICBpZiAoX2Vycm9yKQotICAgICAgICAg
ICAgICAgICAgICBbc2VsZiByZWNlaXZlZEVycm9yOl9lcnJvciB3aXRoRGF0YVNvdXJjZTpfZGF0
YVNvdXJjZV07Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBbc2Vs
ZiBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpfZGF0YVNvdXJjZV07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLUBlbmQKSW5kZXg6IFdlYktpdC9QbHVnaW5zL1dl
YlBsdWdpbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvUGx1Z2lucy9XZWJQbHVn
aW5Db250cm9sbGVyLmgJKHJldmlzaW9uIDE0ODA2KQorKysgV2ViS2l0L1BsdWdpbnMvV2ViUGx1
Z2luQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAgKi8KIAog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViQmFz
ZVBsdWdpblBhY2thZ2UuaD4KIAogQGNsYXNzIFdlYkhUTUxWaWV3OwogQGNsYXNzIFdlYlBsdWdp
blBhY2thZ2U7CkBAIC0zNCw3ICszNSw3IEBACiBAY2xhc3MgV2ViVmlldzsKIEBjbGFzcyBXZWJE
YXRhU291cmNlOwogCi1AaW50ZXJmYWNlIFdlYlBsdWdpbkNvbnRyb2xsZXIgOiBOU09iamVjdAor
QGludGVyZmFjZSBXZWJQbHVnaW5Db250cm9sbGVyIDogTlNPYmplY3QgPFdlYlBsdWdpbk1hbnVh
bExvYWRlcj4KIHsKICAgICBOU1ZpZXcgKl9kb2N1bWVudFZpZXc7CiAgICAgV2ViRGF0YVNvdXJj
ZSAqX2RhdGFTb3VyY2U7CkluZGV4OiBXZWJLaXQvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVy
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tCShy
ZXZpc2lvbiAxNDgwNikKKysrIFdlYktpdC9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubQko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1l
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkhUTUxWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1By
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRMb2dnaW5nLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1ZpZXdFeHRyYXMuaD4K
QEAgLTQwLDYgKzQxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW5Db250YWluZXIuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW5Db250YWluZXJDaGVjay5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYlBsdWdpblBhY2thZ2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW5Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUGx1Z2luVmlld0ZhY3RvcnkuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJWaWV3SW50ZXJuYWwuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJVSURlbGVnYXRlLmg+
CkBAIC0zNTUsNCArMzU3LDQwIEBAIHN0YXRpYyBOU011dGFibGVTZXQgKnBsdWdpblZpZXdzID0g
bmlsOwogICAgIHJldHVybiBbcmVzcG9uc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ107
CiB9CiAKKy0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZFJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sgICAgCisgICAgaWYgKFtwbHVnaW5W
aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luTWFpblJlc291cmNlRGlk
UmVjZWl2ZVJlc3BvbnNlOildKQorICAgICAgICBbcGx1Z2luVmlldyB3ZWJQbHVnSW5NYWluUmVz
b3VyY2VEaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOworICAgIGVsc2UgeworICAgICAgICAv
LyBDYW5jZWwgdGhlIGxvYWQgc2luY2UgdGhpcyBwbHVnLWluIGRvZXMgaXRzIG93biBsb2FkaW5n
LgorCisgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzQyNTgwMDg+CisgICAg
ICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJv
ckNvZGU6V2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VVJMOltyZXNwb25z
ZSBVUkxdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBsdWdpblBhZ2VVUkw6bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbk5hbWU6bmlsIC8vIEZJWE1FOiBHZXQgdGhpcyBm
cm9tIHNvbWV3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25zZSBNSU1FVHlwZV1dOworICAgICAgICBb
X2RhdGFTb3VyY2UgX3N0b3BMb2FkaW5nV2l0aEVycm9yOmVycm9yXTsKKyAgICAgICAgW2Vycm9y
IHJlbGVhc2VdOworICAgIH0gICAgICAgIAorfQorCistICh2b2lkKXBsdWdpblZpZXc6KE5TVmll
dyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgaWYgKFtw
bHVnaW5WaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luTWFpblJlc291
cmNlRGlkUmVjZWl2ZURhdGE6KV0pCisgICAgICAgIFtwbHVnaW5WaWV3IHdlYlBsdWdJbk1haW5S
ZXNvdXJjZURpZFJlY2VpdmVEYXRhOmRhdGFdOworfQorCistICh2b2lkKXBsdWdpblZpZXc6KE5T
VmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAg
aWYgKFtwbHVnaW5WaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luTWFp
blJlc291cmNlRGlkRmFpbFdpdGhFcnJvcjopXSkKKyAgICAgICAgW3BsdWdpblZpZXcgd2ViUGx1
Z0luTWFpblJlc291cmNlRGlkRmFpbFdpdGhFcnJvcjplcnJvcl07Cit9CisKKy0gKHZvaWQpcGx1
Z2luVmlld0ZpbmlzaGVkTG9hZGluZzooTlNWaWV3ICopcGx1Z2luVmlldworeworICAgIGlmIChb
cGx1Z2luVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlBsdWdJbk1haW5SZXNv
dXJjZURpZEZpbmlzaExvYWRpbmcpXSkKKyAgICAgICAgW3BsdWdpblZpZXcgd2ViUGx1Z0luTWFp
blJlc291cmNlRGlkRmluaXNoTG9hZGluZ107Cit9CisKIEBlbmQKSW5kZXg6IFdlYktpdC9QbHVn
aW5zL1dlYlBsdWdpbkRhdGFiYXNlLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2Vi
UGx1Z2luRGF0YWJhc2UubQkocmV2aXNpb24gMTQ4MDYpCisrKyBXZWJLaXQvUGx1Z2lucy9XZWJQ
bHVnaW5EYXRhYmFzZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTAgQEAKICNpbXBv
cnQgPFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZy
YW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVWaWV3SW50ZXJuYWwuaD4KKyNpbXBvcnQg
PFdlYktpdC9XZWJIVE1MUmVwcmVzZW50YXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJIVE1M
Vmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdExvZ2dpbmcuaD4KLSNpbXBvcnQgPFdlYktp
dC9XZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5l
dHNjYXBlUGx1Z2luUGFja2FnZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYk5ldHNjYXBlUGx1Z2lu
UmVwcmVzZW50YXRpb24uaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW5Eb2N1bWVudFZpZXcu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW5QYWNrYWdlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAt
MTg4LDYgKzE4NywyMCBAQCBzdGF0aWMgTlNBcnJheSAqcGx1Z2luTG9jYXRpb25zKHZvaWQpCiAg
ICAgCiAgICAgLy8gIFJlbW92ZSBhbGwgdW5pbnN0YWxsZWQgcGx1Zy1pbnMgYW5kIGFkZCB0aGUg
bmV3IHBsdWctaW5zLgogICAgIGlmIChwbHVnaW5zKSB7CisgICAgICAgIC8vIFVucmVnaXN0ZXIg
cGx1Zy1pbiB2aWV3cyBhbmQgcmVwcmVzZW50YXRpb25zCisgICAgICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkgKk1JTUVUb1ZpZXdDbGFzcyA9IFtXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1h
Z2VUeXBlT21pc3Npb246Tk9dOyAgICAgICAgCisgICAgICAgIE5TRW51bWVyYXRvciAqcGx1Z2lu
RW51bWVyYXRvciA9IFtwbHVnaW5zIG9iamVjdEVudW1lcmF0b3JdOworICAgICAgICBXZWJCYXNl
UGx1Z2luUGFja2FnZSAqcGx1Z2luUGFja2FnZTsKKyAgICAgICAgd2hpbGUgKChwbHVnaW5QYWNr
YWdlID0gW3BsdWdpbkVudW1lcmF0b3IgbmV4dE9iamVjdF0pKSB7CisgICAgICAgICAgICBOU0Vu
dW1lcmF0b3IgKk1JTUVUeXBlRW51bWVyYXRvciA9IFtwbHVnaW5QYWNrYWdlIE1JTUVUeXBlRW51
bWVyYXRvcl07CisgICAgICAgICAgICBOU1N0cmluZyAqTUlNRVR5cGU7CisgICAgICAgICAgICB3
aGlsZSAoKE1JTUVUeXBlID0gW01JTUVUeXBlRW51bWVyYXRvciBuZXh0T2JqZWN0XSkpIHsKKyAg
ICAgICAgICAgICAgICBDbGFzcyBjbGFzcyA9IFtNSU1FVG9WaWV3Q2xhc3Mgb2JqZWN0Rm9yS2V5
Ok1JTUVUeXBlXTsKKyAgICAgICAgICAgICAgICBpZiAoY2xhc3MgPT0gW1dlYkhUTUxWaWV3IGNs
YXNzXSkKKyAgICAgICAgICAgICAgICAgICAgW1dlYlZpZXcgX3VucmVnaXN0ZXJWaWV3Q2xhc3NB
bmRSZXByZXNlbnRhdGlvbkNsYXNzRm9yTUlNRVR5cGU6TUlNRVR5cGVdOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBOU011dGFibGVTZXQgKnBsdWdpbnNUb1Vu
bG9hZCA9IFtwbHVnaW5zIG11dGFibGVDb3B5XTsKICAgICAgICAgW3BsdWdpbnNUb1VubG9hZCBt
aW51c1NldDpuZXdQbHVnaW5zXTsKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0yMTEsMTYgKzIyNCw2
IEBAIHN0YXRpYyBOU0FycmF5ICpwbHVnaW5Mb2NhdGlvbnModm9pZCkKICAgICAgICAgcGx1Z2lu
cyA9IG5ld1BsdWdpbnM7CiAgICAgfQogICAgIAotICAgIC8vIFVucmVnaXN0ZXIgbmV0c2NhcGUg
cGx1Zy1pbiBXZWJEb2N1bWVudFZpZXdzIGFuZCBXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9ucy4K
LSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpNSU1FVG9WaWV3Q2xhc3MgPSBbV2ViRnJhbWVWaWV3
IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOk5PXTsKLSAgICBOU0VudW1lcmF0b3Ig
KmtleUVudW1lcmF0b3IgPSBbTUlNRVRvVmlld0NsYXNzIGtleUVudW1lcmF0b3JdOwotICAgIE5T
U3RyaW5nICpNSU1FVHlwZTsKLSAgICB3aGlsZSAoKE1JTUVUeXBlID0gW2tleUVudW1lcmF0b3Ig
bmV4dE9iamVjdF0pICE9IG5pbCkgewotICAgICAgICBDbGFzcyBjbGFzcyA9IFtNSU1FVG9WaWV3
Q2xhc3Mgb2JqZWN0Rm9yS2V5Ok1JTUVUeXBlXTsKLSAgICAgICAgaWYgKGNsYXNzID09IFtXZWJO
ZXRzY2FwZVBsdWdpbkRvY3VtZW50VmlldyBjbGFzc10gfHwgY2xhc3MgPT0gW1dlYlBsdWdpbkRv
Y3VtZW50VmlldyBjbGFzc10pCi0gICAgICAgICAgICBbV2ViVmlldyBfdW5yZWdpc3RlclZpZXdD
bGFzc0FuZFJlcHJlc2VudGF0aW9uQ2xhc3NGb3JNSU1FVHlwZTpNSU1FVHlwZV07Ci0gICAgfQot
ICAgIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBNSU1FIHR5cGVzLgogICAgIE5TTXV0YWJsZVNl
dCAqTUlNRVR5cGVzID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOwogICAgIE5TRW51bWVy
YXRvciAqcGx1Z2luRW51bWVyYXRvciA9IFtwbHVnaW5zIG9iamVjdEVudW1lcmF0b3JdOwpAQCAt
MjI5LDkgKzIzMiwxMCBAQCBzdGF0aWMgTlNBcnJheSAqcGx1Z2luTG9jYXRpb25zKHZvaWQpCiAg
ICAgICAgIFtNSU1FVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbW3BsdWdpbiBNSU1FVHlwZUVu
dW1lcmF0b3JdIGFsbE9iamVjdHNdXTsKICAgICB9CiAgICAgCi0gICAgLy8gUmVnaXN0ZXIgcGx1
Zy1pbiBXZWJEb2N1bWVudFZpZXdzIGFuZCBXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9ucy4KKyAg
ICAvLyBSZWdpc3RlciBwbHVnLWluIHZpZXdzIGFuZCByZXByZXNlbnRhdGlvbnMuCiAgICAgTlNF
bnVtZXJhdG9yICpNSU1FRW51bWVyYXRvciA9IFtbTUlNRVR5cGVzIGFsbE9iamVjdHNdIG9iamVj
dEVudW1lcmF0b3JdOwogICAgIFtNSU1FVHlwZXMgcmVsZWFzZV07CisgICAgTlNTdHJpbmcgKk1J
TUVUeXBlOwogICAgIHdoaWxlICgoTUlNRVR5cGUgPSBbTUlNRUVudW1lcmF0b3IgbmV4dE9iamVj
dF0pICE9IG5pbCkgewogICAgICAgICBpZiAoW1dlYlZpZXcgY2FuU2hvd01JTUVUeXBlQXNIVE1M
Ok1JTUVUeXBlXSkKICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHBsdWctaW5zIHRvIG92ZXJy
aWRlIG91ciBjb3JlIEhUTUwgdHlwZXMuCkBAIC0yNDMsMTMgKzI0Nyw4IEBAIHN0YXRpYyBOU0Fy
cmF5ICpwbHVnaW5Mb2NhdGlvbnModm9pZCkKICAgICAgICAgaWYgKFtwbHVnaW4gaXNRdWlja1Rp
bWVQbHVnSW5dICYmIFtbV2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNz
aW9uOk5PXSBvYmplY3RGb3JLZXk6TUlNRVR5cGVdKQogICAgICAgICAgICAgLy8gRG9uJ3QgYWxs
b3cgdGhlIFFUIHBsdWctaW4gdG8gb3ZlcnJpZGUgYW55IHR5cGVzIGJlY2F1c2UgaXQgY2xhaW1z
IG1hbnkgdGhhdCB3ZSBjYW4gaGFuZGxlIG91cnNlbHZlcy4KICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoW3BsdWdpbiBpc0tpbmRPZkNsYXNzOltXZWJOZXRzY2FwZVBsdWdpblBh
Y2thZ2UgY2xhc3NdXSkKLSAgICAgICAgICAgIFtXZWJWaWV3IHJlZ2lzdGVyVmlld0NsYXNzOltX
ZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50VmlldyBjbGFzc10gcmVwcmVzZW50YXRpb25DbGFzczpb
V2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbiBjbGFzc10gZm9yTUlNRVR5cGU6TUlNRVR5
cGVdOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChbcGx1Z2luIGlzS2luZE9m
Q2xhc3M6W1dlYlBsdWdpblBhY2thZ2UgY2xhc3NdXSk7Ci0gICAgICAgICAgICBbV2ViVmlldyBy
ZWdpc3RlclZpZXdDbGFzczpbV2ViUGx1Z2luRG9jdW1lbnRWaWV3IGNsYXNzXSByZXByZXNlbnRh
dGlvbkNsYXNzOltXZWJQbHVnaW5Eb2N1bWVudFZpZXcgY2xhc3NdIGZvck1JTUVUeXBlOk1JTUVU
eXBlXTsKLSAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgW1dlYlZpZXcgcmVnaXN0ZXJWaWV3
Q2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXSByZXByZXNlbnRhdGlvbkNsYXNzOltXZWJIVE1MUmVw
cmVzZW50YXRpb24gY2xhc3NdIGZvck1JTUVUeXBlOk1JTUVUeXBlXTsKICAgICB9CiB9CiAKSW5k
ZXg6IFdlYktpdC9QbHVnaW5zL1dlYlBsdWdpbkRvY3VtZW50Vmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9QbHVnaW5zL1dlYlBsdWdpbkRvY3VtZW50Vmlldy5oCShyZXZpc2lvbiAxNDgwNikK
KysrIFdlYktpdC9QbHVnaW5zL1dlYlBsdWdpbkRvY3VtZW50Vmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3Vt
ZW50Lmg+Ci0KLUBjbGFzcyBXZWJQbHVnaW5Db250cm9sbGVyOwotQGNsYXNzIFdlYlBsdWdpblBh
Y2thZ2U7Ci0KLUBpbnRlcmZhY2UgV2ViUGx1Z2luRG9jdW1lbnRWaWV3IDogTlNWaWV3IDxXZWJE
b2N1bWVudFZpZXcsIFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+Ci17Ci0gICAgTlNWaWV3ICpw
bHVnaW5WaWV3OwotICAgIFdlYlBsdWdpbkNvbnRyb2xsZXIgKnBsdWdpbkNvbnRyb2xsZXI7Ci0g
ICAgV2ViUGx1Z2luUGFja2FnZSAqcGx1Z2luOwotICAgIFdlYkRhdGFTb3VyY2UgKl9kYXRhU291
cmNlOwotICAgIEJPT0wgZGF0YVNvdXJjZUhhc0JlZW5TZXQ7Ci0gICAgQk9PTCBuZWVkc0xheW91
dDsKLX0KLQotQGVuZApJbmRleDogV2ViS2l0L1BsdWdpbnMvV2ViUGx1Z2luRG9jdW1lbnRWaWV3
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2ViUGx1Z2luRG9jdW1lbnRWaWV3Lm0J
KHJldmlzaW9uIDE0ODA2KQorKysgV2ViS2l0L1BsdWdpbnMvV2ViUGx1Z2luRG9jdW1lbnRWaWV3
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTEsMjE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCA8V2ViS2l0L1dlYlBsdWdpbkRvY3VtZW50Vmlldy5oPgotCi0jaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZUludGVybmFs
Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJGcmFt
ZVZpZXcuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+Ci0jaW1wb3J0
IDxXZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJOU1ZpZXdFeHRy
YXMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW4uaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJQ
bHVnaW5Qcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViUGx1Z2luQ29udHJvbGxlci5oPgot
I2ltcG9ydCA8V2ViS2l0L1dlYlBsdWdpbkRhdGFiYXNlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2Vi
UGx1Z2luUGFja2FnZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlBsdWdpblZpZXdGYWN0b3J5UHJp
dmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KLQotQGltcGxlbWVudGF0aW9uIFdl
YlBsdWdpbkRvY3VtZW50VmlldwotCi0tIGluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQotewot
ICAgIFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXTsKLSAgICBbc2VsZiBzZXRBdXRvcmVzaXpp
bmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwotICAgIG5l
ZWRzTGF5b3V0ID0gWUVTOwotICAgIHBsdWdpbkNvbnRyb2xsZXIgPSBbW1dlYlBsdWdpbkNvbnRy
b2xsZXIgYWxsb2NdIGluaXRXaXRoRG9jdW1lbnRWaWV3OnNlbGZdOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbcGx1Z2luVmlldyByZWxlYXNlXTsKLSAg
ICBbcGx1Z2luIHJlbGVhc2VdOwotICAgIFtwbHVnaW5Db250cm9sbGVyIGRlc3Ryb3lBbGxQbHVn
aW5zXTsKLSAgICBbcGx1Z2luQ29udHJvbGxlciByZWxlYXNlXTsKLSAgICBbX2RhdGFTb3VyY2Ug
cmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWRyYXdSZWN0OihO
U1JlY3QpcmVjdAotewotICAgIGlmIChuZWVkc0xheW91dCkgewotICAgICAgICBbc2VsZiBsYXlv
dXRdOwotICAgIH0KLSAgICBbc3VwZXIgZHJhd1JlY3Q6cmVjdF07Ci19Ci0KLS0gKHZvaWQpc2V0
RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKLXsKLSAgICAvLyBTaW5jZSB0
aGlzIGNsYXNzIGlzIGEgV2ViRG9jdW1lbnRWaWV3IGFuZCBXZWJEb2N1bWVudFJlcHJlc2VudGF0
aW9uLCBzZXREYXRhU291cmNlOiB3aWxsIGJlIGNhbGxlZCB0d2ljZS4gRG8gd29yayBvbmx5IG9u
Y2UuCi0gICAgaWYgKGRhdGFTb3VyY2VIYXNCZWVuU2V0KQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgLy8gQXMgbm90ZWQgYWJvdmUsIC1zZXREYXRhU291cmNlOiB3aWxsIGJlIGNhbGxlZCB0
d2ljZSAtLSBvbmNlIGZvciB0aGUgV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbiwgb25jZSBmb3Ig
dGhlIFdlYkRvY3VtZW50Vmlldy4KLSAgICAvLyBXZSBkb24ndCB3YW50IHRvIG1ha2UgdGhlIHBs
dWdpbiB1bnRpbCB3ZSBrbm93IHdlJ3JlIGJlaW5nIGNvbW1pdHRlZCBhcyB0aGUgV2ViRG9jdW1l
bnRWaWV3IGZvciB0aGUgV2ViRnJhbWUuICBUaGlzIGNoZWNrIGlzCi0gICAgLy8gdG8gZW5zdXJl
IHRoYXQgd2UndmUgYmVlbiBhZGRlZCB0byB0aGUgdmlldyBoaWVyYXJjaHkgYmVmb3JlIGF0dGVt
cHRpbmcgdG8gY3JlYXRlIHRoZSBwbHVnaW4sIGFzIHNvbWUgcGx1Z2lucyBjdXJyZW50bHkgd29y
awotICAgIC8vIHVuZGVyIHRoaXMgYXNzdW1wdGlvbi4KLSAgICBpZiAoIVtzZWxmIHN1cGVydmll
d10pCi0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgX2RhdGFTb3VyY2UgPSBbZGF0YVNv
dXJjZSByZXRhaW5dOwotICAgIFtwbHVnaW5Db250cm9sbGVyIHNldERhdGFTb3VyY2U6ZGF0YVNv
dXJjZV07Ci0gICAgZGF0YVNvdXJjZUhhc0JlZW5TZXQgPSBZRVM7Ci0gICAgCi0gICAgTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UgPSBbZGF0YVNvdXJjZSByZXNwb25zZV07Ci0gICAgTlNTdHJpbmcg
Kk1JTUVUeXBlID0gW3Jlc3BvbnNlIE1JTUVUeXBlXTsgICAgCi0gICAgcGx1Z2luID0gKFdlYlBs
dWdpblBhY2thZ2UgKilbW1tXZWJQbHVnaW5EYXRhYmFzZSBpbnN0YWxsZWRQbHVnaW5zXSBwbHVn
aW5Gb3JNSU1FVHlwZTpNSU1FVHlwZV0gcmV0YWluXTsKLSAgICBBU1NFUlQoW3BsdWdpbiBpc0tp
bmRPZkNsYXNzOltXZWJQbHVnaW5QYWNrYWdlIGNsYXNzXV0pOwotICAgIAotICAgIE5TVVJMICpV
UkwgPSBbcmVzcG9uc2UgVVJMXTsKLSAgICBOU1N0cmluZyAqVVJMU3RyaW5nID0gW1VSTCBfd2Vi
X29yaWdpbmFsRGF0YUFzU3RyaW5nXTsKLSAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBb
W05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpNSU1FVHlwZSwgQCJ0
eXBlIiwgVVJMU3RyaW5nLCBAInNyYyIsIG5pbF07Ci0gICAgTlNEaWN0aW9uYXJ5ICphcmd1bWVu
dHMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAg
ICAgVVJMLCAgICAgICAgICAgICAgICBXZWJQbHVnSW5CYXNlVVJMS2V5LAotICAgICAgICBhdHRy
aWJ1dGVzLCAgICAgICAgIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXksCi0gICAgICAgIHBsdWdpbkNv
bnRyb2xsZXIsICAgV2ViUGx1Z0luQ29udGFpbmVyS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpXZWJQbHVnSW5Nb2RlRnVsbF0sIFdlYlBsdWdJbk1vZGVLZXksCi0gICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sIFdlYlBsdWdJblNob3VsZExvYWRNYWluUmVz
b3VyY2VLZXksIC8vIE5PIGJlY2F1c2Ugd2UncmUgYWxyZWFkeSBsb2FkaW5nIHRoZSBkYXRhIQot
ICAgICAgICBuaWxdOwotICAgIFthdHRyaWJ1dGVzIHJlbGVhc2VdOwotICAgIHBsdWdpblZpZXcg
PSBbW1dlYlBsdWdpbkNvbnRyb2xsZXIgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6YXJndW1lbnRz
IGZyb21QbHVnaW5QYWNrYWdlOnBsdWdpbl0gcmV0YWluXTsKLSAgICBbYXJndW1lbnRzIHJlbGVh
c2VdOwotCi0gICAgQVNTRVJUKHBsdWdpblZpZXcgIT0gbmlsKTsKLQotICAgIFtzZWxmIGFkZFN1
YnZpZXc6cGx1Z2luVmlld107Ci0gICAgW3BsdWdpbkNvbnRyb2xsZXIgYWRkUGx1Z2luOnBsdWdp
blZpZXddOwotICAgIFtwbHVnaW5WaWV3IHNldEZyYW1lOltzZWxmIGJvdW5kc11dOwotICAgIFtw
bHVnaW5WaWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3
SGVpZ2h0U2l6YWJsZV07Ci0gICAgCi0gICAgaWYgKFtwbHVnaW5WaWV3IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luTWFpblJlc291cmNlRGlkUmVjZWl2ZVJlc3BvbnNlOild
KQotICAgICAgICBbcGx1Z2luVmlldyB3ZWJQbHVnSW5NYWluUmVzb3VyY2VEaWRSZWNlaXZlUmVz
cG9uc2U6W2RhdGFTb3VyY2UgcmVzcG9uc2VdXTsKLX0KLQotLSAodm9pZClkYXRhU291cmNlVXBk
YXRlZDooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKLXsKLSAgICBpZiAoIVtwbHVnaW5WaWV3
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luTWFpblJlc291cmNlRGlkUmVj
ZWl2ZURhdGE6KV0pIHsKLSAgICAgICAgLy8gQ2FuY2VsIHRoZSBsb2FkIHNpbmNlIHRoaXMgcGx1
Zy1pbiBkb2VzIGl0cyBvd24gbG9hZGluZy4KLSAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UgPSBbZGF0YVNvdXJjZSByZXNwb25zZV07Ci0gICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6
Ly9wcm9ibGVtLzQyNTgwMDg+Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFs
bG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxl
TG9hZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZW50VVJMOltyZXNwb25zZSBVUkxdCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkw6bmlsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbk5hbWU6
W3BsdWdpbiBuYW1lXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25zZSBNSU1FVHlwZV1dOwotICAgICAgICBb
ZGF0YVNvdXJjZSBfc3RvcExvYWRpbmdXaXRoRXJyb3I6ZXJyb3JdOwotICAgICAgICBbZXJyb3Ig
cmVsZWFzZV07Ci0gICAgfQotfQotCi0tICh2b2lkKXNldE5lZWRzTGF5b3V0OihCT09MKWZsYWcK
LXsKLSAgICBuZWVkc0xheW91dCA9IGZsYWc7Ci19Ci0KLS0gKHZvaWQpbGF5b3V0Ci17Ci0gICAg
TlNSZWN0IHN1cGVyRnJhbWUgPSBbW1tfZGF0YVNvdXJjZSB3ZWJGcmFtZV0gZnJhbWVWaWV3XSBm
cmFtZV07Ci0gICAgW3NlbGYgc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCBOU1dpZHRoKHN1cGVy
RnJhbWUpLCBOU0hlaWdodChzdXBlckZyYW1lKSldOwotICAgIG5lZWRzTGF5b3V0ID0gTk87ICAg
IAotfQotCi0tIChOU1dpbmRvdyAqKWN1cnJlbnRXaW5kb3cKLXsKLSAgICBOU1dpbmRvdyAqd2lu
ZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICByZXR1cm4gd2luZG93ICE9IG5pbCA/IHdpbmRvdyA6
IFtbX2RhdGFTb3VyY2UgX3dlYlZpZXddIGhvc3RXaW5kb3ddOwotfQotCi0tICh2b2lkKXZpZXdX
aWxsTW92ZVRvV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwotewotICAgIGlmIChbW19kYXRhU291
cmNlIF93ZWJWaWV3XSBob3N0V2luZG93XSA9PSBuaWwpIHsKLSAgICAgICAgW3BsdWdpbkNvbnRy
b2xsZXIgc3RvcEFsbFBsdWdpbnNdOwotICAgIH0KLX0KLQotLSAodm9pZCl2aWV3RGlkTW92ZVRv
V2luZG93Ci17Ci0gICAgaWYgKFtzZWxmIGN1cnJlbnRXaW5kb3ddICE9IG5pbCkgewotICAgICAg
ICBbcGx1Z2luQ29udHJvbGxlciBzdGFydEFsbFBsdWdpbnNdOwotICAgIH0KLX0KLQotLSAodm9p
ZCl2aWV3V2lsbE1vdmVUb0hvc3RXaW5kb3c6KE5TV2luZG93ICopaG9zdFdpbmRvdwotewotICAg
IGlmIChbc2VsZiB3aW5kb3ddID09IG5pbCkgewotICAgICAgICBbcGx1Z2luQ29udHJvbGxlciBz
dG9wQWxsUGx1Z2luc107Ci0gICAgfQotfQotCi0tICh2b2lkKXZpZXdEaWRNb3ZlVG9Ib3N0V2lu
ZG93Ci17Ci0gICAgaWYgKFtzZWxmIGN1cnJlbnRXaW5kb3ddICE9IG5pbCkgewotICAgICAgICBb
cGx1Z2luQ29udHJvbGxlciBzdGFydEFsbFBsdWdpbnNdOwotICAgIH0gICAgCi19Ci0KLS0gKHZv
aWQpcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhIHdpdGhEYXRhU291cmNlOihXZWJEYXRhU291
cmNlICopZGF0YVNvdXJjZQotewotICAgIGlmIChbcGx1Z2luVmlldyByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHdlYlBsdWdJbk1haW5SZXNvdXJjZURpZFJlY2VpdmVEYXRhOildKQotICAg
ICAgICBbcGx1Z2luVmlldyB3ZWJQbHVnSW5NYWluUmVzb3VyY2VEaWRSZWNlaXZlRGF0YTpkYXRh
XTsKLX0KLQotLSAodm9pZClyZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3Igd2l0aERhdGFT
b3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCi17Ci0gICAgaWYgKFtwbHVnaW5WaWV3
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luTWFpblJlc291cmNlRGlkRmFp
bFdpdGhFcnJvcjopXSkKLSAgICAgICAgW3BsdWdpblZpZXcgd2ViUGx1Z0luTWFpblJlc291cmNl
RGlkRmFpbFdpdGhFcnJvcjplcnJvcl07Ci19Ci0KLS0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCi17Ci0gICAgaWYgKFtwbHVn
aW5WaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luTWFpblJlc291cmNl
RGlkRmluaXNoTG9hZGluZyldKQotICAgICAgICBbcGx1Z2luVmlldyB3ZWJQbHVnSW5NYWluUmVz
b3VyY2VEaWRGaW5pc2hMb2FkaW5nXTsKLX0KLQotLSAoQk9PTCljYW5Qcm92aWRlRG9jdW1lbnRT
b3VyY2UKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3Vy
Y2UKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAg
cmV0dXJuIG5pbDsKLX0KLQotQGVuZApJbmRleDogV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lQnJpZGdlLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
QnJpZGdlLm0JKHJldmlzaW9uIDE0ODA2KQorKysgV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lQnJpZGdlLm0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAKICNpbXBvcnQgIldl
Yk5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU1VSTFJlcXVlc3RFeHRyYXMuaCIKICNpbXBv
cnQgIldlYk5TVmlld0V4dHJhcy5oIgotI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVu
dFZpZXcuaCIKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3LmgiCiAjaW1w
b3J0ICJXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaCIKICNpbXBvcnQgIldlYk51bGxQbHVnaW5W
aWV3LmgiCkBAIC02NCw3ICs2Myw2IEBACiAjaW1wb3J0ICJXZWJQbHVnaW4uaCIKICNpbXBvcnQg
IldlYlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlBsdWdpbkRhdGFiYXNlLmgiCi0j
aW1wb3J0ICJXZWJQbHVnaW5Eb2N1bWVudFZpZXcuaCIKICNpbXBvcnQgIldlYlBsdWdpblBhY2th
Z2UuaCIKICNpbXBvcnQgIldlYlBsdWdpblZpZXdGYWN0b3J5UHJpdmF0ZS5oIgogI2ltcG9ydCAi
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgiCkBAIC04NzQsNiArODcyLDcgQEAgTlNTdHJpbmcgKldl
YlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJXZQogICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
VmFsdWVzOihOU0FycmF5ICopYXR0cmlidXRlVmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogICAgICAgICAgICAgICAgICAgICAgICBET01F
bGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
bnVhbGx5OihCT09MKWxvYWRNYW51YWxseQogewogICAgIFdlYkhUTUxWaWV3ICpkb2NWaWV3ID0g
KFdlYkhUTUxWaWV3ICopW1tfZnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAgIEFT
U0VSVChbZG9jVmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKTsKQEAgLTg5
NCw4ICs4OTMsOCBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5ID0gICBAIldlCiAg
ICAgICAgICAgICBiYXNlVVJMLCBXZWJQbHVnSW5CYXNlVVJMS2V5LAogICAgICAgICAgICAgYXR0
cmlidXRlcywgV2ViUGx1Z0luQXR0cmlidXRlc0tleSwKICAgICAgICAgICAgIHBsdWdpbkNvbnRy
b2xsZXIsIFdlYlBsdWdJbkNvbnRhaW5lcktleSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OldlYlBsdWdJbk1vZGVFbWJlZF0sIFdlYlBsdWdJbk1vZGVLZXksCi0gICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgV2ViUGx1Z0luU2hvdWxkTG9hZE1h
aW5SZXNvdXJjZUtleSwKKyAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxvYWRN
YW51YWxseSA/IFdlYlBsdWdJbk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkXSwgV2ViUGx1
Z0luTW9kZUtleSwKKyAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDohbG9hZE1h
bnVhbGx5XSwgV2ViUGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJjZUtleSwKICAgICAgICAgICAg
IGVsZW1lbnQsIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5LAogICAgICAgICAgICAgbmls
XTsKICAgICAgICAgTE9HKFBsdWdpbnMsICJhcmd1bWVudHM6XG4lQCIsIGFyZ3VtZW50cyk7CkBA
IC05MzEsNiArOTMwLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJX
ZQogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6KE5TQXJyYXkgKilhdHRyaWJ1dGVW
YWx1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVU
eXBlCiAgICAgICAgICAgICAgICAgICAgICAgRE9NRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1l
bnQKKyAgICAgICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5OihCT09MKWxvYWRNYW51YWxseQog
ewogICAgIEJPT0wgaGlkZVJlZmVycmVyOwogICAgIGlmICghW3NlbGYgY2FuTG9hZFVSTDpVUkwg
ZnJvbVJlZmVycmVyOltzZWxmIHJlZmVycmVyXSBoaWRlUmVmZXJyZXI6JmhpZGVSZWZlcnJlcl0p
CkBAIC05NDksOSArOTQ5LDkgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAg
QCJXZQogICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6YXR0cmlidXRlVmFsdWVzIGZvcktl
eXM6YXR0cmlidXRlTmFtZXNdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmFyZ3VtZW50cyA9IFtO
U0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgIGF0
dHJpYnV0ZXMsIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXksCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpXZWJQbHVnSW5Nb2RlRW1iZWRdLCBXZWJQbHVnSW5Nb2RlS2V5LAorICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0lu
TW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWRdLCBXZWJQbHVnSW5Nb2RlS2V5LAogICAgICAg
ICAgICAgVVJMLCBXZWJQbHVnSW5CYXNlVVJMS2V5LCAvLyBVUkwgbWlnaHQgYmUgbmlsLCBzbyBh
ZGQgaXQgbGFzdAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIFdl
YlBsdWdJblNob3VsZExvYWRNYWluUmVzb3VyY2VLZXksCisgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6IWxvYWRNYW51YWxseV0sIFdlYlBsdWdJblNob3VsZExvYWRNYWluUmVz
b3VyY2VLZXksCiAgICAgICAgICAgICBlbGVtZW50LCBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVu
dEtleSwKICAgICAgICAgICAgIG5pbF07CiAgICAgICAgIFthdHRyaWJ1dGVzIHJlbGVhc2VdOwpA
QCAtOTgyLDcgKzk4Miw4IEBAIE5TU3RyaW5nICpXZWJQbHVnaW5Db250YWluZXJLZXkgPSAgIEAi
V2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZXM6YXR0cmli
dXRlTmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6
YXR0cmlidXRlVmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlVVJMOmJhc2VVUkwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUVs
ZW1lbnQ6ZWxlbWVudF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01F
bGVtZW50OmVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFu
dWFsbHk6bG9hZE1hbnVhbGx5XTsKICAgICAgICAgfSBlbHNlIGlmIChbcGx1Z2luUGFja2FnZSBp
c0tpbmRPZkNsYXNzOltXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UgY2xhc3NdXSkgewogICAgICAg
ICAgICAgV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcgKmVtYmVkZGVkVmlldyA9IFtbW1dl
Yk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsdWdpbjooV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlICopcGx1Z2luUGFj
a2FnZQpAQCAtOTkwLDcgKzk5MSw4IEBAIE5TU3RyaW5nICpXZWJQbHVnaW5Db250YWluZXJLZXkg
PSAgIEAiV2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFzZVVSTDpiYXNlVVJMCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6TUlNRVR5
cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlS2V5czphdHRyaWJ1dGVOYW1lcwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOmF0dHJp
YnV0ZVZhbHVlc10gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOmF0dHJpYnV0ZVZhbHVl
cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hbnVhbGx5OmxvYWRNYW51YWxseV0gYXV0b3JlbGVhc2VdOwogICAgICAgICAg
ICAgdmlldyA9IGVtYmVkZGVkVmlldzsKICAgICAgICAgICAgIFtfZnJhbWUgX2FkZFBsdWdJblZp
ZXc6ZW1iZWRkZWRWaWV3XTsKICAgICAgICAgfSBlbHNlCkBAIC0xMDE5LDYgKzEwMjEsMjEgQEAg
TlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJXZQogICAgIHJldHVybiB2aWV3
OwogfQogCistICh2b2lkKXJlZGlyZWN0RGF0YVRvUGx1Z2luOihOU1ZpZXcgKilwbHVnaW5WaWV3
Cit7CisgICAgV2ViSFRNTFJlcHJlc2VudGF0aW9uICpyZXByZXNlbnRhdGlvbiA9IChXZWJIVE1M
UmVwcmVzZW50YXRpb24gKilbW19mcmFtZSBkYXRhU291cmNlXSByZXByZXNlbnRhdGlvbl07CisK
KyAgICBpZiAoW3BsdWdpblZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5FbWJl
ZGRlZFZpZXcgY2xhc3NdXSkKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uIF9yZWRpcmVjdERhdGFU
b01hbnVhbExvYWRlcjooV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcgKilwbHVnaW5WaWV3
IGZvclBsdWdpblZpZXc6cGx1Z2luVmlld107CisgICAgZWxzZSB7CisgICAgICAgIFdlYkhUTUxW
aWV3ICpkb2NWaWV3ID0gKFdlYkhUTUxWaWV3ICopW1tfZnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVu
dFZpZXddOworICAgICAgICBBU1NFUlQoW2RvY1ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZp
ZXcgY2xhc3NdXSk7CisgICAgICAgIAorICAgICAgICBXZWJQbHVnaW5Db250cm9sbGVyICpwbHVn
aW5Db250cm9sbGVyID0gW2RvY1ZpZXcgX3BsdWdpbkNvbnRyb2xsZXJdOworICAgICAgICBbcmVw
cmVzZW50YXRpb24gX3JlZGlyZWN0RGF0YVRvTWFudWFsTG9hZGVyOnBsdWdpbkNvbnRyb2xsZXIg
Zm9yUGx1Z2luVmlldzpwbHVnaW5WaWV3XTsKKyAgICB9Cit9CisKIC0gKE5TVmlldyAqKXZpZXdG
b3JKYXZhQXBwbGV0V2l0aEZyYW1lOihOU1JlY3QpdGhlRnJhbWUKICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZU5hbWVzOihOU0FycmF5ICopYXR0cmlidXRlTmFtZXMKICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOihOU0FycmF5ICopYXR0cmlidXRlVmFsdWVz
CkBAIC0xMDQ4LDcgKzEwNjUsOCBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5ID0g
ICBAIldlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWVzOm5h
bWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOnZhbHVl
cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVVSTDpiYXNlVVJM
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01FbGVtZW50OmVsZW1lbnRd
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NRWxlbWVudDplbGVtZW50
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5Ok5PXTsKICAg
ICAgICAgICAgIFtuYW1lcyByZWxlYXNlXTsKICAgICAgICAgICAgIFt2YWx1ZXMgcmVsZWFzZV07
CiAgICAgICAgIH0gZWxzZSBpZiAoW3BsdWdpblBhY2thZ2UgaXNLaW5kT2ZDbGFzczpbV2ViTmV0
c2NhcGVQbHVnaW5QYWNrYWdlIGNsYXNzXV0pIHsKQEAgLTEwNTgsNyArMTA3Niw4IEBAIE5TU3Ry
aW5nICpXZWJQbHVnaW5Db250YWluZXJLZXkgPSAgIEAiV2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVVSTDpiYXNl
VVJMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTUlNRVR5cGU6TUlNRVR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlS2V5czphdHRyaWJ1dGVO
YW1lcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlVmFsdWVzOmF0dHJpYnV0ZVZhbHVlc10gYXV0b3JlbGVhc2VdOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlVmFsdWVzOmF0dHJpYnV0ZVZhbHVlcworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5Ok5PXSBhdXRvcmVs
ZWFzZV07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQpAQCAtMTExOCwyNCArMTEzNywxNCBAQCBzdGF0aWMgQk9PTCBsb2dnZWRP
YmplY3RDYWNoZVNpemUgPSBOTzsKIAogICAgIGlmIChbTUlNRVR5cGUgbGVuZ3RoXSA9PSAwKQog
ICAgICAgICByZXR1cm4gT2JqZWN0RWxlbWVudEZyYW1lOyAvLyBHbyBhaGVhZCBhbmQgaG9wZSB0
aGF0IHdlIGNhbiBkaXNwbGF5IHRoZSBjb250ZW50LgotICAgICAgICAgICAgICAgIAotICAgIENs
YXNzIHZpZXdDbGFzcyA9IFtXZWJGcmFtZVZpZXcgX3ZpZXdDbGFzc0Zvck1JTUVUeXBlOk1JTUVU
eXBlXTsKLSAgICBpZiAoIXZpZXdDbGFzcykgewotICAgICAgICAvLyBObyB2aWV3IGNsYXNzIGlz
IHJlZ2lzdGVyZWQgdG8gaGFuZGxlIHRoaXMgTUlNRSB0eXBlLiAgQ2hlY2sgdG8gc2VlIGlmIHRo
ZXJlIGlzIGEgcGx1Z2luIHdoaWNoIGNhbiBoYW5kbGUgdGhpcyBNSU1FIHR5cGUuCi0gICAgICAg
IC8vIFRoaXMgY2hlY2sgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGUgSmF2YSBwbHVnaW4gZG9lcyBu
b3QgcmVnaXN0ZXIgYW4gTlNWaWV3IGNsYXNzLCBzbyB0aGF0IEphdmEgZmlsZXMgYXJlIGRvd25s
b2FkZWQgd2hlbiAKLSAgICAgICAgLy8gbm90IGVtYmVkZGVkLgotICAgICAgICBpZiAoW1tXZWJQ
bHVnaW5EYXRhYmFzZSBpbnN0YWxsZWRQbHVnaW5zXSBwbHVnaW5Gb3JNSU1FVHlwZTpNSU1FVHlw
ZV0pCi0gICAgICAgICAgICByZXR1cm4gT2JqZWN0RWxlbWVudFBsdWdpbjsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmV0dXJuIE9iamVjdEVsZW1lbnROb25lOwotICAgIH0KLSAgICAKLSAg
ICAvLyBJZiB3ZSdyZSBhIHN1cHBvcnRlZCB0eXBlIG90aGVyIHRoYW4gYSBwbHVnaW4sIHdlIHdh
bnQgdG8gbWFrZSBhIGZyYW1lLgotICAgIC8vIFVsdGltYXRlbHkgd2Ugc2hvdWxkIGp1c3QgdXNl
IGZyYW1lcyBmb3IgYWxsIG1pbWUgdHlwZXMgKHBsdWdpbnMgYW5kIEhUTUwvWE1ML3RleHQgZG9j
dW1lbnRzKSwKLSAgICAvLyBidXQgZm9yIG5vdyB3ZSdyZSBidXJkZW5lZCB3aXRoIG1ha2luZyBh
IGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIHR3by4KLSAgICBpZiAoW3ZpZXdDbGFzcyBpc1N1YmNs
YXNzT2ZDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcgY2xhc3NdXSB8fCBbdmll
d0NsYXNzIGlzU3ViY2xhc3NPZkNsYXNzOltXZWJQbHVnaW5Eb2N1bWVudFZpZXcgY2xhc3NdXSkK
KworICAgIGlmIChbW1dlYlBsdWdpbkRhdGFiYXNlIGluc3RhbGxlZFBsdWdpbnNdIHBsdWdpbkZv
ck1JTUVUeXBlOk1JTUVUeXBlXSkKICAgICAgICAgcmV0dXJuIE9iamVjdEVsZW1lbnRQbHVnaW47
Ci0gICAgcmV0dXJuIE9iamVjdEVsZW1lbnRGcmFtZTsKKworICAgIGlmIChbV2ViRnJhbWVWaWV3
IF92aWV3Q2xhc3NGb3JNSU1FVHlwZTpNSU1FVHlwZV0pCisgICAgICAgIHJldHVybiBPYmplY3RF
bGVtZW50RnJhbWU7CisgICAgCisgICAgcmV0dXJuIE9iamVjdEVsZW1lbnROb25lOwogfQogCiAt
ICh2b2lkKWxvYWRFbXB0eURvY3VtZW50U3luY2hyb25vdXNseQpJbmRleDogV2ViS2l0L1dlYkNv
cmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm0JKHJldmlzaW9uIDE0ODA2KQorKysgV2ViS2l0L1dlYkNv
cmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDEx
IEBACiAgICAgfQogfQogCistIChCT09MKXBsdWdpblN1cHBvcnRzTUlNRVR5cGU6KE5TU3RyaW5n
ICopTUlNRVR5cGUKK3sKKyAgICByZXR1cm4gW1tXZWJQbHVnaW5EYXRhYmFzZSBpbnN0YWxsZWRQ
bHVnaW5zXSBwbHVnaW5Gb3JNSU1FVHlwZTpNSU1FVHlwZV0gIT0gbmlsOworfQorCiAtIChXZWJD
b3JlRnJhbWVCcmlkZ2UgKilicmlkZ2VGb3JWaWV3OihOU1ZpZXcgKil2CiB7CiAgICAgTlNWaWV3
ICphVmlldyA9IFt2IHN1cGVydmlld107CkluZGV4OiBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDgwNikKKysrIFdlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzgsMTAgKzc4LDggQEAKIAkJOTM5
ODEwMkMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1RUJDNDU1MDIxMzRC
QzMwMUNBMTUyMCAvKiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmggKi87IH07CiAJCTkzOTgx
MDJEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3UHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQTcyRDIw
MzI2NTkyMDAwODYzNUNFIC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXdQcml2YXRlLmggKi87
IH07CiAJCTkzOTgxMDJFMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJCYXNlUGx1Z2luUGFja2FnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFNEFGNDYw
MzY2NTIxNTAwMDBFNTA2IC8qIFdlYkJhc2VQbHVnaW5QYWNrYWdlLmggKi87IH07Ci0JCTkzOTgx
MDJGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmlldy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRENEJGRkIwMzQ4
RUY5RDAwQ0EyQUNBIC8qIFdlYk5ldHNjYXBlUGx1Z2luRG9jdW1lbnRWaWV3LmggKi87IH07CiAJ
CTkzOTgxMDMwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmll
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRENEJG
RjcwMzQ4RUY3NjAwQ0EyQUNBIC8qIFdlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3LmggKi87
IH07CiAJCTkzOTgxMDMxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOZXRzY2FwZVBsdWdpblBhY2th
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1Rjcx
NzFFMDI4ODQ5M0MwMTg2MzVDQSAvKiBXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaCAqLzsgfTsK
LQkJOTM5ODEwMzIwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luUmVwcmVzZW50
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NDAyRUY2MDM1QTU4ODkwMEJFNzcwQSAvKiBXZWJOZXRzY2FwZVBsdWdpblJlcHJlc2VudGF0aW9u
LmggKi87IH07CiAJCTkzOTgxMDMzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM0MDJFRkEwMzVBNThEMTAwQkU3NzBBIC8qIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggKi87
IH07CiAJCTkzOTgxMDM0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOdWxsUGx1Z2luVmlldy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4ODNCRTAwMjVF
NUU5RDAxMDAwMTAyIC8qIFdlYk51bGxQbHVnaW5WaWV3LmggKi87IH07CiAJCTkzOTgxMDM1MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0OERGRjg0MDM2NUZFNkEwMENBMkFDQSAvKiBXZWJQbHVnaW4u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0xNjYs
NyArMTY0LDYgQEAKIAkJOTM5ODEwQTcwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZvcm1EYXRhU3Ry
ZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2
NDFGQTA2RTI5MkJDMDA1NUY2MTAgLyogV2ViRm9ybURhdGFTdHJlYW0uaCAqLzsgfTsKIAkJOTM5
ODEwQTgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFODUwQ0QwNkVDQzc5
RTAwNUZBQjA1IC8qIFdlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzOTgxMEFBMDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMDU4OTJBMDcwODY4QjMwMEU3OUQ5NiAvKiBXZWJEYXNoYm9hcmRS
ZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk5Mzk4MTBBQjA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luRG9jdW1lbnRWaWV3LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJEN0UwMzA3MDlE
OEZCMDBGNDlCNjEgLyogV2ViUGx1Z2luRG9jdW1lbnRWaWV3LmggKi87IH07CiAJCTkzOTgxMEFD
MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5WaWV3RmFjdG9yeVByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTY3OTc4MDcyNkQ3Q0Yw
MDZDN0EzNiAvKiBXZWJQbHVnaW5WaWV3RmFjdG9yeVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5Mzk4MTBBRjA4MjRCRjAxMDA4REYw
MzggLyogV2ViRnJhbWVWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNDNkYxNDUwNzkyMEI5MzAwMjQ0OUNEIC8qIFdlYkZyYW1lVmll
d1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5Mzk4MTBCMDA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udGFpbmVyUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MzZG
NUUwN0VFNDI1OTAwNjgyRjk1IC8qIFdlYlBsdWdpbkNvbnRhaW5lclByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTk5LDEwICsxOTYs
OCBAQAogCQk5Mzk4MTBEMTA4MjRCRjAxMDA4REYwMzggLyogV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NUE2NzJCQTAyNjM4NjZFMDEwMDAxMDIgLyogV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm0g
Ki87IH07CiAJCTkzOTgxMEQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NUVCQzQ1NjAyMTM0QkMzMDFDQTE1MjAgLyogV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tICov
OyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIjsgfTsgfTsKIAkJOTM5ODEwRDMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkJhc2VQbHVnaW5Q
YWNrYWdlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
M0U0QUY0NzAzNjY1MjE1MDAwMEU1MDYgLyogV2ViQmFzZVBsdWdpblBhY2thZ2UubSAqLzsgfTsK
LQkJOTM5ODEwRDQwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luRG9jdW1lbnRW
aWV3Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEQ0
QkZGQzAzNDhFRjlEMDBDQTJBQ0EgLyogV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcubSAq
LzsgfTsKIAkJOTM5ODEwRDUwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luRW1i
ZWRkZWRWaWV3Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NEQ0QkZGODAzNDhFRjc2MDBDQTJBQ0EgLyogV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZp
ZXcubSAqLzsgfTsKIAkJOTM5ODEwRDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1
Z2luUGFja2FnZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjVGNzE3MUYwMjg4NDkzQzAxODYzNUNBIC8qIFdlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5t
ICovOyB9OwotCQk5Mzk4MTBENzA4MjRCRjAxMDA4REYwMzggLyogV2ViTmV0c2NhcGVQbHVnaW5S
ZXByZXNlbnRhdGlvbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM0MDJFRjcwMzVBNTg4OTAwQkU3NzBBIC8qIFdlYk5ldHNjYXBlUGx1Z2luUmVwcmVz
ZW50YXRpb24ubSAqLzsgfTsKIAkJOTM5ODEwRDgwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzQwMkVGQjAzNUE1OEQxMDBCRTc3MEEgLyogV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubSAqLzsgfTsKIAkJOTM5ODEwRDkwODI0QkYwMTAwOERGMDM4IC8qIFdlYk51bGxQbHVnaW5W
aWV3Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg4
M0JFMTAyNUU1RTlEMDEwMDAxMDIgLyogV2ViTnVsbFBsdWdpblZpZXcubSAqLzsgfTsKIAkJOTM5
ODEwREEwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRyb2xsZXIubSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NjcyNzVEMDM2NzE1ODUwMENB
MkFDQSAvKiBXZWJQbHVnaW5Db250cm9sbGVyLm0gKi87IH07CkBAIC0yNTksNyArMjU0LDYgQEAK
IAkJOTM5ODExMUUwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBERlZpZXcubSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTk0QzM1MDZDMDMyMTIwMEE5QjA5
RSAvKiBXZWJQREZWaWV3Lm0gKi87IH07CiAJCTkzOTgxMTFGMDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJQREZSZXByZXNlbnRhdGlvbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFOTRDNjkwNkMwMzQ3NTAwQTlCMDlFIC8qIFdlYlBERlJlcHJlc2VudGF0
aW9uLm0gKi87IH07CiAJCTkzOTgxMTIxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJGb3JtRGF0YVN0
cmVhbS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
NjQxRjkwNkUyOTJCQzAwNTVGNjEwIC8qIFdlYkZvcm1EYXRhU3RyZWFtLm0gKi87IH07Ci0JCTkz
OTgxMTIzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Eb2N1bWVudFZpZXcubSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkQ3RTA0MDcwOUQ4RkIw
MEY0OUI2MSAvKiBXZWJQbHVnaW5Eb2N1bWVudFZpZXcubSAqLzsgfTsKIAkJOTM5ODExMjYwODI0
QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUxMTUwNDA3RUZGRUJGMDA5QjhCRjcg
LyogV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subSAqLzsgfTsKIAkJOTM5ODExMjgwODI0QkYwMTAw
OERGMDM4IC8qIEFwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMjg2OTMwMjg0NkRDRDAxODYzNUNB
IC8qIEFwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrICovOyB9OwogCQk5Mzk4MTEyOTA4MjRC
RjAxMDA4REYwMzggLyogQ2FyYm9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1QzI4Njk0MDI4NDZEQ0QwMTg2MzVDQSAvKiBDYXJi
b24uZnJhbWV3b3JrICovOyB9OwpAQCAtMjc5LDIzICsyNzMsNiBAQAogCQlFRDdGNkQ4QjA5ODA2
ODM1MDBDMjM1RUQgLyogV2ViTlNEYXRhRXh0cmFzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQ3RjZEOEEwOTgwNjgzNTAwQzIzNUVEIC8q
IFdlYk5TRGF0YUV4dHJhc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKLS8qIEJl
Z2luIFBCWEJ1aWxkU3R5bGUgc2VjdGlvbiAqLwotCQlCQ0Y1MzI2MDBBMzhEMDBFMDA5NzY5OTQg
LyogRGV2ZWxvcG1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhCdWlsZFN0eWxlOwotCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQl9OwotCQkJbmFtZSA9
IERldmVsb3BtZW50OwotCQl9OwotCQlCQ0Y1MzI2MTBBMzhEMDBFMDA5NzY5OTQgLyogRGVwbG95
bWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRpbmdzID0g
ewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7Ci0JCQl9OwotCQkJbmFtZSA9IERlcGxveW1l
bnQ7Ci0JCX07Ci0vKiBFbmQgUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCi0KIC8qIEJlZ2luIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkxQzY4RjY0MDA5NUI1RkMxMDBDMjk4NEUgLyog
d2ViSW5zcGVjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZm9sZGVyOyBuYW1lID0gd2ViSW5zcGVjdG9yOyBwYXRoID0gV2ViSW5zcGVjdG9yL3dl
Ykluc3BlY3Rvcjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQkxQzY4RjY1QzA5NUI1
RkMxMDBDMjk4NEUgLyogV2ViSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtNDA0LDExICszODEsNyBA
QAogCQk3RTZGRUYwNjA4OTg1QTcyMDBDNDRDM0YgLyogV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdl
YlNjcmlwdERlYnVnRGVsZWdhdGUubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTdFNkZFRjA3MDg5ODVBNzIwMEM0NEMzRiAvKiBXZWJT
Y3JpcHREZWJ1Z0RlbGVnYXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdERlYnVnRGVsZWdhdGVQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk4
MzBFODFFMDA1ODUzQUMwMDBBRDA4OTEgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0J
CTgzMkQ3RTAzMDcwOUQ4RkIwMEY0OUI2MSAvKiBXZWJQbHVnaW5Eb2N1bWVudFZpZXcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbHVnaW5E
b2N1bWVudFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07Ci0JCTgzMkQ3RTA0MDcwOUQ4RkIwMEY0OUI2MSAvKiBXZWJQbHVnaW5Eb2N1
bWVudFZpZXcubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7
IHBhdGggPSBXZWJQbHVnaW5Eb2N1bWVudFZpZXcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTgzMzk4NzgxMDU0MzAxMkQwMEVFMTQ2
RSAvKiBXZWJEb2N1bWVudFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEb2N1bWVudFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTgzNDAyRUY2MDM1QTU4
ODkwMEJFNzcwQSAvKiBXZWJOZXRzY2FwZVBsdWdpblJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmV0c2NhcGVQbHVn
aW5SZXByZXNlbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKLQkJODM0MDJFRjcwMzVBNTg4OTAwQkU3NzBBIC8qIFdlYk5ldHNj
YXBlUGx1Z2luUmVwcmVzZW50YXRpb24ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJOZXRzY2FwZVBsdWdpblJlcHJlc2VudGF0aW9uLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQk4MzQwMkVGQTAzNUE1OEQxMDBCRTc3MEEgLyogV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJODM0MDJFRkIwMzVBNThEMTAwQkU3NzBBIC8qIFdlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBwYXRoID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTgzNzMwRjk4MDNGQjFF
NjYwMDA0NzM2RSAvKiBXZWJLaXRFcnJvcnMubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJLaXRFcnJvcnMubTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC00MzgsOCArNDExLDYg
QEAKIAkJODRDQTVGN0UwNDI2ODVFODAwQ0EyQUNBIC8qIFdlYktpdEVycm9yc1ByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRF
cnJvcnNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQk4NEQ0QkZGNzAzNDhFRjc2MDBDQTJBQ0EgLyogV2ViTmV0c2NhcGVQ
bHVnaW5FbWJlZGRlZFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVkVmlldy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJODRENEJGRjgw
MzQ4RUY3NjAwQ0EyQUNBIC8qIFdlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3Lm0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViTmV0c2Nh
cGVQbHVnaW5FbWJlZGRlZFZpZXcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTg0RDRCRkZCMDM0OEVGOUQwMENBMkFDQSAvKiBXZWJO
ZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5ldHNjYXBlUGx1Z2luRG9jdW1lbnRWaWV3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk4
NEQ0QkZGQzAzNDhFRjlEMDBDQTJBQ0EgLyogV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBX
ZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmlldy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTMwNTg5MkEwNzA4NjhCMzAwRTc5RDk2
IC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhc2hib2FyZFJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTMwRDAyQkIwNjI3NUY2
NDAwNzY3MDFFIC8qIFdlYlZpZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTMwRDAyQkQwNjI3
NUY3MTAwNzY3MDFFIC8qIFdlYkZyYW1lSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGcmFtZUludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtODAyLDE0
ICs3NzMsMTAgQEAKIAkJCQkyMjAzOTg0QTA5MjJENzY1MDA5QzNGRkMgLyogV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlld0ludGVybmFsLmggKi8sCiAJCQkJOTMxQTcyRDIwMzI2NTkyMDAwODYzNUNF
IC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXdQcml2YXRlLmggKi8sCiAJCQkJRjVFQkM0NTYw
MjEzNEJDMzAxQ0ExNTIwIC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubSAqLywKLQkJCQk4
NEQ0QkZGQjAzNDhFRjlEMDBDQTJBQ0EgLyogV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcu
aCAqLywKLQkJCQk4NEQ0QkZGQzAzNDhFRjlEMDBDQTJBQ0EgLyogV2ViTmV0c2NhcGVQbHVnaW5E
b2N1bWVudFZpZXcubSAqLywKIAkJCQk4NEQ0QkZGNzAzNDhFRjc2MDBDQTJBQ0EgLyogV2ViTmV0
c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcuaCAqLywKIAkJCQk4NEQ0QkZGODAzNDhFRjc2MDBDQTJB
Q0EgLyogV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcubSAqLywKIAkJCQlGNUY3MTcxRTAy
ODg0OTNDMDE4NjM1Q0EgLyogV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLmggKi8sCiAJCQkJRjVG
NzE3MUYwMjg4NDkzQzAxODYzNUNBIC8qIFdlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tICovLAot
CQkJCTgzNDAyRUY2MDM1QTU4ODkwMEJFNzcwQSAvKiBXZWJOZXRzY2FwZVBsdWdpblJlcHJlc2Vu
dGF0aW9uLmggKi8sCi0JCQkJODM0MDJFRjcwMzVBNTg4OTAwQkU3NzBBIC8qIFdlYk5ldHNjYXBl
UGx1Z2luUmVwcmVzZW50YXRpb24ubSAqLywKIAkJCQk4MzQwMkVGQTAzNUE1OEQxMDBCRTc3MEEg
LyogV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCAqLywKIAkJCQk4MzQwMkVGQjAzNUE1OEQxMDBC
RTc3MEEgLyogV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubSAqLywKIAkJCQkyMjZFOUU2ODA5RDBB
QTgyMDBGM0EyQkMgLyogV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmggKi8sCkBAIC04
MjksOCArNzk2LDYgQEAKIAkJCQk2NUUxMTUwNDA3RUZGRUJGMDA5QjhCRjcgLyogV2ViUGx1Z2lu
Q29udGFpbmVyQ2hlY2subSAqLywKIAkJCQk4NDY3Mjc1QzAzNjcxNTg1MDBDQTJBQ0EgLyogV2Vi
UGx1Z2luQ29udHJvbGxlci5oICovLAogCQkJCTg0NjcyNzVEMDM2NzE1ODUwMENBMkFDQSAvKiBX
ZWJQbHVnaW5Db250cm9sbGVyLm0gKi8sCi0JCQkJODMyRDdFMDMwNzA5RDhGQjAwRjQ5QjYxIC8q
IFdlYlBsdWdpbkRvY3VtZW50Vmlldy5oICovLAotCQkJCTgzMkQ3RTA0MDcwOUQ4RkIwMEY0OUI2
MSAvKiBXZWJQbHVnaW5Eb2N1bWVudFZpZXcubSAqLywKIAkJCQk4M0U0QUY0QjAzNjY1OTQ0MDAw
MEU1MDYgLyogV2ViUGx1Z2luUGFja2FnZS5oICovLAogCQkJCTgzRTRBRjRDMDM2NjU5NDQwMDAw
RTUwNiAvKiBXZWJQbHVnaW5QYWNrYWdlLm0gKi8sCiAJCQkJODQ4REZGODYwMzY1RkU2QTAwQ0Ey
QUNBIC8qIFdlYlBsdWdpblZpZXdGYWN0b3J5LmggKi8sCkBAIC0xMDc5LDEwICsxMDQ0LDggQEAK
IAkJCQk5Mzk4MTAyQzA4MjRCRjAxMDA4REYwMzggLyogV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMkQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAy
RTA4MjRCRjAxMDA4REYwMzggLyogV2ViQmFzZVBsdWdpblBhY2thZ2UuaCBpbiBIZWFkZXJzICov
LAotCQkJCTkzOTgxMDJGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOZXRzY2FwZVBsdWdpbkRvY3Vt
ZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMzAwODI0QkYwMTAwOERGMDM4IC8q
IFdlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4
MTAzMTA4MjRCRjAxMDA4REYwMzggLyogV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk5Mzk4MTAzMjA4MjRCRjAxMDA4REYwMzggLyogV2ViTmV0c2NhcGVQbHVn
aW5SZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMzMwODI0QkYwMTAw
OERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
Mzk4MTAzNDA4MjRCRjAxMDA4REYwMzggLyogV2ViTnVsbFBsdWdpblZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzOTgxMDM1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW4uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE2Nyw3ICsxMTMwLDYgQEAKIAkJCQk5Mzk4MTBBNzA4MjRCRjAxMDA4REYw
MzggLyogV2ViRm9ybURhdGFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMEE4MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzOTgxMEFBMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEYXNoYm9hcmRSZWdpb24uaCBp
biBIZWFkZXJzICovLAotCQkJCTkzOTgxMEFCMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5E
b2N1bWVudFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMEFDMDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJQbHVnaW5WaWV3RmFjdG9yeVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
OTgxMEFGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJGcmFtZVZpZXdQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTBCMDA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udGFpbmVy
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjQ5LDEyICsxMjExLDYgQEAKIAkJMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJY
UHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjgzMjA4OTAyQjBGMDA4
QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJLaXQi
ICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJ
CQlCQ0Y1MzI2MDBBMzhEMDBFMDA5NzY5OTQgLyogRGV2ZWxvcG1lbnQgKi8sCi0JCQkJQkNGNTMy
NjEwQTM4RDAwRTAwOTc2OTk0IC8qIERlcGxveW1lbnQgKi8sCi0JCQkpOwogCQkJaGFzU2Nhbm5l
ZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAg
LTE1OTEsMTAgKzE1NDcsOCBAQAogCQkJCTkzOTgxMEQxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJC
YXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEQyMDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm0gaW4gU291cmNlcyAq
LywKIAkJCQk5Mzk4MTBEMzA4MjRCRjAxMDA4REYwMzggLyogV2ViQmFzZVBsdWdpblBhY2thZ2Uu
bSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMEQ0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOZXRz
Y2FwZVBsdWdpbkRvY3VtZW50Vmlldy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRDUwODI0
QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3Lm0gaW4gU291cmNl
cyAqLywKIAkJCQk5Mzk4MTBENjA4MjRCRjAxMDA4REYwMzggLyogV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlLm0gaW4gU291cmNlcyAqLywKLQkJCQk5Mzk4MTBENzA4MjRCRjAxMDA4REYwMzggLyog
V2ViTmV0c2NhcGVQbHVnaW5SZXByZXNlbnRhdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5
ODEwRDgwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm0gaW4gU291
cmNlcyAqLywKIAkJCQk5Mzk4MTBEOTA4MjRCRjAxMDA4REYwMzggLyogV2ViTnVsbFBsdWdpblZp
ZXcubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMERBMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQ
bHVnaW5Db250cm9sbGVyLm0gaW4gU291cmNlcyAqLywKQEAgLTE2NTEsNyArMTYwNSw2IEBACiAJ
CQkJOTM5ODExMUUwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBERlZpZXcubSBpbiBTb3VyY2VzICov
LAogCQkJCTkzOTgxMTFGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQREZSZXByZXNlbnRhdGlvbi5t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMjEwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZvcm1E
YXRhU3RyZWFtLm0gaW4gU291cmNlcyAqLywKLQkJCQk5Mzk4MTEyMzA4MjRCRjAxMDA4REYwMzgg
LyogV2ViUGx1Z2luRG9jdW1lbnRWaWV3Lm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTEyNjA4
MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subSBpbiBTb3VyY2VzICov
LAogCQkJCTY1NDg4REEyMDg0RkJDQ0IwMDgzMUFEMCAvKiBXZWJOU0RpY3Rpb25hcnlFeHRyYXMu
bSBpbiBTb3VyY2VzICovLAogCQkJCTY1RUVERTU0MDg0RkZCOTIwMDAyREIyNSAvKiBXZWJOU0Nh
bGVuZGFyRGF0ZUV4dHJhcy5tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJLaXQvV2ViVmlldy9X
ZWJGcmFtZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lLm0JKHJldmlz
aW9uIDE0ODA2KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViRnJhbWUubQkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNiBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdExvZ2dpbmcuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJLaXROU1N0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktp
dFN0YXRpc3RpY3NQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTmV0c2NhcGVQbHVnaW5E
b2N1bWVudFZpZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOZXRzY2FwZVBsdWdpbkVtYmVkZGVk
Vmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5TT2JqZWN0RXh0cmFzLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4KQEAgLTU4LDcgKzU3LDYgQEAKICNpbXBvcnQgPFdlYktp
dC9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW4uaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJQbHVnaW5Db250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJLaXQv
V2ViUGx1Z2luRG9jdW1lbnRWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJSZXNvdXJjZVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJWaWV3SW50ZXJuYWwuaD4KQEAgLTI0MzAsOSArMjQyOCw3IEBAIHN0YXRp
YyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKIHsKICAgICBmb3IgKFdlYkZyYW1l
ICpmcmFtZSA9IHNlbGY7IGZyYW1lOyBmcmFtZSA9IFtmcmFtZSBfdHJhdmVyc2VOZXh0RnJhbWVT
dGF5V2l0aGluOnNlbGZdKSB7CiAgICAgICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9j
dW1lbnRWaWV3ID0gW1tmcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107Ci0gICAgICAgIGlm
IChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYk5ldHNjYXBlUGx1Z2luRG9jdW1lbnRW
aWV3IGNsYXNzXV0gfHwKLSAgICAgICAgICAgIFtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpb
V2ViUGx1Z2luRG9jdW1lbnRWaWV3IGNsYXNzXV0gfHwKLSAgICAgICAgICAgIChbZG9jdW1lbnRW
aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0gJiYgW19wcml2YXRlLT5icmlk
Z2UgY29udGFpbnNQbHVnaW5zXSkpCisgICAgICAgIGlmICgoW2RvY3VtZW50VmlldyBpc0tpbmRP
ZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dICYmIFtfcHJpdmF0ZS0+YnJpZGdlIGNvbnRhaW5z
UGx1Z2luc10pKQogICAgICAgICAgICAgW2ZyYW1lIHJlbG9hZF07CiAgICAgfQogfQpAQCAtMjQ0
OCw3ICsyNDQ0LDYgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAog
ewogICAgIGZvciAoV2ViRnJhbWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gW2ZyYW1l
IF90cmF2ZXJzZU5leHRGcmFtZVN0YXlXaXRoaW46c2VsZl0pIHsKICAgICAgICAgTlNWaWV3IDxX
ZWJEb2N1bWVudFZpZXc+ICpkb2N1bWVudFZpZXcgPSBbW2ZyYW1lIGZyYW1lVmlld10gZG9jdW1l
bnRWaWV3XTsKLSAgICAgICAgLy8gRklYTUU6IHdoYXQgYWJvdXQgcGx1Z2luIGRvY3VtZW50IHZp
ZXc/CiAgICAgICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3
IGNsYXNzXV0pCiAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3IF9wYXVz
ZU51bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBsdWdpbnNdOwogICAgIH0KQEAgLTI0NTcsNyArMjQ1
Miw2IEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKIC0gKHZvaWQp
X3JlY3Vyc2l2ZV9yZXN1bWVOdWxsRXZlbnRzRm9yQWxsTmV0c2NhcGVQbHVnaW5zCiB7CiAgICAg
Zm9yIChXZWJGcmFtZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJhbWUgPSBbZnJhbWUgX3RyYXZl
cnNlTmV4dEZyYW1lU3RheVdpdGhpbjpzZWxmXSkgewotICAgICAgICAvLyBGSVhNRTogd2hhdCBh
Ym91dCBwbHVnaW4gZG9jdW1lbnQgdmlldz8KICAgICAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFZp
ZXc+ICpkb2N1bWVudFZpZXcgPSBbW2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAg
ICAgICAgaWYgKFtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3Nd
XSkKICAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKilkb2N1bWVudFZpZXcgX3Jlc3VtZU51bGxF
dmVudHNGb3JBbGxOZXRzY2FwZVBsdWdpbnNdOwpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm0JKHJldmlzaW9uIDE0ODA2KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBv
cnQgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5oIgogCiAjaW1wb3J0ICJXZWJBcmNoaXZlLmgiCisj
aW1wb3J0ICJXZWJCYXNlUGx1Z2luUGFja2FnZS5oIgogI2ltcG9ydCAiV2ViRGF0YVNvdXJjZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEb2N1bWVudFByaXZhdGUuaCIKICNpbXBvcnQgIldlYkZy
YW1lQnJpZGdlLmgiCkBAIC00OCw2ICs0OSwxMCBAQAogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFT
b3VyY2U7CiAgICAgV2ViRnJhbWVCcmlkZ2UgKmJyaWRnZTsKICAgICBOU0RhdGEgKnBhcnNlZEFy
Y2hpdmVEYXRhOworICAgIAorICAgIEJPT0wgaGFzU2VudFJlc3BvbnNlVG9QbHVnaW47CisgICAg
aWQgPFdlYlBsdWdpbk1hbnVhbExvYWRlcj4gbWFudWFsTG9hZGVyOworICAgIE5TVmlldyAqcGx1
Z2luVmlldzsKIH0KIEBlbmQKIApAQCAtMTE5LDYgKzEyNCwxMiBAQAogICAgIHJldHVybiBfcHJp
dmF0ZS0+YnJpZGdlOwogfQogCistICh2b2lkKV9yZWRpcmVjdERhdGFUb01hbnVhbExvYWRlcjoo
aWQ8V2ViUGx1Z2luTWFudWFsTG9hZGVyPiltYW51YWxMb2FkZXIgZm9yUGx1Z2luVmlldzooTlNW
aWV3ICopcGx1Z2luVmlldzsKK3sKKyAgICBfcHJpdmF0ZS0+bWFudWFsTG9hZGVyID0gbWFudWFs
TG9hZGVyOworICAgIF9wcml2YXRlLT5wbHVnaW5WaWV3ID0gcGx1Z2luVmlldzsKK30KKwogLSAo
dm9pZClzZXREYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogewogICAgIF9w
cml2YXRlLT5kYXRhU291cmNlID0gZGF0YVNvdXJjZTsKQEAgLTEzMywxMiArMTQ0LDI1IEBACiAt
ICh2b2lkKXJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YSB3aXRoRGF0YVNvdXJjZTooV2ViRGF0
YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKICAgICBpZiAoW2RhdGFTb3VyY2Ugd2ViRnJhbWVdICYm
ICFbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsKLSAgICAgICAgW19wcml2YXRlLT5i
cmlkZ2UgcmVjZWl2ZWREYXRhOmRhdGEgdGV4dEVuY29kaW5nTmFtZTpbW19wcml2YXRlLT5kYXRh
U291cmNlIHJlc3BvbnNlXSB0ZXh0RW5jb2RpbmdOYW1lXV07CisgICAgICAgIGlmICghX3ByaXZh
dGUtPnBsdWdpblZpZXcpCisgICAgICAgICAgICBbX3ByaXZhdGUtPmJyaWRnZSByZWNlaXZlZERh
dGE6ZGF0YSB0ZXh0RW5jb2RpbmdOYW1lOltbX3ByaXZhdGUtPmRhdGFTb3VyY2UgcmVzcG9uc2Vd
IHRleHRFbmNvZGluZ05hbWVdXTsKKworICAgICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpblZpZXcp
IHsKKyAgICAgICAgICAgIGlmICghX3ByaXZhdGUtPmhhc1NlbnRSZXNwb25zZVRvUGx1Z2luKSB7
CisgICAgICAgICAgICAgICAgW19wcml2YXRlLT5tYW51YWxMb2FkZXIgcGx1Z2luVmlldzpfcHJp
dmF0ZS0+cGx1Z2luVmlldyByZWNlaXZlZFJlc3BvbnNlOltkYXRhU291cmNlIHJlc3BvbnNlXV07
CisgICAgICAgICAgICAgICAgX3ByaXZhdGUtPmhhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gWUVT
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBbX3ByaXZhdGUtPm1h
bnVhbExvYWRlciBwbHVnaW5WaWV3Ol9wcml2YXRlLT5wbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTpk
YXRhXTsKKyAgICAgICAgfQogICAgIH0KIH0KIAogLSAodm9pZClyZWNlaXZlZEVycm9yOihOU0Vy
cm9yICopZXJyb3Igd2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7
CisgICAgaWYgKF9wcml2YXRlLT5wbHVnaW5WaWV3KSB7CisgICAgICAgIFtfcHJpdmF0ZS0+bWFu
dWFsTG9hZGVyIHBsdWdpblZpZXc6X3ByaXZhdGUtPnBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjpl
cnJvcl07CisgICAgfQogfQogCiAtICh2b2lkKWxvYWRBcmNoaXZlCkBAIC0xNTAsNiArMTc0LDEy
IEBACiAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNl
ICopZGF0YVNvdXJjZQogewogICAgIFdlYkZyYW1lICpmcmFtZSA9IFtkYXRhU291cmNlIHdlYkZy
YW1lXTsKKworICAgIGlmIChfcHJpdmF0ZS0+cGx1Z2luVmlldykgeworICAgICAgICBbX3ByaXZh
dGUtPm1hbnVhbExvYWRlciBwbHVnaW5WaWV3RmluaXNoZWRMb2FkaW5nOl9wcml2YXRlLT5wbHVn
aW5WaWV3XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChmcmFtZSkgewogICAg
ICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7CiAgICAgICAgICAgICBb
c2VsZiBsb2FkQXJjaGl2ZV07CkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb25Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAxNDgwNikKKysrIFdlYktpdC9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjks
MTAgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MUmVwcmVzZW50YXRpb24uaD4KIAogQGNsYXNz
IFdlYkZyYW1lQnJpZGdlOworQHByb3RvY29sIFdlYlBsdWdpbk1hbnVhbExvYWRlcjsKIAogQGlu
dGVyZmFjZSBXZWJIVE1MUmVwcmVzZW50YXRpb24gKFdlYlByaXZhdGUpCiAtIChXZWJGcmFtZUJy
aWRnZSAqKV9icmlkZ2U7CistICh2b2lkKV9yZWRpcmVjdERhdGFUb01hbnVhbExvYWRlcjooaWQ8
V2ViUGx1Z2luTWFudWFsTG9hZGVyPiltYW51YWxMb2FkZXIgZm9yUGx1Z2luVmlldzooTlNWaWV3
ICopcGx1Z2luVmlldzsKIC0gKHZvaWQpcHJpbnRET01UcmVlOwogQGVuZAo=
</data>
<flag name="review"
          id="2550"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>