<?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>194559</bug_id>
          
          <creation_ts>2019-02-12 14:54:18 -0800</creation_ts>
          <short_desc>Remove WKLegacyPDFView</short_desc>
          <delta_ts>2019-02-13 09:01:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>lforschler</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505423</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-12 14:54:18 -0800</bug_when>
    <thetext>Remove WKLegacyPDFView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505424</commentid>
    <comment_count>1</comment_count>
      <attachid>361848</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-12 14:54:46 -0800</bug_when>
    <thetext>Created attachment 361848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505437</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-12 15:20:46 -0800</bug_when>
    <thetext>Ah crap unified sources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505445</commentid>
    <comment_count>3</comment_count>
      <attachid>361853</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-12 15:28:34 -0800</bug_when>
    <thetext>Created attachment 361853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505453</commentid>
    <comment_count>4</comment_count>
      <attachid>361857</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-12 15:52:40 -0800</bug_when>
    <thetext>Created attachment 361857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505595</commentid>
    <comment_count>5</comment_count>
      <attachid>361857</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-12 21:04:42 -0800</bug_when>
    <thetext>Comment on attachment 361857
Patch

Clearing flags on attachment: 361857

Committed r241337: &lt;https://trac.webkit.org/changeset/241337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505596</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-12 21:04:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505736</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-13 09:01:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/48039614&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361848</attachid>
            <date>2019-02-12 14:54:46 -0800</date>
            <delta_ts>2019-02-12 15:28:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194559-20190212145445.patch</filename>
            <type>text/plain</type>
            <size>56251</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgyM2FiMDZhOWZhY2FhZDBjN2IyMWEx
ZjRmZmQ2ZmEzMDhkM2NhMjkuLjM3YTZiZWM1NGVlOThkYjMyMzg1YWVmYzk0NThmY2YzZGEzYmEz
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdLTGVnYWN5UERGVmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTU5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmVhdHVy
ZURlZmluZXMuaDoKKwogMjAxOS0wMi0xMSAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDEyMjkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDQyNTMzZTM1ZmM2MWVkOWYyNmY3ZTg2NDgxMTJiMDNiMWNiZTg4YTcuLjRmYzk1NjliYjQ2
YmQ5YWVlYzJmNGNkZTI5Mjk2MDg1YmMzNmM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTktMDItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIFdLTGVnYWN5UERGVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW06IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDItMTEgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgQXV0b21hdGlv
bjogY2xpZW50IGNhbGxiYWNrcyBhcmUgbm90IGNhbGxlZCBpZiBkZWxlZ2F0ZSBkb2VzIG5vdCBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggN2JiZjk3MDk5YjBiNWViNjVkNGNk
ODk4YWM2YmFlNzEyZTU5MWE4OS4uY2Y5MmM1YjEyNDdiOGE1ZmE2M2YyOTgxZDkzZjI3OGExYzky
YjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0xNjUsMTIgKzE2NSw2IEBAIHRoZSBw
dWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzkxNjc+LiAqLwogI2Rl
ZmluZSBFTkFCTEVfRE9XTkxPQURfQVRUUklCVVRFIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
RU5BQkxFX1dLTEVHQUNZUERGVklFVykKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShJT1NNQUMp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTIwMDAwCi0jZGVmaW5lIEVO
QUJMRV9XS0xFR0FDWVBERlZJRVcgMQotI2VuZGlmCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVO
QUJMRV9XS1BERlZJRVcpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKSAmJiAhUExBVEZPUk0oSU9TTUFDKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICNkZWZpbmUgRU5BQkxFX1dL
UERGVklFVyAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvQ29y
ZVBERlNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY1ZDY2M2M1NTRiOGY3YTY1M2JiNTcwYzgy
ODY4ZDNhZTdhYTkzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvQ29yZVBERlNQSS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFdLTEVHQUNZ
UERGVklFVykgfHwgRU5BQkxFKFdLUERGVklFVykKLQotI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljcy5oPgotI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KLQotI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCi0KLSNpbXBvcnQgPENvcmVQREYvVUlQREZBbm5vdGF0aW9uQ29udHJvbGxl
ci5oPgotI2ltcG9ydCA8Q29yZVBERi9VSVBERkRvY3VtZW50Lmg+Ci0jaW1wb3J0IDxDb3JlUERG
L1VJUERGTGlua0Fubm90YXRpb24uaD4KLSNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlLmg+Ci0j
aW1wb3J0IDxDb3JlUERGL1VJUERGUGFnZVZpZXcuaD4KLSNpbXBvcnQgPENvcmVQREYvVUlQREZT
ZWxlY3Rpb24uaD4KLQotI2Vsc2UKLQotQGNsYXNzIFVJUERGU2VsZWN0aW9uOwotCi1AaW50ZXJm
YWNlIFVJUERGUGFnZSA6IE5TT2JqZWN0Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZQYWdlICgp
Ci0tIChDR1JlY3QpY3JvcEJveEFjY291bnRGb3JSb3RhdGlvbjsKLS0gKFVJUERGU2VsZWN0aW9u
ICopZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZnJvbVNlbGVjdGlvbjooVUlQREZTZWxl
Y3Rpb24gKilzZWxlY3Rpb24gb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylvcHRpb25z
OwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgOiBOU09iamVjdAotQGVuZAotCi1A
aW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgKCkKLS0gKFVJUERGUGFnZSAqKXBhZ2VBdEluZGV4OihO
U1VJbnRlZ2VyKWluZGV4OwotLSAoaWQpaW5pdFdpdGhDR1BERkRvY3VtZW50OihDR1BERkRvY3Vt
ZW50UmVmKWRvY3VtZW50OwotQHByb3BlcnR5IChhc3NpZ24sIHJlYWRvbmx5KSBOU1VJbnRlZ2Vy
IG51bWJlck9mUGFnZXM7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBDR1BERkRvY3VtZW50UmVmIENH
RG9jdW1lbnQ7Ci1AZW5kCi0KLXR5cGVkZWYgZW51bSB7Ci0gICAga1VJUERGT2JqZWN0S2luZEdy
YXBoaWMgPSAxLAotICAgIGtVSVBERk9iamVjdEtpbmRUZXh0ID0gMgotfSBVSVBERk9iamVjdEtp
bmQ7Ci0KLUBjbGFzcyBVSVBERlBhZ2VWaWV3OwotQHByb3RvY29sIFVJUERGQW5ub3RhdGlvbkNv
bnRyb2xsZXJEZWxlZ2F0ZTsKLQotQGludGVyZmFjZSBVSVBERkFubm90YXRpb25Db250cm9sbGVy
IDogTlNPYmplY3Q8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPgotQGVuZAotCi1AaW50ZXJm
YWNlIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIgKCkKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgVUlQREZQYWdlVmlldyAqcGFnZVZpZXc7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBpZDxOU09iamVjdCwgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRlPiBk
ZWxlZ2F0ZTsKLUBlbmQKLQotQHByb3RvY29sIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZTsKLQotQGlu
dGVyZmFjZSBVSVBERlBhZ2VWaWV3IDogVUlWaWV3Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZQ
YWdlVmlldyAoKQotLSAoaWQpaW5pdFdpdGhQYWdlOihVSVBERlBhZ2UgKikgcGFnZSB0aWxlZENv
bnRlbnQ6KEJPT0wpdGlsZWQ7Ci0tIChDR1JlY3QpY29udmVydFJlY3RGcm9tUERGUGFnZVNwYWNl
OihDR1JlY3QpcDsKLS0gKHZvaWQpaGlnaGxpZ2h0U2VhcmNoU2VsZWN0aW9uOihVSVBERlNlbGVj
dGlvbiAqKXNlbGVjdGlvbiBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKLS0gKHZvaWQpY2xlYXJT
ZWFyY2hIaWdobGlnaHRzOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCB1c2VC
YWNraW5nTGF5ZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZDxOU09iamVjdCwg
VUlQREZQYWdlVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQ0FMYXllciAqY29udGVudExheWVyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBVSVBERkFubm90YXRpb25Db250cm9sbGVyICphbm5vdGF0aW9uQ29udHJvbGxlcjsK
LUBlbmQKLQotQHByb3RvY29sIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZQotQG9wdGlvbmFsCi0tIChC
T09MKXNlbGVjdGlvbldpbGxUcmFjazooVUlQREZQYWdlVmlldyopcGFnZVZpZXc7Ci0tIChCT09M
KXNob3VsZFJlY29nbml6ZVRhcEluOihVSVBERlBhZ2VWaWV3ICopcGFnZVZpZXcgYXRQb2ludDoo
Q0dQb2ludClwb2ludDsKLS0gKENsYXNzKWNsYXNzRm9yQW5ub3RhdGlvblR5cGU6KGNvbnN0IGNo
YXIgKil0eXBlOwotLSAodm9pZClkaWRUYXA6KFVJUERGUGFnZVZpZXcgKilwYWdlVmlldyBhdFBv
aW50OihDR1BvaW50KXBvaW50OwotLSAodm9pZClkb3VibGVUYXBJbjooVUlQREZQYWdlVmlldyAq
KXBhZ2VWaWV3IGF0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKXBhZ2VXYXNSZW5kZXJl
ZDooVUlQREZQYWdlVmlldyAqKXBhZ2VWaWV3OwotLSAodm9pZClyZXNldFpvb206KFVJUERGUGFn
ZVZpZXcgKilwYWdlVmlldzsKLS0gKHZvaWQpc2VsZWN0aW9uRGlkRW5kVHJhY2tpbmc6KFVJUERG
UGFnZVZpZXcgKilwYWdlVmlldzsKLS0gKHZvaWQpem9vbTooVUlQREZQYWdlVmlldyAqKXBhZ2VW
aWV3IHRvOihDR1JlY3QpcmVjdCBhdFBvaW50OihDR1BvaW50KXB0IGtpbmQ6KFVJUERGT2JqZWN0
S2luZClraW5kOwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGQW5ub3RhdGlvbiA6IE5TT2JqZWN0
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZBbm5vdGF0aW9uICgpCi0tIChDR1JlY3QpUmVjdDsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIq
IGFubm90YXRpb25Db250cm9sbGVyOwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGTWFya3VwQW5u
b3RhdGlvbiA6IFVJUERGQW5ub3RhdGlvbgotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGTGlua0Fu
bm90YXRpb24gOiBVSVBERk1hcmt1cEFubm90YXRpb24KLUBlbmQKLQotQGludGVyZmFjZSBVSVBE
RkxpbmtBbm5vdGF0aW9uICgpCi0tIChOU1VSTCAqKXVybDsKLS0gKE5TVUludGVnZXIpcGFnZU51
bWJlcjsKLUBlbmQKLQotQHByb3RvY29sIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXJEZWxlZ2F0
ZQotQG9wdGlvbmFsCi0tICh2b2lkKWFubm90YXRpb246KFVJUERGQW5ub3RhdGlvbiAqKWFubm90
YXRpb24gd2FzVG91Y2hlZEF0UG9pbnQ6KENHUG9pbnQpIHBvaW50IGNvbnRyb2xsZXI6KFVJUERG
QW5ub3RhdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAodm9pZClhbm5vdGF0aW9uOihV
SVBERkFubm90YXRpb24gKilhbm5vdGF0aW9uIGlzQmVpbmdQcmVzc2VkQXRQb2ludDooQ0dQb2lu
dCkgcG9pbnQgY29udHJvbGxlcjooVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xs
ZXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZTZWxlY3Rpb24gOiBOU09iamVjdAotQGVuZAot
Ci1AaW50ZXJmYWNlIFVJUERGU2VsZWN0aW9uICgpCi0tIChpZClpbml0V2l0aFBhZ2U6KFVJUERG
UGFnZSAqKXBhZ2UgZnJvbUluZGV4OihOU1VJbnRlZ2VyKXN0YXJ0SW5kZXggdG9JbmRleDooTlNV
SW50ZWdlcillbmRJbmRleDsKLS0gKENHUmVjdClib3VuZHM7Ci0tIChVSVBERlBhZ2UgKilwYWdl
OwotLSAoTlNVSW50ZWdlcilzdGFydEluZGV4OwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgQ0ZSYW5nZSBzdHJpbmdSYW5nZTsKLUBlbmQKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0tMRUdBQ1lQREZWSUVXKSB8fCBFTkFCTEUoV0tQREZWSUVXKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDlmZWUyYzZjYzE3ZjcxOTE2M2I5MWEwNjM2ODNhYmVmMjAzMGM3YTkuLjZjYTQ1
Y2E4Y2FhYTUzZGQ3ZGU1NTFmMzliOWE4MDMxNGVjNWJlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTQwMyw3ICs0MDMsNiBAQCBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCi1VSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5t
bQogVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0KIFVJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCmluZGV4IDZk
N2Y5MTdhYjRhOGYwNjdkYmMwMjIwYjc1YmFhYjA5OTIzMjUwZjMuLmMyYTMwMzM3YTI1YzliMjgw
NWRlOGVkYmMyNDFiYWFjYjk3NGFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
Lm1tCkBAIC0zMCw3ICszMCw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1w
b3J0ICJXS0xlZ2FjeVBERlZpZXcuaCIKICNpbXBvcnQgIldLUERGVmlldy5oIgogI2ltcG9ydCAi
V0tTeXN0ZW1QcmV2aWV3Vmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaCIKQEAgLTU1LDkgKzU0LDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmln
dXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICNpZiBFTkFC
TEUoV0tQREZWSUVXKQogICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRl
cjpbV0tQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07Ci0jZWxpZiBFTkFCTEUo
V0tMRUdBQ1lQREZWSUVXKQotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKLSAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92
aWRlcjpbV0tMZWdhY3lQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CiAjZW5k
aWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0xlZ2FjeVBERlZpZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIx
ZWI3YzBhYjI5ZDg4Y2Y3YmMzZjk2ZGYzN2ZkZjM1ZjEwNzRmZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tMZWdhY3lQREZWaWV3LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmIEVOQUJMRShXS0xFR0FDWVBERlZJRVcpCi0KLSNpbXBvcnQgIkNvcmVQREZTUEku
aCIKLSNpbXBvcnQgIldLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaCIKLSNpbXBvcnQgIldLQXBwbGlj
YXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIgotI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyLmgiCi0KLUBpbnRlcmZhY2UgV0tMZWdhY3lQREZWaWV3IDogV0tBcHBsaWNhdGlvblN0YXRl
VHJhY2tpbmdWaWV3IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFVJUERGUGFnZVZpZXdEZWxl
Z2F0ZSwgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRlLCBXS0FjdGlvblNoZWV0QXNz
aXN0YW50RGVsZWdhdGU+Ci1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0tMRUdBQ1lQREZWSUVX
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMTIwODQ5NTJhNTU4Mzc5NGZmZjIzNDRiMDBl
OTcyZTRiZTE1ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDg2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIldLTGVnYWN5UERGVmlldy5oIgotCi0jaWYgRU5BQkxFKFdLTEVHQUNZ
UERGVklFVykKLQotI2ltcG9ydCAiQVBJRmluZENsaWVudC5oIgotI2ltcG9ydCAiQVBJVUlDbGll
bnQuaCIKLSNpbXBvcnQgIkNvcmVQREZTUEkuaCIKLSNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHku
aCIKLSNpbXBvcnQgIlNlc3Npb25TdGF0ZS5oIgotI2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBv
cnQgIldLUERGUGFnZU51bWJlckluZGljYXRvci5oIgotI2ltcG9ydCAiV0tQYXNzd29yZFZpZXcu
aCIKLSNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHku
aCIKLSNpbXBvcnQgIl9XS0ZpbmREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVySW50ZXJuYWwuaCIKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVU
eXBlcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLSNp
bXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgotI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFz
Lmg+Ci0KLS8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9y
ZSBkZXByZWNhdGVkIGRlY2xhcmF0aW9ucwotLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRj
aCBvZmYgdGhlbS4KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0KLWNvbnN0
IENHRmxvYXQgcGRmUGFnZU1hcmdpbiA9IDg7Ci1jb25zdCBDR0Zsb2F0IHBkZk1pbmltdW1ab29t
U2NhbGUgPSAxOwotY29uc3QgQ0dGbG9hdCBwZGZNYXhpbXVtWm9vbVNjYWxlID0gNTsKLQotY29u
c3QgZmxvYXQgb3ZlcmRyYXdIZWlnaHRNdWx0aXBsaWVyID0gMS41OwotCi1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyA9IDAuMDU7Ci0KLXR5cGVk
ZWYgc3RydWN0IHsKLSAgICBDR1JlY3QgZnJhbWU7Ci0gICAgUmV0YWluUHRyPFVJUERGUGFnZVZp
ZXc+IHZpZXc7Ci0gICAgUmV0YWluUHRyPFVJUERGUGFnZT4gcGFnZTsKLSAgICB1bnNpZ25lZCBp
bmRleDsKLX0gUERGUGFnZUluZm87Ci0KLUBpbnRlcmZhY2UgV0tMZWdhY3lQREZWaWV3ICgpCi0t
ICh2b2lkKV9yZXNldFpvb21BbmltYXRlZDooQk9PTClhbmltYXRlZDsKLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdLTGVnYWN5UERGVmlldyB7Ci0gICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRS
ZWY+IF9jZ1BERkRvY3VtZW50OwotICAgIFJldGFpblB0cjxVSVBERkRvY3VtZW50PiBfcGRmRG9j
dW1lbnQ7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAg
UmV0YWluUHRyPFdLUERGUGFnZU51bWJlckluZGljYXRvcj4gX3BhZ2VOdW1iZXJJbmRpY2F0b3I7
Ci0KLSAgICBWZWN0b3I8UERGUGFnZUluZm8+IF9wYWdlczsKLSAgICB1bnNpZ25lZCBfY2VudGVy
UGFnZU51bWJlcjsKLQotICAgIENHU2l6ZSBfbWluaW11bVNpemU7Ci0gICAgQ0dTaXplIF9vdmVy
bGFpZEFjY2Vzc29yeVZpZXdzSW5zZXQ7Ci0gICAgV0tXZWJWaWV3ICpfd2ViVmlldzsKLSAgICBV
SVNjcm9sbFZpZXcgKl9zY3JvbGxWaWV3OwotICAgIFVJVmlldyAqX2ZpeGVkT3ZlcmxheVZpZXc7
Ci0KLSAgICBCT09MIF9pc1N0YXJ0aW5nWm9vbTsKLSAgICBCT09MIF9pc1BlcmZvcm1pbmdTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uOwotCi0gICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQ+IF9hY3Rpb25TaGVldEFzc2lzdGFudDsKLSAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIF9wb3NpdGlvbkluZm9ybWF0aW9uOwotCi0gICAgdW5zaWduZWQgX2N1
cnJlbnRGaW5kUGFnZUluZGV4OwotICAgIHVuc2lnbmVkIF9jdXJyZW50RmluZE1hdGNoSW5kZXg7
Ci0gICAgUmV0YWluUHRyPFVJUERGU2VsZWN0aW9uPiBfY3VycmVudEZpbmRTZWxlY3Rpb247Ci0K
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9jYWNoZWRGaW5kU3RyaW5nOwotICAgIFZlY3RvcjxS
ZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+PiBfY2FjaGVkRmluZE1hdGNoZXM7Ci0gICAgdW5zaWdu
ZWQgX2NhY2hlZEZpbmRNYXhpbXVtQ291bnQ7Ci0gICAgX1dLRmluZE9wdGlvbnMgX2NhY2hlZEZp
bmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0czsKLQotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBf
bmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQ7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
bmV4dENhY2hlZEZpbmRTdHJpbmc7Ci0gICAgdW5zaWduZWQgX25leHRDYWNoZWRGaW5kTWF4aW11
bUNvdW50OwotICAgIF9XS0ZpbmRPcHRpb25zIF9uZXh0Q2FjaGVkRmluZE9wdGlvbnNBZmZlY3Rp
bmdSZXN1bHRzOwotCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBfZmluZFF1ZXVlOwotCi0gICAgUmV0
YWluUHRyPFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQ+IF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQ7Ci0K
LSAgICBVSUVkZ2VJbnNldHMgX2xhc3RVbm9ic2N1cmVkU2FmZUFyZWFJbnNldDsKLSAgICBDR0Zs
b2F0IF9sYXN0TGF5b3V0V2lkdGg7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSl3ZWJfaW5pdFdpdGhG
cmFtZTooQ0dSZWN0KWZyYW1lIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgIG1pbWVUeXBl
OihOU1N0cmluZyAqKW1pbWVUeXBlCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0
aEZyYW1lOmZyYW1lIHdlYlZpZXc6d2ViVmlld10pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3IgPSBbVUlDb2xvciBncmF5Q29sb3JdOwotCi0gICAgX3dl
YlZpZXcgPSB3ZWJWaWV3OwotCi0gICAgX3Njcm9sbFZpZXcgPSB3ZWJWaWV3LnNjcm9sbFZpZXc7
Ci0gICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6cGRmTWluaW11bVpvb21TY2Fs
ZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6cGRmTWF4aW11bVpvb21T
Y2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjpbVUlDb2xvciBncmF5
Q29sb3JdXTsKLQotICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0FjdGlv
blNoZWV0QXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfYWN0aW9u
U2hlZXRBc3Npc3RhbnQgc2V0RGVsZWdhdGU6c2VsZl07Ci0KLSAgICBfZmluZFF1ZXVlID0gZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldLUERGVmlld0NvbXB1dGVNYXRj
aGVzUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07Ci0KLSAgICBbc2VsZiBfY2xlYXJQYWdlc107
Ci0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIGRp
c3BhdGNoX3JlbGVhc2UoX2ZpbmRRdWV1ZSk7Ci0gICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBj
bGVhbnVwU2hlZXRdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNTdHJpbmcgKil3
ZWJfc3VnZ2VzdGVkRmlsZW5hbWUKLXsKLSAgICByZXR1cm4gX3N1Z2dlc3RlZEZpbGVuYW1lLmdl
dCgpOwotfQotCi0tIChOU0RhdGEgKil3ZWJfZGF0YVJlcHJlc2VudGF0aW9uCi17Ci0gICAgcmV0
dXJuIFsoTlNEYXRhICopQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKF9jZ1BERkRvY3VtZW50LmdldCgpKSkgYXV0b3JlbGVhc2VdOwotfQotCi1zdGF0
aWMgdm9pZCBkZXRhY2hWaWV3Rm9yUGFnZShQREZQYWdlSW5mbyYgcGFnZSkKLXsKLSAgICBbcGFn
ZS52aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIFtwYWdlLnZpZXcgc2V0RGVsZWdhdGU6
bmlsXTsKLSAgICBbW3BhZ2UudmlldyBhbm5vdGF0aW9uQ29udHJvbGxlcl0gc2V0RGVsZWdhdGU6
bmlsXTsKLSAgICBwYWdlLnZpZXcgPSBuaWw7Ci19Ci0KLS0gKHZvaWQpX2NsZWFyUGFnZXMKLXsK
LSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBfcGFnZXMpCi0gICAgICAgIGRldGFjaFZpZXdGb3JQYWdl
KHBhZ2UpOwotICAgIAotICAgIF9wYWdlcy5jbGVhcigpOwotfQotCi0tICh2b2lkKV9kaWRMb2Fk
UERGRG9jdW1lbnQKLXsKLSAgICBfcGRmRG9jdW1lbnQgPSBhZG9wdE5TKFtbVUlQREZEb2N1bWVu
dCBhbGxvY10gaW5pdFdpdGhDR1BERkRvY3VtZW50Ol9jZ1BERkRvY3VtZW50LmdldCgpXSk7Ci0K
LSAgICAvLyBGSVhNRTogUmVzdG9yZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCBwYWdlIHNjYWxl
IGlmIG5hdmlnYXRpbmcgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCi0KLSAgICBbc2VsZiBf
Y29tcHV0ZVBhZ2VBbmREb2N1bWVudEZyYW1lc107Ci0gICAgW3NlbGYgX3JldmFsaWRhdGVWaWV3
c107Ci0gICAgW3NlbGYgX3Njcm9sbFRvRnJhZ21lbnQ6X3dlYlZpZXcuVVJMLmZyYWdtZW50XTsK
LX0KLQotLSAodm9pZCl3ZWJfc2V0Q29udGVudFByb3ZpZGVyRGF0YTooTlNEYXRhICopZGF0YSBz
dWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZQotewotICAgIF9zdWdnZXN0ZWRG
aWxlbmFtZSA9IGFkb3B0TlMoW2ZpbGVuYW1lIGNvcHldKTsKLQotICAgIFtzZWxmIF9jbGVhclBh
Z2VzXTsKLQotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilkYXRhKSk7
Ci0gICAgX2NnUERGRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJv
dmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7Ci0KLSAgICBpZiAoIV9jZ1BERkRvY3VtZW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoQ0dQREZEb2N1bWVudElzVW5sb2NrZWQoX2NnUERG
RG9jdW1lbnQuZ2V0KCkpKSB7Ci0gICAgICAgIFtzZWxmIF9kaWRMb2FkUERGRG9jdW1lbnRdOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW3NlbGYgX3Nob3dQYXNzd29yZEVudHJ5Rmll
bGRdOwotfQotCi0tICh2b2lkKXdlYl9zZXRNaW5pbXVtU2l6ZTooQ0dTaXplKXNpemUKLXsKLSAg
ICBpZiAoQ0dTaXplRXF1YWxUb1NpemUoc2l6ZSwgX21pbmltdW1TaXplKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgX21pbmltdW1TaXplID0gc2l6ZTsKLQotICAgIGlmIChfd2ViVmlldy5fcGFz
c3dvcmRWaWV3KSB7Ci0gICAgICAgIHNlbGYuZnJhbWUgPSB7IHNlbGYuZnJhbWUub3JpZ2luLCBz
aXplIH07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDR0Zsb2F0IG9sZERvY3VtZW50
TGVmdEZyYWN0aW9uID0gMDsKLSAgICBDR0Zsb2F0IG9sZERvY3VtZW50VG9wRnJhY3Rpb24gPSAw
OwotICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IF9zY3JvbGxWaWV3LmNvbnRlbnRTaXplOwotICAg
IGlmIChjb250ZW50U2l6ZS53aWR0aCAmJiBjb250ZW50U2l6ZS5oZWlnaHQpIHsKLSAgICAgICAg
Q0dQb2ludCBjb250ZW50T2Zmc2V0ID0gX3Njcm9sbFZpZXcuY29udGVudE9mZnNldDsKLSAgICAg
ICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IF9zY3JvbGxWaWV3LmNvbnRlbnRJbnNldDsK
LSAgICAgICAgb2xkRG9jdW1lbnRMZWZ0RnJhY3Rpb24gPSAoY29udGVudE9mZnNldC54ICsgY29u
dGVudEluc2V0LmxlZnQpIC8gY29udGVudFNpemUud2lkdGg7Ci0gICAgICAgIG9sZERvY3VtZW50
VG9wRnJhY3Rpb24gPSAoY29udGVudE9mZnNldC55ICsgY29udGVudEluc2V0LnRvcCkgLyBjb250
ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgfQotCi0gICAgW3NlbGYgX2NvbXB1dGVQYWdlQW5kRG9jdW1l
bnRGcmFtZXNdOwotCi0gICAgQ0dTaXplIG5ld0NvbnRlbnRTaXplID0gX3Njcm9sbFZpZXcuY29u
dGVudFNpemU7Ci0gICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IF9zY3JvbGxWaWV3LmNv
bnRlbnRJbnNldDsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50TWFr
ZSgob2xkRG9jdW1lbnRMZWZ0RnJhY3Rpb24gKiBuZXdDb250ZW50U2l6ZS53aWR0aCkgLSBjb250
ZW50SW5zZXQubGVmdCwgKG9sZERvY3VtZW50VG9wRnJhY3Rpb24gKiBuZXdDb250ZW50U2l6ZS5o
ZWlnaHQpIC0gY29udGVudEluc2V0LnRvcCkgYW5pbWF0ZWQ6Tk9dOwotCi0gICAgW3NlbGYgX3Jl
dmFsaWRhdGVWaWV3c107Ci19Ci0KLS0gKHZvaWQpd2ViX3Njcm9sbFZpZXdEaWRTY3JvbGw6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKLXsKLSAgICBpZiAoc2Nyb2xsVmlldy5pc1pvb21Cb3Vu
Y2luZyB8fCBzY3JvbGxWaWV3Ll9pc0FuaW1hdGluZ1pvb20pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFtzZWxmIF9yZXZhbGlkYXRlVmlld3NdOwotCi0gICAgaWYgKCFfaXNQZXJmb3JtaW5nU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbikKLSAgICAgICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIHNob3dd
OwotfQotCi0tICh2b2lkKV9lbnN1cmVWaWV3Rm9yUGFnZTooUERGUGFnZUluZm8mKXBhZ2VJbmZv
Ci17Ci0gICAgaWYgKHBhZ2VJbmZvLnZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBhZ2VJ
bmZvLnZpZXcgPSBhZG9wdE5TKFtbVUlQREZQYWdlVmlldyBhbGxvY10gaW5pdFdpdGhQYWdlOnBh
Z2VJbmZvLnBhZ2UuZ2V0KCkgdGlsZWRDb250ZW50OllFU10pOwotICAgIFtwYWdlSW5mby52aWV3
IHNldFVzZUJhY2tpbmdMYXllcjpZRVNdOwotICAgIFtwYWdlSW5mby52aWV3IHNldERlbGVnYXRl
OnNlbGZdOwotICAgIFtbcGFnZUluZm8udmlldyBhbm5vdGF0aW9uQ29udHJvbGxlcl0gc2V0RGVs
ZWdhdGU6c2VsZl07Ci0gICAgW3NlbGYgYWRkU3VidmlldzpwYWdlSW5mby52aWV3LmdldCgpXTsK
LQotICAgIFtwYWdlSW5mby52aWV3IHNldEZyYW1lOnBhZ2VJbmZvLmZyYW1lXTsKLSAgICBbcGFn
ZUluZm8udmlldyBjb250ZW50TGF5ZXJdLmNvbnRlbnRzU2NhbGUgPSBzZWxmLndpbmRvdy5zY3Jl
ZW4uc2NhbGU7Ci19Ci0KLS0gKHZvaWQpX3JldmFsaWRhdGVWaWV3cwotewotICAgIGlmIChfaXNT
dGFydGluZ1pvb20pCi0gICAgICAgIHJldHVybjsKLQotICAgIENHUmVjdCB0YXJnZXRSZWN0ID0g
W19zY3JvbGxWaWV3IGNvbnZlcnRSZWN0Ol9zY3JvbGxWaWV3LmJvdW5kcyB0b1ZpZXc6c2VsZl07
Ci0KLSAgICAvLyBXZSBhcHBseSBvdmVyZHJhdyBhZnRlciBhcHBseWluZyBzY2FsZSBpbiBvcmRl
ciB0byBhdm9pZCBleGNlc3NpdmUKLSAgICAvLyBtZW1vcnkgdXNlIGNhdXNlZCBieSBzY2FsaW5n
IHRoZSBvdmVyZHJhdy4KLSAgICBDR1JlY3QgdGFyZ2V0UmVjdFdpdGhPdmVyZHJhdyA9IENHUmVj
dEluc2V0KHRhcmdldFJlY3QsIDAsIC10YXJnZXRSZWN0LnNpemUuaGVpZ2h0ICogb3ZlcmRyYXdI
ZWlnaHRNdWx0aXBsaWVyKTsKLSAgICBDR1JlY3QgdGFyZ2V0UmVjdEZvckNlbnRlclBhZ2UgPSBD
R1JlY3RJbnNldCh0YXJnZXRSZWN0LCAwLCB0YXJnZXRSZWN0LnNpemUuaGVpZ2h0IC8gMiAtIHBk
ZlBhZ2VNYXJnaW4gKiAyKTsKLQotICAgIF9jZW50ZXJQYWdlTnVtYmVyID0gMDsKLQotICAgIGZv
ciAoYXV0byYgcGFnZUluZm8gOiBfcGFnZXMpIHsKLSAgICAgICAgaWYgKCFDR1JlY3RJbnRlcnNl
Y3RzUmVjdChwYWdlSW5mby5mcmFtZSwgdGFyZ2V0UmVjdFdpdGhPdmVyZHJhdykgJiYgcGFnZUlu
Zm8uaW5kZXggIT0gX2N1cnJlbnRGaW5kUGFnZUluZGV4KSB7Ci0gICAgICAgICAgICBkZXRhY2hW
aWV3Rm9yUGFnZShwYWdlSW5mbyk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghX2NlbnRlclBhZ2VOdW1iZXIgJiYgQ0dSZWN0SW50ZXJzZWN0c1JlY3Qo
cGFnZUluZm8uZnJhbWUsIHRhcmdldFJlY3RGb3JDZW50ZXJQYWdlKSkKLSAgICAgICAgICAgIF9j
ZW50ZXJQYWdlTnVtYmVyID0gcGFnZUluZm8uaW5kZXggKyAxOwotCi0gICAgICAgIFtzZWxmIF9l
bnN1cmVWaWV3Rm9yUGFnZTpwYWdlSW5mb107Ci0gICAgfQotCi0gICAgaWYgKCFfY2VudGVyUGFn
ZU51bWJlciAmJiBfcGFnZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlmIChDR1JlY3RHZXRNaW5ZKF9w
YWdlcy5maXJzdCgpLmZyYW1lKSA+IENHUmVjdEdldE1heFkodGFyZ2V0UmVjdEZvckNlbnRlclBh
Z2UpKQotICAgICAgICAgICAgX2NlbnRlclBhZ2VOdW1iZXIgPSAxOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIEFTU0VSVChDR1JlY3RHZXRNYXhZKF9wYWdlcy5sYXN0KCkuZnJhbWUpIDwg
Q0dSZWN0R2V0TWluWSh0YXJnZXRSZWN0Rm9yQ2VudGVyUGFnZSkpOwotICAgICAgICAgICAgX2Nl
bnRlclBhZ2VOdW1iZXIgPSBfcGFnZXMuc2l6ZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
W3NlbGYgX3VwZGF0ZVBhZ2VOdW1iZXJJbmRpY2F0b3JdOwotfQotCi0tIChDR1BvaW50KV9vZmZz
ZXRGb3JQYWdlTnVtYmVySW5kaWNhdG9yCi17Ci0gICAgVUlFZGdlSW5zZXRzIGluc2V0cyA9IFVJ
RWRnZUluc2V0c0FkZChfd2ViVmlldy5fY29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldCwg
X3dlYlZpZXcuX2NvbXB1dGVkT2JzY3VyZWRJbnNldCwgVUlSZWN0RWRnZUFsbCk7Ci0gICAgcmV0
dXJuIENHUG9pbnRNYWtlKGluc2V0cy5sZWZ0LCBpbnNldHMudG9wICsgX292ZXJsYWlkQWNjZXNz
b3J5Vmlld3NJbnNldC5oZWlnaHQpOwotfQotCi0tICh2b2lkKV91cGRhdGVQYWdlTnVtYmVySW5k
aWNhdG9yCi17Ci0gICAgaWYgKF9pc1BlcmZvcm1pbmdTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9wYWdlTnVtYmVySW5kaWNhdG9yKQotICAgICAg
ICBfcGFnZU51bWJlckluZGljYXRvciA9IGFkb3B0TlMoW1tXS1BERlBhZ2VOdW1iZXJJbmRpY2F0
b3IgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb10pOwotCi0gICAgW19maXhlZE92ZXJs
YXlWaWV3IGFkZFN1YnZpZXc6X3BhZ2VOdW1iZXJJbmRpY2F0b3IuZ2V0KCldOwotCi0gICAgW19w
YWdlTnVtYmVySW5kaWNhdG9yIHNldEN1cnJlbnRQYWdlTnVtYmVyOl9jZW50ZXJQYWdlTnVtYmVy
XTsKLSAgICBbX3BhZ2VOdW1iZXJJbmRpY2F0b3IgbW92ZVRvUG9pbnQ6W3NlbGYgX29mZnNldEZv
clBhZ2VOdW1iZXJJbmRpY2F0b3JdIGFuaW1hdGVkOk5PXTsKLX0KLQotLSAodm9pZCl3ZWJfc2V0
T3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0luc2V0OihDR1NpemUpaW5zZXQKLXsKLSAgICBfb3Zlcmxh
aWRBY2Nlc3NvcnlWaWV3c0luc2V0ID0gaW5zZXQ7Ci0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9y
IG1vdmVUb1BvaW50OltzZWxmIF9vZmZzZXRGb3JQYWdlTnVtYmVySW5kaWNhdG9yXSBhbmltYXRl
ZDpZRVNdOwotfQotCi0tICh2b2lkKXdlYl9jb21wdXRlZENvbnRlbnRJbnNldERpZENoYW5nZQot
ewotICAgIFtzZWxmIF91cGRhdGVQYWdlTnVtYmVySW5kaWNhdG9yXTsKLQotICAgIGlmIChVSUVk
Z2VJbnNldHNFcXVhbFRvRWRnZUluc2V0cyhfd2ViVmlldy5fY29tcHV0ZWRVbm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldCwgX2xhc3RVbm9ic2N1cmVkU2FmZUFyZWFJbnNldCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFtzZWxmIF9jb21wdXRlUGFnZUFuZERvY3VtZW50RnJhbWVzXTsKLSAgICBbc2Vs
ZiBfcmV2YWxpZGF0ZVZpZXdzXTsKLX0KLQotLSAodm9pZCl3ZWJfc2V0Rml4ZWRPdmVybGF5Vmll
dzooVUlWaWV3ICopZml4ZWRPdmVybGF5VmlldwotewotICAgIF9maXhlZE92ZXJsYXlWaWV3ID0g
Zml4ZWRPdmVybGF5VmlldzsKLQotICAgIGlmIChfcGFnZU51bWJlckluZGljYXRvcikKLSAgICAg
ICAgW19maXhlZE92ZXJsYXlWaWV3IGFkZFN1YnZpZXc6X3BhZ2VOdW1iZXJJbmRpY2F0b3IuZ2V0
KCldOwotfQotCi0tICh2b2lkKV9zY3JvbGxUb0ZyYWdtZW50OihOU1N0cmluZyAqKWZyYWdtZW50
Ci17Ci0gICAgaWYgKCFbZnJhZ21lbnQgaGFzUHJlZml4OkAicGFnZSJdKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBOU0ludGVnZXIgcGFnZUluZGV4ID0gW1tmcmFnbWVudCBzdWJzdHJpbmdGcm9t
SW5kZXg6NF0gaW50ZWdlclZhbHVlXSAtIDE7Ci0gICAgaWYgKHBhZ2VJbmRleCA8IDAgfHwgc3Rh
dGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHBhZ2VJbmRleCkgPj0gX3BhZ2VzLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgX2lzUGVyZm9ybWluZ1NhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBZ
RVM7Ci0KLSAgICBbX3BhZ2VOdW1iZXJJbmRpY2F0b3IgaGlkZV07Ci0gICAgW3NlbGYgX3Jlc2V0
Wm9vbUFuaW1hdGVkOk5PXTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBwYWdlIG1hcmdpbiBp
cyB2aXNpYmxlIGJlbG93IHRoZSBjb250ZW50IGluc2V0LgotICAgIGNvbnN0IENHRmxvYXQgdmVy
dGljYWxPZmZzZXQgPSBfcGFnZXNbcGFnZUluZGV4XS5mcmFtZS5vcmlnaW4ueSAtIF93ZWJWaWV3
Ll9jb21wdXRlZE9ic2N1cmVkSW5zZXQudG9wIC0gcGRmUGFnZU1hcmdpbjsKLSAgICBbX3Njcm9s
bFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50TWFrZShfc2Nyb2xsVmlldy5jb250ZW50T2Zm
c2V0LngsIHZlcnRpY2FsT2Zmc2V0KSBhbmltYXRlZDpOT107Ci0KLSAgICBfaXNQZXJmb3JtaW5n
U2FtZURvY3VtZW50TmF2aWdhdGlvbiA9IE5POwotfQotCi0tICh2b2lkKXdlYl9kaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uOihXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKW5hdmlnYXRpb25U
eXBlCi17Ci0gICAgLy8gQ2hlY2sgZm9yIGtXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9u
U3RhdGVQb3AgaW5zdGVhZCBvZiBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdh
dGlvbiBzaW5jZSB0aGUKLSAgICAvLyBsYXR0ZXIgaXMgb25seSBjYWxsZWQgb25jZSB3aGVuIG5h
dmlnYXRpbmcgdG8gdGhlIHNhbWUgYW5jaG9yIGluIHN1Y2Nlc3Npb24uIElmIHRoZSB1c2VyIG5h
dmlnYXRlcyB0byBhIHBhZ2UKLSAgICAvLyB0aGVuIHNjcm9sbHMgYmFjayBhbmQgY2xpY2tzIG9u
IHRoZSBzYW1lIGxpbmsgYSBzZWNvbmQgdGltZSwgd2Ugd2FudCB0byBzY3JvbGwgYWdhaW4uCi0g
ICAgaWYgKG5hdmlnYXRpb25UeXBlICE9IGtXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9u
U3RhdGVQb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiByZXN0b3JlIHRoZSBz
Y3JvbGwgcG9zaXRpb24gYW5kIHBhZ2Ugc2NhbGUgaWYgbmF2aWdhdGluZyBiYWNrIGZyb20gYSBm
cmFnbWVudC4KLQotICAgIFtzZWxmIF9zY3JvbGxUb0ZyYWdtZW50Ol93ZWJWaWV3LlVSTC5mcmFn
bWVudF07Ci19Ci0KLS0gKFVJVmlldyAqKXdlYl9jb250ZW50VmlldwotewotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tICh2b2lkKV9jb21wdXRlUGFnZUFuZERvY3VtZW50RnJhbWVzCi17Ci0gICAg
VUlFZGdlSW5zZXRzIHNhZmVBcmVhSW5zZXRzID0gX3dlYlZpZXcuX2NvbXB1dGVkVW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXQ7Ci0gICAgX2xhc3RVbm9ic2N1cmVkU2FmZUFyZWFJbnNldCA9IHNhZmVB
cmVhSW5zZXRzOwotICAgIENHU2l6ZSBtaW5pbXVtU2l6ZVJlc3BlY3RpbmdDb250ZW50SW5zZXQg
PSBDR1NpemVNYWtlKF9taW5pbXVtU2l6ZS53aWR0aCAtIChzYWZlQXJlYUluc2V0cy5sZWZ0ICsg
c2FmZUFyZWFJbnNldHMucmlnaHQpLCBfbWluaW11bVNpemUuaGVpZ2h0IC0gKHNhZmVBcmVhSW5z
ZXRzLnRvcCArIHNhZmVBcmVhSW5zZXRzLmJvdHRvbSkpOwotCi0gICAgaWYgKCFfcGFnZXMuaXNF
bXB0eSgpICYmIF9sYXN0TGF5b3V0V2lkdGggPT0gbWluaW11bVNpemVSZXNwZWN0aW5nQ29udGVu
dEluc2V0LndpZHRoKSB7Ci0gICAgICAgIFtzZWxmIF91cGRhdGVEb2N1bWVudEZyYW1lXTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIE5TVUludGVnZXIgcGFnZUNvdW50ID0gW19wZGZE
b2N1bWVudCBudW1iZXJPZlBhZ2VzXTsKLSAgICBpZiAoIXBhZ2VDb3VudCkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIF9sYXN0TGF5b3V0V2lkdGggPSBtaW5pbXVtU2l6ZVJlc3BlY3RpbmdD
b250ZW50SW5zZXQud2lkdGg7Ci0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIHNldFBhZ2VDb3Vu
dDpwYWdlQ291bnRdOwotICAgIAotICAgIFtzZWxmIF9jbGVhclBhZ2VzXTsKLQotICAgIF9wYWdl
cy5yZXNlcnZlQ2FwYWNpdHkocGFnZUNvdW50KTsKLQotICAgIENHUmVjdCBwYWdlRnJhbWUgPSBD
R1JlY3RNYWtlKDAsIDAsIG1pbmltdW1TaXplUmVzcGVjdGluZ0NvbnRlbnRJbnNldC53aWR0aCwg
bWluaW11bVNpemVSZXNwZWN0aW5nQ29udGVudEluc2V0LmhlaWdodCk7Ci0gICAgZm9yIChOU1VJ
bnRlZ2VyIHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IHBhZ2VDb3VudDsgKytwYWdlSW5kZXgp
IHsKLSAgICAgICAgVUlQREZQYWdlICpwYWdlID0gW19wZGZEb2N1bWVudCBwYWdlQXRJbmRleDpw
YWdlSW5kZXhdOwotICAgICAgICBpZiAoIXBhZ2UpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBDR1NpemUgcGFnZVNpemUgPSBbcGFnZSBjcm9wQm94QWNjb3VudEZvclJvdGF0aW9u
XS5zaXplOwotICAgICAgICBwYWdlRnJhbWUuc2l6ZS5oZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQg
LyBwYWdlU2l6ZS53aWR0aCAqIHBhZ2VGcmFtZS5zaXplLndpZHRoOwotICAgICAgICBDR1JlY3Qg
cGFnZUZyYW1lV2l0aE1hcmdpbkFwcGxpZWQgPSBDR1JlY3RJbnNldChwYWdlRnJhbWUsIHBkZlBh
Z2VNYXJnaW4sIHBkZlBhZ2VNYXJnaW4pOwotICAgICAgICBpZiAoQ0dSZWN0SXNOdWxsKHBhZ2VG
cmFtZVdpdGhNYXJnaW5BcHBsaWVkKSkKLSAgICAgICAgICAgIHBhZ2VGcmFtZVdpdGhNYXJnaW5B
cHBsaWVkID0gQ0dSZWN0WmVybzsKLQotICAgICAgICBQREZQYWdlSW5mbyBwYWdlSW5mbzsKLSAg
ICAgICAgcGFnZUluZm8ucGFnZSA9IHBhZ2U7Ci0gICAgICAgIHBhZ2VJbmZvLmZyYW1lID0gcGFn
ZUZyYW1lV2l0aE1hcmdpbkFwcGxpZWQ7Ci0gICAgICAgIHBhZ2VJbmZvLmluZGV4ID0gcGFnZUlu
ZGV4OwotICAgICAgICBfcGFnZXMuYXBwZW5kKHBhZ2VJbmZvKTsKLSAgICAgICAgcGFnZUZyYW1l
Lm9yaWdpbi55ICs9IHBhZ2VGcmFtZS5zaXplLmhlaWdodCAtIHBkZlBhZ2VNYXJnaW47Ci0gICAg
fQotCi0gICAgW3NlbGYgX3VwZGF0ZURvY3VtZW50RnJhbWVdOwotfQotCi0tICh2b2lkKV91cGRh
dGVEb2N1bWVudEZyYW1lCi17Ci0gICAgaWYgKF9wYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFVJRWRnZUluc2V0cyBzYWZlQXJlYUluc2V0cyA9IF93ZWJWaWV3Ll9jb21w
dXRlZFVub2JzY3VyZWRTYWZlQXJlYUluc2V0OwotICAgIENHRmxvYXQgc2NhbGUgPSBfc2Nyb2xs
Vmlldy56b29tU2NhbGU7Ci0gICAgQ0dSZWN0IG5ld0ZyYW1lID0gQ0dSZWN0WmVybzsKLSAgICBu
ZXdGcmFtZS5vcmlnaW4ueCA9IHNhZmVBcmVhSW5zZXRzLmxlZnQ7Ci0gICAgbmV3RnJhbWUub3Jp
Z2luLnkgPSBzYWZlQXJlYUluc2V0cy50b3A7Ci0gICAgbmV3RnJhbWUuc2l6ZS53aWR0aCA9IF9s
YXN0TGF5b3V0V2lkdGggKiBzY2FsZTsKLSAgICBuZXdGcmFtZS5zaXplLmhlaWdodCA9IHN0ZDo6
bWF4KChDR1JlY3RHZXRNYXhZKF9wYWdlcy5sYXN0KCkuZnJhbWUpICsgcGRmUGFnZU1hcmdpbikg
KiBzY2FsZSArIHNhZmVBcmVhSW5zZXRzLmJvdHRvbSwgX21pbmltdW1TaXplLmhlaWdodCAqIHNj
YWxlKTsKLQotICAgIFtzZWxmIHNldEZyYW1lOm5ld0ZyYW1lXTsKLSAgICBbX3Njcm9sbFZpZXcg
c2V0Q29udGVudFNpemU6bmV3RnJhbWUuc2l6ZV07Ci19Ci0KLS0gKHZvaWQpX3Jlc2V0Wm9vbUFu
aW1hdGVkOihCT09MKWFuaW1hdGVkCi17Ci0gICAgX2lzU3RhcnRpbmdab29tID0gWUVTOwotCi0g
ICAgQ0dSZWN0IHNjcm9sbFZpZXdCb3VuZHMgPSBfc2Nyb2xsVmlldy5ib3VuZHM7Ci0gICAgQ0dQ
b2ludCBjZW50ZXJPZlBhZ2VJbkRvY3VtZW50Q29vcmRpbmF0ZXMgPSBbX3Njcm9sbFZpZXcgY29u
dmVydFBvaW50OkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoc2Nyb2xsVmlld0JvdW5kcyksIENH
UmVjdEdldE1pZFkoc2Nyb2xsVmlld0JvdW5kcykpIHRvVmlldzpzZWxmXTsKLSAgICBbX3dlYlZp
ZXcgX3pvb21PdXRXaXRoT3JpZ2luOmNlbnRlck9mUGFnZUluRG9jdW1lbnRDb29yZGluYXRlcyBh
bmltYXRlZDphbmltYXRlZF07Ci0KLSAgICBfaXNTdGFydGluZ1pvb20gPSBOTzsKLX0KLQotLSAo
dm9pZClfaGlnaGxpZ2h0TGlua0Fubm90YXRpb246KFVJUERGTGlua0Fubm90YXRpb24gKilsaW5r
QW5ub3RhdGlvbiBmb3JEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgc3RhdGlj
IGNvbnN0IENHRmxvYXQgaGlnaGxpZ2h0Qm9yZGVyUmFkaXVzID0gMzsKLSAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCBoaWdobGlnaHRDb2xvckNvbXBvbmVudCA9IDI2LjAgLyAyNTU7Ci0gICAgc3Rh
dGljIFVJQ29sb3IgKmhpZ2hsaWdodENvbG9yID0gW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aFJl
ZDpoaWdobGlnaHRDb2xvckNvbXBvbmVudCBncmVlbjpoaWdobGlnaHRDb2xvckNvbXBvbmVudCBi
bHVlOmhpZ2hsaWdodENvbG9yQ29tcG9uZW50IGFscGhhOjAuM107Ci0KLSAgICBVSVBERlBhZ2VW
aWV3ICpwYWdlVmlldyA9IGxpbmtBbm5vdGF0aW9uLmFubm90YXRpb25Db250cm9sbGVyLnBhZ2VW
aWV3OwotICAgIENHUmVjdCBoaWdobGlnaHRWaWV3RnJhbWUgPSBbc2VsZiBjb252ZXJ0UmVjdDpb
cGFnZVZpZXcgY29udmVydFJlY3RGcm9tUERGUGFnZVNwYWNlOmxpbmtBbm5vdGF0aW9uLlJlY3Rd
IGZyb21WaWV3OnBhZ2VWaWV3XTsKLSAgICBSZXRhaW5QdHI8X1VJSGlnaGxpZ2h0Vmlldz4gaGln
aGxpZ2h0VmlldyA9IGFkb3B0TlMoW1tfVUlIaWdobGlnaHRWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdEluc2V0KGhpZ2hsaWdodFZpZXdGcmFtZSwgLWhpZ2hsaWdodEJvcmRlclJhZGl1
cywgLWhpZ2hsaWdodEJvcmRlclJhZGl1cyldKTsKLSAgICBbaGlnaGxpZ2h0VmlldyBzZXRPcGFx
dWU6Tk9dOwotICAgIFtoaWdobGlnaHRWaWV3IHNldENvcm5lclJhZGl1czpoaWdobGlnaHRCb3Jk
ZXJSYWRpdXNdOwotICAgIFtoaWdobGlnaHRWaWV3IHNldENvbG9yOmhpZ2hsaWdodENvbG9yXTsK
LQotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgW3NlbGYgYWRkU3Vidmlldzpo
aWdobGlnaHRWaWV3LmdldCgpXTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJ
U1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFtoaWdobGlnaHRWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0pOwotfQotCi0tIChOU1VS
TCAqKV9VUkxGb3JMaW5rQW5ub3RhdGlvbjooVUlQREZMaW5rQW5ub3RhdGlvbiAqKWxpbmtBbm5v
dGF0aW9uCi17Ci0gICAgTlNVUkwgKmRvY3VtZW50VVJMID0gX3dlYlZpZXcuVVJMOwotCi0gICAg
aWYgKE5TVVJMICp1cmwgPSBsaW5rQW5ub3RhdGlvbi51cmwpCi0gICAgICAgIHJldHVybiBbTlNV
UkwgVVJMV2l0aFN0cmluZzp1cmwucmVsYXRpdmVTdHJpbmcgcmVsYXRpdmVUb1VSTDpkb2N1bWVu
dFVSTF07Ci0KLSAgICBpZiAoTlNVSW50ZWdlciBwYWdlTnVtYmVyID0gbGlua0Fubm90YXRpb24u
cGFnZU51bWJlcikgewotICAgICAgICBTdHJpbmcgYW5jaG9yU3RyaW5nID0gbWFrZVN0cmluZygi
I3BhZ2UiLCBwYWdlTnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5n
OmFuY2hvclN0cmluZyByZWxhdGl2ZVRvVVJMOmRvY3VtZW50VVJMXTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbmlsOwotfQotCi0jcHJhZ21hIG1hcmsgRmluZC1pbi1QYWdlCi0KLXN0YXRpYyBOU1N0
cmluZ0NvbXBhcmVPcHRpb25zIHN0cmluZ0NvbXBhcmVPcHRpb25zKF9XS0ZpbmRPcHRpb25zIG9w
dGlvbnMpCi17Ci0gICAgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBmaW5kT3B0aW9ucyA9IDA7Ci0g
ICAgaWYgKG9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAg
ZmluZE9wdGlvbnMgfD0gTlNDYXNlSW5zZW5zaXRpdmVTZWFyY2g7Ci0gICAgaWYgKG9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gTlNCYWNr
d2FyZHNTZWFyY2g7Ci0gICAgcmV0dXJuIGZpbmRPcHRpb25zOwotfQotCi0tICh2b2lkKV9jb21w
dXRlTWF0Y2hlc0ZvclN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9w
dGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIGlm
ICghX3BkZkRvY3VtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9XS0ZpbmRPcHRpb25zIG9wdGlvbnNBZmZlY3RpbmdS
ZXN1bHRzID0gb3B0aW9ucyAmIH5fV0tGaW5kT3B0aW9uc0lycmVsZXZhbnRGb3JCYXRjaFJlc3Vs
dHM7Ci0KLSAgICAvLyBJZiB0aGlzIHNlYXJjaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBjdXJyZW50
bHkgY2FjaGVkIHNlYXJjaCwgYmFpbCBhbmQgY2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyLCBi
ZWNhdXNlIHRoZSBleGlzdGluZyBjYWNoZWQgcmVzdWx0cyBhcmUgdmFsaWQuCi0gICAgaWYgKCFf
Y2FjaGVkRmluZE1hdGNoZXMuaXNFbXB0eSgpICYmIFtfY2FjaGVkRmluZFN0cmluZyBpc0VxdWFs
VG9TdHJpbmc6c3RyaW5nXSAmJiBfY2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzID09
IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzICYmIF9jYWNoZWRGaW5kTWF4aW11bUNvdW50ID09IG1h
eENvdW50KSB7Ci0gICAgICAgIC8vIEFsc28sIGNhbmNlbCBhbnkgcnVubmluZyBzZWFyY2gsIGJl
Y2F1c2UgaXQgd2lsbCBldmVudHVhbGx5IHJlcGxhY2UgdGhlIG5vdy12YWxpZCByZXN1bHRzLgot
ICAgICAgICArK19uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRDsKLQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihZRVMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSWYg
dGhpcyBzZWFyY2ggaXMgZXF1aXZhbGVudCB0byB0aGUgY3VycmVudGx5IHJ1bm5pbmcgYXN5bmNo
cm9ub3VzIHNlYXJjaCwgYmFpbCBhcyBpZiB0aGlzIHNlYXJjaCB3ZXJlIGNhbmNlbGxlZDsgdGhl
IG9yaWdpbmFsIHNlYXJjaCdzIGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGV2ZW50dWFsbHkgZmly
ZS4KLSAgICBpZiAoW19uZXh0Q2FjaGVkRmluZFN0cmluZyBpc0VxdWFsVG9TdHJpbmc6c3RyaW5n
XSAmJiBfbmV4dENhY2hlZEZpbmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0cyA9PSBvcHRpb25zQWZm
ZWN0aW5nUmVzdWx0cyAmJiBfbmV4dENhY2hlZEZpbmRNYXhpbXVtQ291bnQgPT0gbWF4Q291bnQp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBmaW5kT3B0aW9ucyA9IHN0cmluZ0NvbXBh
cmVPcHRpb25zKG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzKTsKLQotICAgIFZlY3RvcjxQREZQYWdl
SW5mbz4gcGFnZXMgPSBfcGFnZXM7Ci0KLSAgICB1bnNpZ25lZCBjb21wdXRlTWF0Y2hlc09wZXJh
dGlvbklEID0gKytfbmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQ7Ci0gICAgX25leHRDYWNo
ZWRGaW5kU3RyaW5nID0gc3RyaW5nOwotICAgIF9uZXh0Q2FjaGVkRmluZE9wdGlvbnNBZmZlY3Rp
bmdSZXN1bHRzID0gb3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7Ci0gICAgX25leHRDYWNoZWRGaW5k
TWF4aW11bUNvdW50ID0gbWF4Q291bnQ7Ci0KLSAgICBSZXRhaW5QdHI8V0tMZWdhY3lQREZWaWV3
PiByZXRhaW5lZFNlbGYgPSBzZWxmOwotICAgIHR5cGVvZihjb21wbGV0aW9uSGFuZGxlcikgY29t
cGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0KLSAg
ICBkaXNwYXRjaF9hc3luYyhfZmluZFF1ZXVlLCBbcGFnZXMsIHN0cmluZywgZmluZE9wdGlvbnMs
IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzLCBtYXhDb3VudCwgY29tcHV0ZU1hdGNoZXNPcGVyYXRp
b25JRCwgcmV0YWluZWRTZWxmLCBjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKLSAgICAgICAgVmVj
dG9yPFJldGFpblB0cjxVSVBERlNlbGVjdGlvbj4+IG1hdGNoZXM7Ci0KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCBwYWdlcy5zaXplKCk7ICsrcGFnZUlu
ZGV4KSB7Ci0gICAgICAgICAgICBVSVBERlNlbGVjdGlvbiAqbWF0Y2ggPSBudWxscHRyOwotICAg
ICAgICAgICAgd2hpbGUgKChtYXRjaCA9IFtwYWdlc1twYWdlSW5kZXhdLnBhZ2UgZmluZFN0cmlu
ZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjptYXRjaCBvcHRpb25zOmZpbmRPcHRpb25zXSkpIHsKLSAg
ICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaCk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1hdGNoZXMuc2l6ZSgpID4gbWF4Q291bnQpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gbWF4
Q291bnRFeGNlZWRlZDsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGVucXVldWVkIGFu
b3RoZXIgc2VhcmNoLCBjYW5jZWwgdGhpcyBvbmUuCi0gICAgICAgICAgICAgICAgaWYgKHJldGFp
bmVkU2VsZi0+X25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEICE9IGNvbXB1dGVNYXRjaGVz
T3BlcmF0aW9uSUQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewotICAgICAgICAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KE5PKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICBtYXhDb3VudEV4Y2VlZGVk
OgotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbY29t
cHV0ZU1hdGNoZXNPcGVyYXRpb25JRCwgc3RyaW5nLCBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cywg
bWF4Q291bnQsIG1hdGNoZXMsIGNvbXBsZXRpb25IYW5kbGVyQ29weSwgcmV0YWluZWRTZWxmXSB7
Ci0KLSAgICAgICAgICAgIC8vIElmIGFub3RoZXIgc2VhcmNoIGhhcyBiZWVuIGVucXVldWVkIGlu
IHRoZSBtZWFudGltZSwgaWdub3JlIHRoaXMgcmVzdWx0LgotICAgICAgICAgICAgaWYgKHJldGFp
bmVkU2VsZi0+X25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEICE9IGNvbXB1dGVNYXRjaGVz
T3BlcmF0aW9uSUQpIHsKLSAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25I
YW5kbGVyQ29weSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9jYWNoZWRGaW5kU3RyaW5nID0gc3RyaW5nOwotICAg
ICAgICAgICAgcmV0YWluZWRTZWxmLT5fY2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRz
ID0gb3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7Ci0gICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9j
YWNoZWRGaW5kTWF4aW11bUNvdW50ID0gbWF4Q291bnQ7Ci0gICAgICAgICAgICByZXRhaW5lZFNl
bGYtPl9jYWNoZWRGaW5kTWF0Y2hlcyA9IG1hdGNoZXM7Ci0KLSAgICAgICAgICAgIHJldGFpbmVk
U2VsZi0+X25leHRDYWNoZWRGaW5kU3RyaW5nID0gbmlsOwotCi0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlckNvcHkoWUVTKTsKLSAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlv
bkhhbmRsZXJDb3B5KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpd2ViX2Nv
dW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAotewotICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLSAgICBbc2VsZiBf
Y29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3VudDpt
YXhDb3VudCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHBhZ2UtPmZpbmRDbGllbnQo
KS5kaWRDb3VudFN0cmluZ01hdGNoZXMocGFnZS5nZXQoKSwgc3RyaW5nLCBfY2FjaGVkRmluZE1h
dGNoZXMuc2l6ZSgpKTsKLSAgICB9XTsKLX0KLQotLSAodm9pZClfZGlkRmluZE1hdGNoOihVSVBE
RlNlbGVjdGlvbiAqKW1hdGNoCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlSW5mbyA6IF9wYWdlcykg
ewotICAgICAgICBpZiAocGFnZUluZm8ucGFnZSA9PSBtYXRjaC5wYWdlKSB7Ci0gICAgICAgICAg
ICBbc2VsZiBfZW5zdXJlVmlld0ZvclBhZ2U6cGFnZUluZm9dOwotCi0gICAgICAgICAgICBbcGFn
ZUluZm8udmlldyBoaWdobGlnaHRTZWFyY2hTZWxlY3Rpb246bWF0Y2ggYW5pbWF0ZWQ6Tk9dOwot
Ci0gICAgICAgICAgICBfY3VycmVudEZpbmRQYWdlSW5kZXggPSBwYWdlSW5mby5pbmRleDsKLSAg
ICAgICAgICAgIF9jdXJyZW50RmluZFNlbGVjdGlvbiA9IG1hdGNoOwotCi0gICAgICAgICAgICBD
R1JlY3Qgem9vbVJlY3QgPSBbcGFnZUluZm8udmlldyBjb252ZXJ0UmVjdEZyb21QREZQYWdlU3Bh
Y2U6bWF0Y2guYm91bmRzXTsKLSAgICAgICAgICAgIGlmIChDR1JlY3RJc051bGwoem9vbVJlY3Qp
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgW3NlbGYgem9vbTpwYWdl
SW5mby52aWV3LmdldCgpIHRvOnpvb21SZWN0IGF0UG9pbnQ6Q0dQb2ludFplcm8ga2luZDprVUlQ
REZPYmplY3RLaW5kVGV4dF07Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotLSAodm9pZCl3ZWJfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9u
czooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAot
ewotICAgIGlmIChfY3VycmVudEZpbmRTZWxlY3Rpb24pCi0gICAgICAgIFtfcGFnZXNbX2N1cnJl
bnRGaW5kUGFnZUluZGV4XS52aWV3IGNsZWFyU2VhcmNoSGlnaGxpZ2h0c107Ci0KLSAgICBSZXRh
aW5QdHI8VUlQREZTZWxlY3Rpb24+IHByZXZpb3VzRmluZFNlbGVjdGlvbiA9IF9jdXJyZW50Rmlu
ZFNlbGVjdGlvbjsKLSAgICB1bnNpZ25lZCBwcmV2aW91c0ZpbmRQYWdlSW5kZXggPSAwOwotICAg
IGlmIChwcmV2aW91c0ZpbmRTZWxlY3Rpb24pIHsKLSAgICAgICAgcHJldmlvdXNGaW5kUGFnZUlu
ZGV4ID0gX2N1cnJlbnRGaW5kUGFnZUluZGV4OwotICAgICAgICBpZiAoIVtfY2FjaGVkRmluZFN0
cmluZyBpc0VxdWFsVG9TdHJpbmc6c3RyaW5nXSkgewotICAgICAgICAgICAgTlNVSW50ZWdlciBs
b2NhdGlvbiA9IFtfY3VycmVudEZpbmRTZWxlY3Rpb24gc3RhcnRJbmRleF07Ci0gICAgICAgICAg
ICBpZiAobG9jYXRpb24pCi0gICAgICAgICAgICAgICAgcHJldmlvdXNGaW5kU2VsZWN0aW9uID0g
YWRvcHROUyhbW1VJUERGU2VsZWN0aW9uIGFsbG9jXSBpbml0V2l0aFBhZ2U6W19jdXJyZW50Rmlu
ZFNlbGVjdGlvbiBwYWdlXSBmcm9tSW5kZXg6bG9jYXRpb24gLSAxIHRvSW5kZXg6bG9jYXRpb25d
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmluZE9w
dGlvbnMgPSBzdHJpbmdDb21wYXJlT3B0aW9ucyhvcHRpb25zKTsKLSAgICBib29sIGJhY2t3YXJk
cyA9IChvcHRpb25zICYgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMpOwotICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLQotICAgIFtzZWxmIF9j
b21wdXRlTWF0Y2hlc0ZvclN0cmluZzpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENvdW50Om1h
eENvdW50IGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAgIGlmICgh
c3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB1bnNpZ25lZCBwYWdlSW5k
ZXggPSBwcmV2aW91c0ZpbmRQYWdlSW5kZXg7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBfcGFnZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFVJUERGU2VsZWN0aW9uICpt
YXRjaCA9IFtfcGFnZXNbcGFnZUluZGV4XS5wYWdlIGZpbmRTdHJpbmc6c3RyaW5nIGZyb21TZWxl
Y3Rpb246KHBhZ2VJbmRleCA9PSBwcmV2aW91c0ZpbmRQYWdlSW5kZXggPyBwcmV2aW91c0ZpbmRT
ZWxlY3Rpb24uZ2V0KCkgOiBuaWwpIG9wdGlvbnM6ZmluZE9wdGlvbnNdOwotCi0gICAgICAgICAg
ICBpZiAoIW1hdGNoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYWdlSW5kZXggJiYgYmFja3dh
cmRzKQotICAgICAgICAgICAgICAgICAgICBwYWdlSW5kZXggPSBfcGFnZXMuc2l6ZSgpIC0gMTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChwYWdlSW5kZXggPT0gX3BhZ2VzLnNpemUoKSAtIDEg
JiYgIWJhY2t3YXJkcykKLSAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4ID0gMDsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleCArPSBiYWNrd2Fy
ZHMgPyAtMSA6IDE7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIFtzZWxmIF9kaWRGaW5kTWF0Y2g6bWF0Y2hdOwotCi0gICAgICAgICAgICBp
ZiAoX2NhY2hlZEZpbmRNYXRjaGVzLnNpemUoKSA8PSBtYXhDb3VudCkgewotICAgICAgICAgICAg
ICAgIF9jdXJyZW50RmluZE1hdGNoSW5kZXggPSAwOwotICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYga25vd25NYXRjaCA6IF9jYWNoZWRGaW5kTWF0Y2hlcykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAobWF0Y2guc3RyaW5nUmFuZ2UubG9jYXRpb24gPT0gW2tub3duTWF0Y2ggc3Ry
aW5nUmFuZ2VdLmxvY2F0aW9uICYmIG1hdGNoLnN0cmluZ1JhbmdlLmxlbmd0aCA9PSBba25vd25N
YXRjaCBzdHJpbmdSYW5nZV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWdl
LT5maW5kQ2xpZW50KCkuZGlkRmluZFN0cmluZyhwYWdlLmdldCgpLCBzdHJpbmcsIHsgfSwgX2Nh
Y2hlZEZpbmRNYXRjaGVzLnNpemUoKSwgX2N1cnJlbnRGaW5kTWF0Y2hJbmRleCwgZmFsc2UpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgX2N1cnJlbnRGaW5kTWF0Y2hJbmRleCsrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBwYWdlLT5maW5kQ2xpZW50KCkuZGlkRmFpbFRvRmluZFN0cmluZyhw
YWdlLmdldCgpLCBzdHJpbmcpOwotICAgIH1dOwotfQotCi0tICh2b2lkKXdlYl9oaWRlRmluZFVJ
Ci17Ci0gICAgaWYgKF9jdXJyZW50RmluZFNlbGVjdGlvbikKLSAgICAgICAgW19wYWdlc1tfY3Vy
cmVudEZpbmRQYWdlSW5kZXhdLnZpZXcgY2xlYXJTZWFyY2hIaWdobGlnaHRzXTsKLQotICAgIF9j
dXJyZW50RmluZFNlbGVjdGlvbiA9IG51bGxwdHI7Ci0gICAgX2NhY2hlZEZpbmRTdHJpbmcgPSBu
dWxscHRyOwotICAgIF9jYWNoZWRGaW5kTWF0Y2hlcy5jbGVhcigpOwotfQotCi0jcHJhZ21hIG1h
cmsgVUlQREZQYWdlVmlld0RlbGVnYXRlCi0KLS0gKHZvaWQpem9vbTooVUlQREZQYWdlVmlldyAq
KXBhZ2VWaWV3IHRvOihDR1JlY3QpdGFyZ2V0UmVjdCBhdFBvaW50OihDR1BvaW50KW9yaWdpbiBr
aW5kOihVSVBERk9iamVjdEtpbmQpa2luZAotewotICAgIF9pc1N0YXJ0aW5nWm9vbSA9IFlFUzsK
LQotICAgIEJPT0wgaXNJbWFnZSA9IGtpbmQgPT0ga1VJUERGT2JqZWN0S2luZEdyYXBoaWM7Ci0K
LSAgICBpZiAoIWlzSW1hZ2UpCi0gICAgICAgIHRhcmdldFJlY3QgPSBDR1JlY3RJbnNldCh0YXJn
ZXRSZWN0LCBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyAqIHRhcmdldFJlY3Quc2l6
ZS53aWR0aCwgc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0YXJnZXRSZWN0LnNp
emUuaGVpZ2h0KTsKLQotICAgIENHUmVjdCByZWN0SW5Eb2N1bWVudENvb3JkaW5hdGVzID0gW3Bh
Z2VWaWV3IGNvbnZlcnRSZWN0OnRhcmdldFJlY3QgdG9WaWV3OnNlbGZdOwotICAgIENHUG9pbnQg
b3JpZ2luSW5Eb2N1bWVudENvb3JkaW5hdGVzID0gW3BhZ2VWaWV3IGNvbnZlcnRQb2ludDpvcmln
aW4gdG9WaWV3OnNlbGZdOwotCi0gICAgW193ZWJWaWV3IF96b29tVG9SZWN0OnJlY3RJbkRvY3Vt
ZW50Q29vcmRpbmF0ZXMgd2l0aE9yaWdpbjpvcmlnaW5JbkRvY3VtZW50Q29vcmRpbmF0ZXMgZml0
RW50aXJlUmVjdDppc0ltYWdlIG1pbmltdW1TY2FsZTpwZGZNaW5pbXVtWm9vbVNjYWxlIG1heGlt
dW1TY2FsZTpwZGZNYXhpbXVtWm9vbVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKLQot
ICAgIF9pc1N0YXJ0aW5nWm9vbSA9IE5POwotfQotCi0tICh2b2lkKXJlc2V0Wm9vbTooVUlQREZQ
YWdlVmlldyAqKXBhZ2VWaWV3Ci17Ci0gICAgW3NlbGYgX3Jlc2V0Wm9vbUFuaW1hdGVkOllFU107
Ci19Ci0KLSNwcmFnbWEgbWFyayBVSVBERkFubm90YXRpb25Db250cm9sbGVyRGVsZWdhdGUKLQot
LSAodm9pZClhbm5vdGF0aW9uOihVSVBERkFubm90YXRpb24gKilhbm5vdGF0aW9uIHdhc1RvdWNo
ZWRBdFBvaW50OihDR1BvaW50KXBvaW50IGNvbnRyb2xsZXI6KFVJUERGQW5ub3RhdGlvbkNvbnRy
b2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgaWYgKCFbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNz
OltVSVBERkxpbmtBbm5vdGF0aW9uIGNsYXNzXV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFVJ
UERGTGlua0Fubm90YXRpb24gKmxpbmtBbm5vdGF0aW9uID0gKFVJUERGTGlua0Fubm90YXRpb24g
Kilhbm5vdGF0aW9uOwotICAgIFJldGFpblB0cjxOU1VSTD4gdXJsID0gW3NlbGYgX1VSTEZvckxp
bmtBbm5vdGF0aW9uOmxpbmtBbm5vdGF0aW9uXTsKLSAgICBpZiAoIXVybCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ0dQb2ludCBkb2N1bWVudFBvaW50ID0gW2NvbnRyb2xsZXIucGFnZVZpZXcg
Y29udmVydFBvaW50OnBvaW50IHRvVmlldzpzZWxmXTsKLSAgICBDR1BvaW50IHNjcmVlblBvaW50
ID0gW3NlbGYud2luZG93IGNvbnZlcnRQb2ludDpbc2VsZiBjb252ZXJ0UG9pbnQ6ZG9jdW1lbnRQ
b2ludCB0b1ZpZXc6bmlsXSB0b1dpbmRvdzpuaWxdOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHJldGFpbmVkV2ViVmlldyA9IF93ZWJWaWV3OwotCi0gICAgW3NlbGYgX2hpZ2hsaWdodExpbmtB
bm5vdGF0aW9uOmxpbmtBbm5vdGF0aW9uIGZvckR1cmF0aW9uOi4yIGNvbXBsZXRpb25IYW5kbGVy
Ol57Ci0gICAgICAgIHJldGFpbmVkV2ViVmlldy0+X3BhZ2UtPm5hdmlnYXRlVG9QREZMaW5rV2l0
aFNpbXVsYXRlZENsaWNrKFt1cmwgYWJzb2x1dGVTdHJpbmddLCBXZWJDb3JlOjpyb3VuZGVkSW50
UG9pbnQoZG9jdW1lbnRQb2ludCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChzY3JlZW5Qb2lu
dCkpOwotICAgIH1dOwotfQotCi0tICh2b2lkKWFubm90YXRpb246KFVJUERGQW5ub3RhdGlvbiAq
KWFubm90YXRpb24gaXNCZWluZ1ByZXNzZWRBdFBvaW50OihDR1BvaW50KXBvaW50IGNvbnRyb2xs
ZXI6KFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgaWYgKCFb
YW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOltVSVBERkxpbmtBbm5vdGF0aW9uIGNsYXNzXV0pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFVJUERGTGlua0Fubm90YXRpb24gKmxpbmtBbm5vdGF0aW9u
ID0gKFVJUERGTGlua0Fubm90YXRpb24gKilhbm5vdGF0aW9uOwotICAgIE5TVVJMICp1cmwgPSBb
c2VsZiBfVVJMRm9yTGlua0Fubm90YXRpb246bGlua0Fubm90YXRpb25dOwotICAgIGlmICghdXJs
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBv
aW50ID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZl
cnRQb2ludDpwb2ludCB0b1ZpZXc6c2VsZl0pOwotCi0gICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24u
dXJsID0gdXJsOwotICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyA9IFdlYkNvcmU6OnJv
dW5kZWRJbnRSZWN0KFtzZWxmIGNvbnZlcnRSZWN0Oltjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZl
cnRSZWN0RnJvbVBERlBhZ2VTcGFjZTphbm5vdGF0aW9uLlJlY3RdIGZyb21WaWV3OmNvbnRyb2xs
ZXIucGFnZVZpZXddKTsKLQotICAgIFtzZWxmIF9oaWdobGlnaHRMaW5rQW5ub3RhdGlvbjpsaW5r
QW5ub3RhdGlvbiBmb3JEdXJhdGlvbjouNzUgY29tcGxldGlvbkhhbmRsZXI6XnsKLSAgICAgICAg
W19hY3Rpb25TaGVldEFzc2lzdGFudCBzaG93TGlua1NoZWV0XTsKLSAgICB9XTsKLX0KLQotI3By
YWdtYSBtYXJrIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZQotCi0tIChPcHRpb25hbDxX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uPilwb3NpdGlvbkluZm9ybWF0
aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQKLXsKLSAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb247Ci19Ci0KLS0gKHZvaWQp
YWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQg
cGVyZm9ybUFjdGlvbjooV2ViS2l0OjpTaGVldEFjdGlvbilhY3Rpb24KLXsKLSAgICBpZiAoYWN0
aW9uICE9IFdlYktpdDo6U2hlZXRBY3Rpb246OkNvcHkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IE5TRGljdGlvbmFyeSAqcmVwcmVzZW50YXRpb25zID0gQHsKLSAgICAgICAgKE5TU3RyaW5nICop
a1VUVHlwZVVURjhQbGFpblRleHQgOiAoTlNTdHJpbmcgKilfcG9zaXRpb25JbmZvcm1hdGlvbi51
cmwsCi0gICAgICAgIChOU1N0cmluZyAqKWtVVFR5cGVVUkwgOiAoTlNVUkwgKilfcG9zaXRpb25J
bmZvcm1hdGlvbi51cmwKLSAgICB9OwotCi0gICAgW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVi
b2FyZF0uaXRlbXMgPSBAWyByZXByZXNlbnRhdGlvbnMgXTsKLX0KLQotLSAodm9pZClhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBvcGVuRWxl
bWVudEF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KLXsKLSAgICBDR1BvaW50IHNjcmVlblBv
aW50ID0gW3NlbGYud2luZG93IGNvbnZlcnRQb2ludDpbc2VsZiBjb252ZXJ0UG9pbnQ6bG9jYXRp
b24gdG9WaWV3Om5pbF0gdG9XaW5kb3c6bmlsXTsKLSAgICBfd2ViVmlldy0+X3BhZ2UtPm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybCwg
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KHNjcmVlblBvaW50KSk7Ci19Ci0KLS0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdL
QWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVSTDooTlNV
UkwgKil1cmwgcmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdAotewotICAgIF93ZWJTZWxlY3Rpb25B
c3Npc3RhbnQgPSBhZG9wdE5TKFtbVUlXS1NlbGVjdGlvbkFzc2lzdGFudCBhbGxvY10gaW5pdFdp
dGhWaWV3OnNlbGZdKTsKLSAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVl
dEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsK
LSAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwotfQotCi0jaWYgSEFWRShBUFBfTElO
S1MpCi0tIChCT09MKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICopYXNzaXN0YW50IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudAotewotICAgIHJldHVybiBfd2ViVmlldy0+X3Bh
Z2UtPnVpQ2xpZW50KCkuc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudChlbGVt
ZW50KTsKLX0KLSNlbmRpZgotCi0tIChSZXRhaW5QdHI8TlNBcnJheT4pYWN0aW9uU2hlZXRBc3Np
c3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgZGVjaWRlQWN0aW9uc0Zv
ckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9u
czooUmV0YWluUHRyPE5TQXJyYXk+KWRlZmF1bHRBY3Rpb25zCi17Ci0gICAgcmV0dXJuIF93ZWJW
aWV3LT5fcGFnZS0+dWlDbGllbnQoKS5hY3Rpb25zRm9yRWxlbWVudChlbGVtZW50LCBXVEZNb3Zl
KGRlZmF1bHRBY3Rpb25zKSk7Ci19Ci0KLSNwcmFnbWEgbWFyayBQYXNzd29yZCBwcm90ZWN0aW9u
IFVJCi0KLS0gKHZvaWQpX3Nob3dQYXNzd29yZEVudHJ5RmllbGQKLXsKLSAgICBbX3dlYlZpZXcg
X3Nob3dQYXNzd29yZFZpZXdXaXRoRG9jdW1lbnROYW1lOl9zdWdnZXN0ZWRGaWxlbmFtZS5nZXQo
KSBwYXNzd29yZEhhbmRsZXI6W3JldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgd2ViVmll
dyA9IHJldGFpblB0cihfd2ViVmlldyldKE5TU3RyaW5nICpwYXNzd29yZCkgewotICAgICAgICBp
ZiAoIUNHUERGRG9jdW1lbnRVbmxvY2tXaXRoUGFzc3dvcmQocmV0YWluZWRTZWxmLT5fY2dQREZE
b2N1bWVudC5nZXQoKSwgcGFzc3dvcmQuVVRGOFN0cmluZykpIHsKLSAgICAgICAgICAgIFtbd2Vi
VmlldyBfcGFzc3dvcmRWaWV3XSBzaG93UGFzc3dvcmRGYWlsdXJlQWxlcnRdOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgW3dlYlZpZXcgX2hpZGVQYXNzd29yZFZp
ZXddOwotICAgICAgICBbcmV0YWluZWRTZWxmIF9kaWRMb2FkUERGRG9jdW1lbnRdOwotICAgIH1d
OwotfQotCi0tIChCT09MKXdlYl9pc0JhY2tncm91bmQKLXsKLSAgICByZXR1cm4gW3NlbGYgaXNC
YWNrZ3JvdW5kXTsKLX0KLQotLSAodm9pZClfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
Ci17Ci0gICAgW3N1cGVyIF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdOwotICAgIC8v
IEZJWE1FOiBJcyBpdCByZWFsbHkgbmVjZXNzYXJ5IHRvIGhpZGUgdGhlIHdlYiBjb250ZW50IGRy
YXdpbmcgYXJlYSB3aGVuIGEgUERGIGlzIGRpc3BsYXllZD8KLSAgICBpZiAoYXV0byBkcmF3aW5n
QXJlYSA9IF93ZWJWaWV3LT5fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgZHJhd2luZ0Fy
ZWEtPmhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKTsKLX0KLQotQGVuZAotCi0jcHJhZ21hIG1h
cmsgUHJpbnRpbmcKLQotI2lmICFQTEFURk9STShJT1NNQUMpCi0KLUBpbnRlcmZhY2UgV0tMZWdh
Y3lQREZWaWV3IChfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIpIDxfV0tXZWJWaWV3UHJpbnRQcm92
aWRlcj4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLTGVnYWN5UERGVmlldyAoX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVyKQotCi0tIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZv
cm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXIKLXsKLSAg
ICBDR1BERkRvY3VtZW50UmVmIGRvY3VtZW50ID0gX2NnUERGRG9jdW1lbnQuZ2V0KCk7Ci0gICAg
aWYgKCFDR1BERkRvY3VtZW50QWxsb3dzUHJpbnRpbmcoZG9jdW1lbnQpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIHNpemVfdCBudW1iZXJPZlBhZ2VzID0gQ0dQREZEb2N1bWVudEdldE51bWJl
ck9mUGFnZXMoZG9jdW1lbnQpOwotICAgIGlmIChwcmludEZvcm1hdHRlci5zbmFwc2hvdEZpcnN0
UGFnZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluPE5TVUludGVnZXI+KG51bWJlck9mUGFnZXMs
IDEpOwotCi0gICAgcmV0dXJuIG51bWJlck9mUGFnZXM7Ci19Ci0KLS0gKENHUERGRG9jdW1lbnRS
ZWYpX3drX3ByaW50ZWREb2N1bWVudAotewotICAgIHJldHVybiBfY2dQREZEb2N1bWVudC5nZXQo
KTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU01BQykKLQotQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSNlbmRpZiAvLyBFTkFCTEUoV0tMRUdBQ1lQREZW
SUVXKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzBmMTJjNTZhMjIwMzYyNzVjZDgxYWFiMjMzNmY3NWI1NDFmZDYyZS4uZWUzYjM3M2Fh
NmM2ZWI2OGQxYmVlNjkzNDk3YjNlOTQzMWZmNWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTgsNyArNjE4LDYgQEAKIAkJMkQ2
QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QUI1M0YxOTJCMUM0
QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oICovOyB9OwogCQkyRDZCMzcx
QjE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8q
IF9XS1RodW1ibmFpbFZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyRDZCRjEyNDIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkJG
MTIyMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oICovOyB9OwotCQkyRDZD
RDExQjE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMUExODkwNThBNTAwRTVB
NEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmNwcCAqLzsgfTsKIAkJMkQ2Q0QxMTkxODkwNThBNTAw
RTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBz
aG90U3RvcmUuaCAqLzsgfTsKIAkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFCMTZBREIxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tICovOyB9OwogCQkyRDczMDM3OTFBN0MyQjc1MDBGOEY0ODcgLyogV0tQYWdl
TmF2aWdhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ3MzAzNzgxQTdDMkI3NTAwRjhGNDg3IC8qIFdLUGFnZU5hdmlnYXRpb25DbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NzA0LDcgKzcwMyw2IEBACiAJCTJEOUVBMzBGMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEOUVBMzBFMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCAqLzsgfTsKIAkJMkRBMDQ5QjQxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5o
ICovOyB9OwogCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVt
b3RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEw
NDlCNjE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi87IH07Ci0J
CTJEQTFFNEZFMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTFFNEZDMThDMDJCNkEwMERC
QzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCAqLzsgfTsKIAkJMkRBNjczMUEyMEM3NTRCMTAwM0NC
NDAxIC8qIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTY3MzE5MjBDNzU0QjEwMDNDQjQwMSAvKiBEeW5h
bWljVmlld3BvcnRTaXplVXBkYXRlLmggKi87IH07CiAJCTJEQTk0NEEwMTg4NEU0RjAwMEVEODZE
QiAvKiBXZWJJT1NFdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEQTk0NDk5MTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZh
Y3RvcnkuaCAqLzsgfTsKIAkJMkRBOTQ0QTQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovOyB9OwpAQCAtMTU3Miw3ICsx
NTcwLDYgQEAKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLmggKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTEx
Q0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CiAJCUNFMUEwQkQyMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07Ci0JCUNFMUEwQkQzMUE0OEU2QzYwMDU0RUY3NCAv
KiBDb3JlUERGU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovOyB9OwogCQlD
RTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkNGMUE0OEU2
QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oICovOyB9OwogCQlDRTFBMEJE
NjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmgg
Ki87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQxMUE0OEU2
QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKQEAgLTI0NjgsNyArMjQ2NSw2IEBA
CiAJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZFBhcmFtZXRlcnNDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxMjVDNUMxODU3RUEwNTAwM0JB
M0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2Q0QxMTgx
ODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmVNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMTJEQUI0MjA2NjJDNzMwMDZGMDBGQiAvKiBXS0Fu
aW1hdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQW5p
bWF0aW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxQjVENUEx
ODU4NjU5OTAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEMUI1RDVCMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTI1NDQsNiArMjU0MCw3
IEBACiAJCTJENkJGMTIxMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBlbmNpbEtpdFNvZnRMaW5r
Lm1tOyBwYXRoID0gaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVuY2lsS2l0U29mdExpbmsuaDsg
cGF0aCA9IGlvcy9QZW5jaWxLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2Q0QxMTgxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdT
bmFwc2hvdFN0b3JlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVmlld1NuYXBzaG90U3RvcmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJENkNEMTFBMTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3U25hcHNob3RTdG9yZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzMwMzc4MUE3QzJCNzUwMEY4RjQ4NyAvKiBX
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUGFnZU5hdmlnYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQ3OTBBOUMxQUQ3MDUwRDAwQUI5MEIzIC8qIF9XS0xheW91dE1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLTGF5b3V0TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjczMyw4ICsyNzMwLDYgQEAKIAkJMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlF
IC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRBMDQ5QjUxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1v
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREEwNDlCNjE4MENDRDBBMDBB
QUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkyREExRTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTGVnYWN5UERGVmlldy5oOyBwYXRoID0g
aW9zL1dLTGVnYWN5UERGVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREEx
RTRGRDE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tMZWdhY3lQREZWaWV3Lm1tOyBwYXRoID0gaW9z
L1dLTGVnYWN5UERGVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBNjcz
MTkyMEM3NTRCMTAwM0NCNDAxIC8qIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oOyBw
YXRoID0gaW9zL0R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRBN0ZEQ0IxOEY4ODYyNTAwOERERUQwIC8qIEZpbmRJbmRpY2F0b3JPdmVy
bGF5Q2xpZW50SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50
SU9TLmg7IHBhdGggPSBpb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OTcxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2
ZVdlYktleWJvYXJkRXZlbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tOyBwYXRoID0gaW9zL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDAz
LDcgKzQzOTgsNiBAQAogCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2RlU2lnbmluZy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1
IC8qIENvZGVTaWduaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVT
aWduaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUEwQkNDMUE0OEU2QzYw
MDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlUERGU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFMUEwQkNGMUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJh
dGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYW5hZ2VkQ29uZmln
dXJhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhF
NkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRDQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2
MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTg1Niw4
ICs1ODUwLDYgQEAKIAkJCQlBNTQyOTNBMzE5NUE0M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0gKi8sCiAJCQkJMkRENUUxMjcyMTBBREM3QTAw
REI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oICovLAogCQkJCTJERDVFMTI2
MjEwQURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gKi8sCi0J
CQkJMkRBMUU0RkMxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5oICovLAotCQkJ
CTJEQTFFNEZEMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcubW0gKi8sCiAJCQkJ
QTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggKi8sCiAJCQkJQTE1
RUVERTMxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3Lm1tICovLAogCQkJCTJENkFC
NTNGMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCAqLywKQEAg
LTc0NjQsOCArNzQ1Niw4IEBACiAJCQkJQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovLAogCQkJCUM5QzE4MzM3MUI3M0ZENkEwMDcwMzZB
NyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwICovLAogCQkJCUM5QzE4
MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQu
aCAqLywKKwkJCQkyRDNFRjQ0MDE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcCAqLywKIAkJCQkyRDNFRjQ0MTE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmggKi8sCi0JCQkJMkQzRUY0NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdl
Yk1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSAqLywKIAkJCQk3Q0NDQzhGODFBNUY1MEZEMDA4RkIw
REEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmNwcCAqLywKIAkJCQk3Q0NDQzhGOTFBNUY1MEZEMDA4
RkIwREEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmggKi8sCiAJCQkJQkMxREZFQTMxMkIzMUY4NzAw
NURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovLApAQCAtODY4
OCw3ICs4NjgwLDYgQEAKIAkJCQkyREI3NjY3MDIxQjVFNDhBMDA0NUREQjEgLyogQWNjZXNzaWJp
bGl0eVN1cHBvcnRTUEkuaCAqLywKIAkJCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNz
ZXJ0aW9uU2VydmljZXNTUEkuaCAqLywKIAkJCQlDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyog
QmFja0JvYXJkU2VydmljZXNTUEkuaCAqLywKLQkJCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQg
LyogQ29yZVBERlNQSS5oICovLAogCQkJCTJENEFGMDg4MjA0NEMzQzQwMDZDODgxNyAvKiBGcm9u
dEJvYXJkU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyog
TWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLywKIAkJCQlBMTNCM0RBMTIwN0YzOURFMDA5MEM1
OEQgLyogTW9iaWxlV2lGaVNQSS5oICovLApAQCAtOTAzMSw3ICs5MDIyLDYgQEAKIAkJCQkzN0M0
RTlGNjEzMUM2RTdFMDAyOUJENUEgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAz
MkRBQjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUNFMUEwQkQzMUE0OEU2QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzN0MyMUNBRTFFOTk0QzBDMDAyOUQ1RjkgLyogQ29yZVByZWRp
Y3Rpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAv
KiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRkI2ODI3MUY2RTUxQzEw
MEM0M0Y5RiAvKiBDcmFzaFJlcG9ydGVyQ2xpZW50U1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTk3
NzEsNyArOTc2MSw2IEBACiAJCQkJMkRENUUxMjkyMTBBREM3QjAwREI2MDEyIC8qIFdLS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBOUUxMEIxMzE1Q0Qx
ODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ3OTBBOUYxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9kZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUM1Q0VDMzAyMjA5MTFDNzAwRDZCQkIwIC8qIFdLTWFpbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUNENDM5RDFCNEIwMjRGMDAy
MzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361853</attachid>
            <date>2019-02-12 15:28:34 -0800</date>
            <delta_ts>2019-02-12 15:52:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194559-20190212152833.patch</filename>
            <type>text/plain</type>
            <size>57277</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgyM2FiMDZhOWZhY2FhZDBjN2IyMWEx
ZjRmZmQ2ZmEzMDhkM2NhMjkuLjM3YTZiZWM1NGVlOThkYjMyMzg1YWVmYzk0NThmY2YzZGEzYmEz
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdLTGVnYWN5UERGVmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTU5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmVhdHVy
ZURlZmluZXMuaDoKKwogMjAxOS0wMi0xMSAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDEyMjkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDQyNTMzZTM1ZmM2MWVkOWYyNmY3ZTg2NDgxMTJiMDNiMWNiZTg4YTcuLjRmYzk1NjliYjQ2
YmQ5YWVlYzJmNGNkZTI5Mjk2MDg1YmMzNmM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTktMDItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIFdLTGVnYWN5UERGVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW06IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDItMTEgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgQXV0b21hdGlv
bjogY2xpZW50IGNhbGxiYWNrcyBhcmUgbm90IGNhbGxlZCBpZiBkZWxlZ2F0ZSBkb2VzIG5vdCBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggN2JiZjk3MDk5YjBiNWViNjVkNGNk
ODk4YWM2YmFlNzEyZTU5MWE4OS4uY2Y5MmM1YjEyNDdiOGE1ZmE2M2YyOTgxZDkzZjI3OGExYzky
YjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0xNjUsMTIgKzE2NSw2IEBAIHRoZSBw
dWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzkxNjc+LiAqLwogI2Rl
ZmluZSBFTkFCTEVfRE9XTkxPQURfQVRUUklCVVRFIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
RU5BQkxFX1dLTEVHQUNZUERGVklFVykKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShJT1NNQUMp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTIwMDAwCi0jZGVmaW5lIEVO
QUJMRV9XS0xFR0FDWVBERlZJRVcgMQotI2VuZGlmCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVO
QUJMRV9XS1BERlZJRVcpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKSAmJiAhUExBVEZPUk0oSU9TTUFDKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICNkZWZpbmUgRU5BQkxFX1dL
UERGVklFVyAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvQ29y
ZVBERlNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY1ZDY2M2M1NTRiOGY3YTY1M2JiNTcwYzgy
ODY4ZDNhZTdhYTkzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvQ29yZVBERlNQSS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFdLTEVHQUNZ
UERGVklFVykgfHwgRU5BQkxFKFdLUERGVklFVykKLQotI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljcy5oPgotI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KLQotI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCi0KLSNpbXBvcnQgPENvcmVQREYvVUlQREZBbm5vdGF0aW9uQ29udHJvbGxl
ci5oPgotI2ltcG9ydCA8Q29yZVBERi9VSVBERkRvY3VtZW50Lmg+Ci0jaW1wb3J0IDxDb3JlUERG
L1VJUERGTGlua0Fubm90YXRpb24uaD4KLSNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlLmg+Ci0j
aW1wb3J0IDxDb3JlUERGL1VJUERGUGFnZVZpZXcuaD4KLSNpbXBvcnQgPENvcmVQREYvVUlQREZT
ZWxlY3Rpb24uaD4KLQotI2Vsc2UKLQotQGNsYXNzIFVJUERGU2VsZWN0aW9uOwotCi1AaW50ZXJm
YWNlIFVJUERGUGFnZSA6IE5TT2JqZWN0Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZQYWdlICgp
Ci0tIChDR1JlY3QpY3JvcEJveEFjY291bnRGb3JSb3RhdGlvbjsKLS0gKFVJUERGU2VsZWN0aW9u
ICopZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZnJvbVNlbGVjdGlvbjooVUlQREZTZWxl
Y3Rpb24gKilzZWxlY3Rpb24gb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylvcHRpb25z
OwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgOiBOU09iamVjdAotQGVuZAotCi1A
aW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgKCkKLS0gKFVJUERGUGFnZSAqKXBhZ2VBdEluZGV4OihO
U1VJbnRlZ2VyKWluZGV4OwotLSAoaWQpaW5pdFdpdGhDR1BERkRvY3VtZW50OihDR1BERkRvY3Vt
ZW50UmVmKWRvY3VtZW50OwotQHByb3BlcnR5IChhc3NpZ24sIHJlYWRvbmx5KSBOU1VJbnRlZ2Vy
IG51bWJlck9mUGFnZXM7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBDR1BERkRvY3VtZW50UmVmIENH
RG9jdW1lbnQ7Ci1AZW5kCi0KLXR5cGVkZWYgZW51bSB7Ci0gICAga1VJUERGT2JqZWN0S2luZEdy
YXBoaWMgPSAxLAotICAgIGtVSVBERk9iamVjdEtpbmRUZXh0ID0gMgotfSBVSVBERk9iamVjdEtp
bmQ7Ci0KLUBjbGFzcyBVSVBERlBhZ2VWaWV3OwotQHByb3RvY29sIFVJUERGQW5ub3RhdGlvbkNv
bnRyb2xsZXJEZWxlZ2F0ZTsKLQotQGludGVyZmFjZSBVSVBERkFubm90YXRpb25Db250cm9sbGVy
IDogTlNPYmplY3Q8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPgotQGVuZAotCi1AaW50ZXJm
YWNlIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIgKCkKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgVUlQREZQYWdlVmlldyAqcGFnZVZpZXc7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBpZDxOU09iamVjdCwgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRlPiBk
ZWxlZ2F0ZTsKLUBlbmQKLQotQHByb3RvY29sIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZTsKLQotQGlu
dGVyZmFjZSBVSVBERlBhZ2VWaWV3IDogVUlWaWV3Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZQ
YWdlVmlldyAoKQotLSAoaWQpaW5pdFdpdGhQYWdlOihVSVBERlBhZ2UgKikgcGFnZSB0aWxlZENv
bnRlbnQ6KEJPT0wpdGlsZWQ7Ci0tIChDR1JlY3QpY29udmVydFJlY3RGcm9tUERGUGFnZVNwYWNl
OihDR1JlY3QpcDsKLS0gKHZvaWQpaGlnaGxpZ2h0U2VhcmNoU2VsZWN0aW9uOihVSVBERlNlbGVj
dGlvbiAqKXNlbGVjdGlvbiBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKLS0gKHZvaWQpY2xlYXJT
ZWFyY2hIaWdobGlnaHRzOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCB1c2VC
YWNraW5nTGF5ZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZDxOU09iamVjdCwg
VUlQREZQYWdlVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQ0FMYXllciAqY29udGVudExheWVyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBVSVBERkFubm90YXRpb25Db250cm9sbGVyICphbm5vdGF0aW9uQ29udHJvbGxlcjsK
LUBlbmQKLQotQHByb3RvY29sIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZQotQG9wdGlvbmFsCi0tIChC
T09MKXNlbGVjdGlvbldpbGxUcmFjazooVUlQREZQYWdlVmlldyopcGFnZVZpZXc7Ci0tIChCT09M
KXNob3VsZFJlY29nbml6ZVRhcEluOihVSVBERlBhZ2VWaWV3ICopcGFnZVZpZXcgYXRQb2ludDoo
Q0dQb2ludClwb2ludDsKLS0gKENsYXNzKWNsYXNzRm9yQW5ub3RhdGlvblR5cGU6KGNvbnN0IGNo
YXIgKil0eXBlOwotLSAodm9pZClkaWRUYXA6KFVJUERGUGFnZVZpZXcgKilwYWdlVmlldyBhdFBv
aW50OihDR1BvaW50KXBvaW50OwotLSAodm9pZClkb3VibGVUYXBJbjooVUlQREZQYWdlVmlldyAq
KXBhZ2VWaWV3IGF0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKXBhZ2VXYXNSZW5kZXJl
ZDooVUlQREZQYWdlVmlldyAqKXBhZ2VWaWV3OwotLSAodm9pZClyZXNldFpvb206KFVJUERGUGFn
ZVZpZXcgKilwYWdlVmlldzsKLS0gKHZvaWQpc2VsZWN0aW9uRGlkRW5kVHJhY2tpbmc6KFVJUERG
UGFnZVZpZXcgKilwYWdlVmlldzsKLS0gKHZvaWQpem9vbTooVUlQREZQYWdlVmlldyAqKXBhZ2VW
aWV3IHRvOihDR1JlY3QpcmVjdCBhdFBvaW50OihDR1BvaW50KXB0IGtpbmQ6KFVJUERGT2JqZWN0
S2luZClraW5kOwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGQW5ub3RhdGlvbiA6IE5TT2JqZWN0
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZBbm5vdGF0aW9uICgpCi0tIChDR1JlY3QpUmVjdDsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIq
IGFubm90YXRpb25Db250cm9sbGVyOwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGTWFya3VwQW5u
b3RhdGlvbiA6IFVJUERGQW5ub3RhdGlvbgotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGTGlua0Fu
bm90YXRpb24gOiBVSVBERk1hcmt1cEFubm90YXRpb24KLUBlbmQKLQotQGludGVyZmFjZSBVSVBE
RkxpbmtBbm5vdGF0aW9uICgpCi0tIChOU1VSTCAqKXVybDsKLS0gKE5TVUludGVnZXIpcGFnZU51
bWJlcjsKLUBlbmQKLQotQHByb3RvY29sIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXJEZWxlZ2F0
ZQotQG9wdGlvbmFsCi0tICh2b2lkKWFubm90YXRpb246KFVJUERGQW5ub3RhdGlvbiAqKWFubm90
YXRpb24gd2FzVG91Y2hlZEF0UG9pbnQ6KENHUG9pbnQpIHBvaW50IGNvbnRyb2xsZXI6KFVJUERG
QW5ub3RhdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAodm9pZClhbm5vdGF0aW9uOihV
SVBERkFubm90YXRpb24gKilhbm5vdGF0aW9uIGlzQmVpbmdQcmVzc2VkQXRQb2ludDooQ0dQb2lu
dCkgcG9pbnQgY29udHJvbGxlcjooVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xs
ZXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZTZWxlY3Rpb24gOiBOU09iamVjdAotQGVuZAot
Ci1AaW50ZXJmYWNlIFVJUERGU2VsZWN0aW9uICgpCi0tIChpZClpbml0V2l0aFBhZ2U6KFVJUERG
UGFnZSAqKXBhZ2UgZnJvbUluZGV4OihOU1VJbnRlZ2VyKXN0YXJ0SW5kZXggdG9JbmRleDooTlNV
SW50ZWdlcillbmRJbmRleDsKLS0gKENHUmVjdClib3VuZHM7Ci0tIChVSVBERlBhZ2UgKilwYWdl
OwotLSAoTlNVSW50ZWdlcilzdGFydEluZGV4OwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgQ0ZSYW5nZSBzdHJpbmdSYW5nZTsKLUBlbmQKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0tMRUdBQ1lQREZWSUVXKSB8fCBFTkFCTEUoV0tQREZWSUVXKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDlmZWUyYzZjYzE3ZjcxOTE2M2I5MWEwNjM2ODNhYmVmMjAzMGM3YTkuLjZjYTQ1
Y2E4Y2FhYTUzZGQ3ZGU1NTFmMzliOWE4MDMxNGVjNWJlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTQwMyw3ICs0MDMsNiBAQCBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCi1VSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5t
bQogVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0KIFVJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCmluZGV4IDZk
N2Y5MTdhYjRhOGYwNjdkYmMwMjIwYjc1YmFhYjA5OTIzMjUwZjMuLmMyYTMwMzM3YTI1YzliMjgw
NWRlOGVkYmMyNDFiYWFjYjk3NGFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
Lm1tCkBAIC0zMCw3ICszMCw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1w
b3J0ICJXS0xlZ2FjeVBERlZpZXcuaCIKICNpbXBvcnQgIldLUERGVmlldy5oIgogI2ltcG9ydCAi
V0tTeXN0ZW1QcmV2aWV3Vmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaCIKQEAgLTU1LDkgKzU0LDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmln
dXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICNpZiBFTkFC
TEUoV0tQREZWSUVXKQogICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRl
cjpbV0tQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07Ci0jZWxpZiBFTkFCTEUo
V0tMRUdBQ1lQREZWSUVXKQotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKLSAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92
aWRlcjpbV0tMZWdhY3lQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CiAjZW5k
aWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDFlOGUyZGY4NzgzYzk2OGQ5MTlkYTBiMGQ4
NjNmNzgzMGRkMGM3YzMuLjUxODFmZDg2YjFjYmNmNzYyMWJhNThkOTM2NDE4OTJjYzZiODRkYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApA
QCAtMjYsMjAgKzI2LDMwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRm9ybURhdGFSZWZl
cmVuY2U7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
K3N0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKK2NsYXNzIFNhbmRib3hFeHRlbnNpb247CiBj
bGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CitjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFdlYkZyYW1l
UHJveHk7Ci1zdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKK3N0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
czsKK3N0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOworc3RydWN0IFdlYnNpdGVQb2xpY2ll
c0RhdGE7CiAKIGNsYXNzIFByb3Zpc2lvbmFsUGFnZVByb3h5IDogcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0xlZ2FjeVBERlZpZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIx
ZWI3YzBhYjI5ZDg4Y2Y3YmMzZjk2ZGYzN2ZkZjM1ZjEwNzRmZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tMZWdhY3lQREZWaWV3LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmIEVOQUJMRShXS0xFR0FDWVBERlZJRVcpCi0KLSNpbXBvcnQgIkNvcmVQREZTUEku
aCIKLSNpbXBvcnQgIldLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaCIKLSNpbXBvcnQgIldLQXBwbGlj
YXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIgotI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyLmgiCi0KLUBpbnRlcmZhY2UgV0tMZWdhY3lQREZWaWV3IDogV0tBcHBsaWNhdGlvblN0YXRl
VHJhY2tpbmdWaWV3IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFVJUERGUGFnZVZpZXdEZWxl
Z2F0ZSwgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRlLCBXS0FjdGlvblNoZWV0QXNz
aXN0YW50RGVsZWdhdGU+Ci1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0tMRUdBQ1lQREZWSUVX
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMTIwODQ5NTJhNTU4Mzc5NGZmZjIzNDRiMDBl
OTcyZTRiZTE1ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDg2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIldLTGVnYWN5UERGVmlldy5oIgotCi0jaWYgRU5BQkxFKFdLTEVHQUNZ
UERGVklFVykKLQotI2ltcG9ydCAiQVBJRmluZENsaWVudC5oIgotI2ltcG9ydCAiQVBJVUlDbGll
bnQuaCIKLSNpbXBvcnQgIkNvcmVQREZTUEkuaCIKLSNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHku
aCIKLSNpbXBvcnQgIlNlc3Npb25TdGF0ZS5oIgotI2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBv
cnQgIldLUERGUGFnZU51bWJlckluZGljYXRvci5oIgotI2ltcG9ydCAiV0tQYXNzd29yZFZpZXcu
aCIKLSNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHku
aCIKLSNpbXBvcnQgIl9XS0ZpbmREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVySW50ZXJuYWwuaCIKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVU
eXBlcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLSNp
bXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgotI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFz
Lmg+Ci0KLS8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9y
ZSBkZXByZWNhdGVkIGRlY2xhcmF0aW9ucwotLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRj
aCBvZmYgdGhlbS4KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0KLWNvbnN0
IENHRmxvYXQgcGRmUGFnZU1hcmdpbiA9IDg7Ci1jb25zdCBDR0Zsb2F0IHBkZk1pbmltdW1ab29t
U2NhbGUgPSAxOwotY29uc3QgQ0dGbG9hdCBwZGZNYXhpbXVtWm9vbVNjYWxlID0gNTsKLQotY29u
c3QgZmxvYXQgb3ZlcmRyYXdIZWlnaHRNdWx0aXBsaWVyID0gMS41OwotCi1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyA9IDAuMDU7Ci0KLXR5cGVk
ZWYgc3RydWN0IHsKLSAgICBDR1JlY3QgZnJhbWU7Ci0gICAgUmV0YWluUHRyPFVJUERGUGFnZVZp
ZXc+IHZpZXc7Ci0gICAgUmV0YWluUHRyPFVJUERGUGFnZT4gcGFnZTsKLSAgICB1bnNpZ25lZCBp
bmRleDsKLX0gUERGUGFnZUluZm87Ci0KLUBpbnRlcmZhY2UgV0tMZWdhY3lQREZWaWV3ICgpCi0t
ICh2b2lkKV9yZXNldFpvb21BbmltYXRlZDooQk9PTClhbmltYXRlZDsKLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdLTGVnYWN5UERGVmlldyB7Ci0gICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRS
ZWY+IF9jZ1BERkRvY3VtZW50OwotICAgIFJldGFpblB0cjxVSVBERkRvY3VtZW50PiBfcGRmRG9j
dW1lbnQ7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAg
UmV0YWluUHRyPFdLUERGUGFnZU51bWJlckluZGljYXRvcj4gX3BhZ2VOdW1iZXJJbmRpY2F0b3I7
Ci0KLSAgICBWZWN0b3I8UERGUGFnZUluZm8+IF9wYWdlczsKLSAgICB1bnNpZ25lZCBfY2VudGVy
UGFnZU51bWJlcjsKLQotICAgIENHU2l6ZSBfbWluaW11bVNpemU7Ci0gICAgQ0dTaXplIF9vdmVy
bGFpZEFjY2Vzc29yeVZpZXdzSW5zZXQ7Ci0gICAgV0tXZWJWaWV3ICpfd2ViVmlldzsKLSAgICBV
SVNjcm9sbFZpZXcgKl9zY3JvbGxWaWV3OwotICAgIFVJVmlldyAqX2ZpeGVkT3ZlcmxheVZpZXc7
Ci0KLSAgICBCT09MIF9pc1N0YXJ0aW5nWm9vbTsKLSAgICBCT09MIF9pc1BlcmZvcm1pbmdTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uOwotCi0gICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQ+IF9hY3Rpb25TaGVldEFzc2lzdGFudDsKLSAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIF9wb3NpdGlvbkluZm9ybWF0aW9uOwotCi0gICAgdW5zaWduZWQgX2N1
cnJlbnRGaW5kUGFnZUluZGV4OwotICAgIHVuc2lnbmVkIF9jdXJyZW50RmluZE1hdGNoSW5kZXg7
Ci0gICAgUmV0YWluUHRyPFVJUERGU2VsZWN0aW9uPiBfY3VycmVudEZpbmRTZWxlY3Rpb247Ci0K
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9jYWNoZWRGaW5kU3RyaW5nOwotICAgIFZlY3RvcjxS
ZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+PiBfY2FjaGVkRmluZE1hdGNoZXM7Ci0gICAgdW5zaWdu
ZWQgX2NhY2hlZEZpbmRNYXhpbXVtQ291bnQ7Ci0gICAgX1dLRmluZE9wdGlvbnMgX2NhY2hlZEZp
bmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0czsKLQotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBf
bmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQ7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
bmV4dENhY2hlZEZpbmRTdHJpbmc7Ci0gICAgdW5zaWduZWQgX25leHRDYWNoZWRGaW5kTWF4aW11
bUNvdW50OwotICAgIF9XS0ZpbmRPcHRpb25zIF9uZXh0Q2FjaGVkRmluZE9wdGlvbnNBZmZlY3Rp
bmdSZXN1bHRzOwotCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBfZmluZFF1ZXVlOwotCi0gICAgUmV0
YWluUHRyPFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQ+IF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQ7Ci0K
LSAgICBVSUVkZ2VJbnNldHMgX2xhc3RVbm9ic2N1cmVkU2FmZUFyZWFJbnNldDsKLSAgICBDR0Zs
b2F0IF9sYXN0TGF5b3V0V2lkdGg7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSl3ZWJfaW5pdFdpdGhG
cmFtZTooQ0dSZWN0KWZyYW1lIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgIG1pbWVUeXBl
OihOU1N0cmluZyAqKW1pbWVUeXBlCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0
aEZyYW1lOmZyYW1lIHdlYlZpZXc6d2ViVmlld10pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3IgPSBbVUlDb2xvciBncmF5Q29sb3JdOwotCi0gICAgX3dl
YlZpZXcgPSB3ZWJWaWV3OwotCi0gICAgX3Njcm9sbFZpZXcgPSB3ZWJWaWV3LnNjcm9sbFZpZXc7
Ci0gICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6cGRmTWluaW11bVpvb21TY2Fs
ZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6cGRmTWF4aW11bVpvb21T
Y2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjpbVUlDb2xvciBncmF5
Q29sb3JdXTsKLQotICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0FjdGlv
blNoZWV0QXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfYWN0aW9u
U2hlZXRBc3Npc3RhbnQgc2V0RGVsZWdhdGU6c2VsZl07Ci0KLSAgICBfZmluZFF1ZXVlID0gZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldLUERGVmlld0NvbXB1dGVNYXRj
aGVzUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07Ci0KLSAgICBbc2VsZiBfY2xlYXJQYWdlc107
Ci0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIGRp
c3BhdGNoX3JlbGVhc2UoX2ZpbmRRdWV1ZSk7Ci0gICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBj
bGVhbnVwU2hlZXRdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNTdHJpbmcgKil3
ZWJfc3VnZ2VzdGVkRmlsZW5hbWUKLXsKLSAgICByZXR1cm4gX3N1Z2dlc3RlZEZpbGVuYW1lLmdl
dCgpOwotfQotCi0tIChOU0RhdGEgKil3ZWJfZGF0YVJlcHJlc2VudGF0aW9uCi17Ci0gICAgcmV0
dXJuIFsoTlNEYXRhICopQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKF9jZ1BERkRvY3VtZW50LmdldCgpKSkgYXV0b3JlbGVhc2VdOwotfQotCi1zdGF0
aWMgdm9pZCBkZXRhY2hWaWV3Rm9yUGFnZShQREZQYWdlSW5mbyYgcGFnZSkKLXsKLSAgICBbcGFn
ZS52aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIFtwYWdlLnZpZXcgc2V0RGVsZWdhdGU6
bmlsXTsKLSAgICBbW3BhZ2UudmlldyBhbm5vdGF0aW9uQ29udHJvbGxlcl0gc2V0RGVsZWdhdGU6
bmlsXTsKLSAgICBwYWdlLnZpZXcgPSBuaWw7Ci19Ci0KLS0gKHZvaWQpX2NsZWFyUGFnZXMKLXsK
LSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBfcGFnZXMpCi0gICAgICAgIGRldGFjaFZpZXdGb3JQYWdl
KHBhZ2UpOwotICAgIAotICAgIF9wYWdlcy5jbGVhcigpOwotfQotCi0tICh2b2lkKV9kaWRMb2Fk
UERGRG9jdW1lbnQKLXsKLSAgICBfcGRmRG9jdW1lbnQgPSBhZG9wdE5TKFtbVUlQREZEb2N1bWVu
dCBhbGxvY10gaW5pdFdpdGhDR1BERkRvY3VtZW50Ol9jZ1BERkRvY3VtZW50LmdldCgpXSk7Ci0K
LSAgICAvLyBGSVhNRTogUmVzdG9yZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCBwYWdlIHNjYWxl
IGlmIG5hdmlnYXRpbmcgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCi0KLSAgICBbc2VsZiBf
Y29tcHV0ZVBhZ2VBbmREb2N1bWVudEZyYW1lc107Ci0gICAgW3NlbGYgX3JldmFsaWRhdGVWaWV3
c107Ci0gICAgW3NlbGYgX3Njcm9sbFRvRnJhZ21lbnQ6X3dlYlZpZXcuVVJMLmZyYWdtZW50XTsK
LX0KLQotLSAodm9pZCl3ZWJfc2V0Q29udGVudFByb3ZpZGVyRGF0YTooTlNEYXRhICopZGF0YSBz
dWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZQotewotICAgIF9zdWdnZXN0ZWRG
aWxlbmFtZSA9IGFkb3B0TlMoW2ZpbGVuYW1lIGNvcHldKTsKLQotICAgIFtzZWxmIF9jbGVhclBh
Z2VzXTsKLQotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilkYXRhKSk7
Ci0gICAgX2NnUERGRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJv
dmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7Ci0KLSAgICBpZiAoIV9jZ1BERkRvY3VtZW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoQ0dQREZEb2N1bWVudElzVW5sb2NrZWQoX2NnUERG
RG9jdW1lbnQuZ2V0KCkpKSB7Ci0gICAgICAgIFtzZWxmIF9kaWRMb2FkUERGRG9jdW1lbnRdOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW3NlbGYgX3Nob3dQYXNzd29yZEVudHJ5Rmll
bGRdOwotfQotCi0tICh2b2lkKXdlYl9zZXRNaW5pbXVtU2l6ZTooQ0dTaXplKXNpemUKLXsKLSAg
ICBpZiAoQ0dTaXplRXF1YWxUb1NpemUoc2l6ZSwgX21pbmltdW1TaXplKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgX21pbmltdW1TaXplID0gc2l6ZTsKLQotICAgIGlmIChfd2ViVmlldy5fcGFz
c3dvcmRWaWV3KSB7Ci0gICAgICAgIHNlbGYuZnJhbWUgPSB7IHNlbGYuZnJhbWUub3JpZ2luLCBz
aXplIH07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDR0Zsb2F0IG9sZERvY3VtZW50
TGVmdEZyYWN0aW9uID0gMDsKLSAgICBDR0Zsb2F0IG9sZERvY3VtZW50VG9wRnJhY3Rpb24gPSAw
OwotICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IF9zY3JvbGxWaWV3LmNvbnRlbnRTaXplOwotICAg
IGlmIChjb250ZW50U2l6ZS53aWR0aCAmJiBjb250ZW50U2l6ZS5oZWlnaHQpIHsKLSAgICAgICAg
Q0dQb2ludCBjb250ZW50T2Zmc2V0ID0gX3Njcm9sbFZpZXcuY29udGVudE9mZnNldDsKLSAgICAg
ICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IF9zY3JvbGxWaWV3LmNvbnRlbnRJbnNldDsK
LSAgICAgICAgb2xkRG9jdW1lbnRMZWZ0RnJhY3Rpb24gPSAoY29udGVudE9mZnNldC54ICsgY29u
dGVudEluc2V0LmxlZnQpIC8gY29udGVudFNpemUud2lkdGg7Ci0gICAgICAgIG9sZERvY3VtZW50
VG9wRnJhY3Rpb24gPSAoY29udGVudE9mZnNldC55ICsgY29udGVudEluc2V0LnRvcCkgLyBjb250
ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgfQotCi0gICAgW3NlbGYgX2NvbXB1dGVQYWdlQW5kRG9jdW1l
bnRGcmFtZXNdOwotCi0gICAgQ0dTaXplIG5ld0NvbnRlbnRTaXplID0gX3Njcm9sbFZpZXcuY29u
dGVudFNpemU7Ci0gICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IF9zY3JvbGxWaWV3LmNv
bnRlbnRJbnNldDsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50TWFr
ZSgob2xkRG9jdW1lbnRMZWZ0RnJhY3Rpb24gKiBuZXdDb250ZW50U2l6ZS53aWR0aCkgLSBjb250
ZW50SW5zZXQubGVmdCwgKG9sZERvY3VtZW50VG9wRnJhY3Rpb24gKiBuZXdDb250ZW50U2l6ZS5o
ZWlnaHQpIC0gY29udGVudEluc2V0LnRvcCkgYW5pbWF0ZWQ6Tk9dOwotCi0gICAgW3NlbGYgX3Jl
dmFsaWRhdGVWaWV3c107Ci19Ci0KLS0gKHZvaWQpd2ViX3Njcm9sbFZpZXdEaWRTY3JvbGw6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKLXsKLSAgICBpZiAoc2Nyb2xsVmlldy5pc1pvb21Cb3Vu
Y2luZyB8fCBzY3JvbGxWaWV3Ll9pc0FuaW1hdGluZ1pvb20pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFtzZWxmIF9yZXZhbGlkYXRlVmlld3NdOwotCi0gICAgaWYgKCFfaXNQZXJmb3JtaW5nU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbikKLSAgICAgICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIHNob3dd
OwotfQotCi0tICh2b2lkKV9lbnN1cmVWaWV3Rm9yUGFnZTooUERGUGFnZUluZm8mKXBhZ2VJbmZv
Ci17Ci0gICAgaWYgKHBhZ2VJbmZvLnZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBhZ2VJ
bmZvLnZpZXcgPSBhZG9wdE5TKFtbVUlQREZQYWdlVmlldyBhbGxvY10gaW5pdFdpdGhQYWdlOnBh
Z2VJbmZvLnBhZ2UuZ2V0KCkgdGlsZWRDb250ZW50OllFU10pOwotICAgIFtwYWdlSW5mby52aWV3
IHNldFVzZUJhY2tpbmdMYXllcjpZRVNdOwotICAgIFtwYWdlSW5mby52aWV3IHNldERlbGVnYXRl
OnNlbGZdOwotICAgIFtbcGFnZUluZm8udmlldyBhbm5vdGF0aW9uQ29udHJvbGxlcl0gc2V0RGVs
ZWdhdGU6c2VsZl07Ci0gICAgW3NlbGYgYWRkU3VidmlldzpwYWdlSW5mby52aWV3LmdldCgpXTsK
LQotICAgIFtwYWdlSW5mby52aWV3IHNldEZyYW1lOnBhZ2VJbmZvLmZyYW1lXTsKLSAgICBbcGFn
ZUluZm8udmlldyBjb250ZW50TGF5ZXJdLmNvbnRlbnRzU2NhbGUgPSBzZWxmLndpbmRvdy5zY3Jl
ZW4uc2NhbGU7Ci19Ci0KLS0gKHZvaWQpX3JldmFsaWRhdGVWaWV3cwotewotICAgIGlmIChfaXNT
dGFydGluZ1pvb20pCi0gICAgICAgIHJldHVybjsKLQotICAgIENHUmVjdCB0YXJnZXRSZWN0ID0g
W19zY3JvbGxWaWV3IGNvbnZlcnRSZWN0Ol9zY3JvbGxWaWV3LmJvdW5kcyB0b1ZpZXc6c2VsZl07
Ci0KLSAgICAvLyBXZSBhcHBseSBvdmVyZHJhdyBhZnRlciBhcHBseWluZyBzY2FsZSBpbiBvcmRl
ciB0byBhdm9pZCBleGNlc3NpdmUKLSAgICAvLyBtZW1vcnkgdXNlIGNhdXNlZCBieSBzY2FsaW5n
IHRoZSBvdmVyZHJhdy4KLSAgICBDR1JlY3QgdGFyZ2V0UmVjdFdpdGhPdmVyZHJhdyA9IENHUmVj
dEluc2V0KHRhcmdldFJlY3QsIDAsIC10YXJnZXRSZWN0LnNpemUuaGVpZ2h0ICogb3ZlcmRyYXdI
ZWlnaHRNdWx0aXBsaWVyKTsKLSAgICBDR1JlY3QgdGFyZ2V0UmVjdEZvckNlbnRlclBhZ2UgPSBD
R1JlY3RJbnNldCh0YXJnZXRSZWN0LCAwLCB0YXJnZXRSZWN0LnNpemUuaGVpZ2h0IC8gMiAtIHBk
ZlBhZ2VNYXJnaW4gKiAyKTsKLQotICAgIF9jZW50ZXJQYWdlTnVtYmVyID0gMDsKLQotICAgIGZv
ciAoYXV0byYgcGFnZUluZm8gOiBfcGFnZXMpIHsKLSAgICAgICAgaWYgKCFDR1JlY3RJbnRlcnNl
Y3RzUmVjdChwYWdlSW5mby5mcmFtZSwgdGFyZ2V0UmVjdFdpdGhPdmVyZHJhdykgJiYgcGFnZUlu
Zm8uaW5kZXggIT0gX2N1cnJlbnRGaW5kUGFnZUluZGV4KSB7Ci0gICAgICAgICAgICBkZXRhY2hW
aWV3Rm9yUGFnZShwYWdlSW5mbyk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghX2NlbnRlclBhZ2VOdW1iZXIgJiYgQ0dSZWN0SW50ZXJzZWN0c1JlY3Qo
cGFnZUluZm8uZnJhbWUsIHRhcmdldFJlY3RGb3JDZW50ZXJQYWdlKSkKLSAgICAgICAgICAgIF9j
ZW50ZXJQYWdlTnVtYmVyID0gcGFnZUluZm8uaW5kZXggKyAxOwotCi0gICAgICAgIFtzZWxmIF9l
bnN1cmVWaWV3Rm9yUGFnZTpwYWdlSW5mb107Ci0gICAgfQotCi0gICAgaWYgKCFfY2VudGVyUGFn
ZU51bWJlciAmJiBfcGFnZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlmIChDR1JlY3RHZXRNaW5ZKF9w
YWdlcy5maXJzdCgpLmZyYW1lKSA+IENHUmVjdEdldE1heFkodGFyZ2V0UmVjdEZvckNlbnRlclBh
Z2UpKQotICAgICAgICAgICAgX2NlbnRlclBhZ2VOdW1iZXIgPSAxOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIEFTU0VSVChDR1JlY3RHZXRNYXhZKF9wYWdlcy5sYXN0KCkuZnJhbWUpIDwg
Q0dSZWN0R2V0TWluWSh0YXJnZXRSZWN0Rm9yQ2VudGVyUGFnZSkpOwotICAgICAgICAgICAgX2Nl
bnRlclBhZ2VOdW1iZXIgPSBfcGFnZXMuc2l6ZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
W3NlbGYgX3VwZGF0ZVBhZ2VOdW1iZXJJbmRpY2F0b3JdOwotfQotCi0tIChDR1BvaW50KV9vZmZz
ZXRGb3JQYWdlTnVtYmVySW5kaWNhdG9yCi17Ci0gICAgVUlFZGdlSW5zZXRzIGluc2V0cyA9IFVJ
RWRnZUluc2V0c0FkZChfd2ViVmlldy5fY29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldCwg
X3dlYlZpZXcuX2NvbXB1dGVkT2JzY3VyZWRJbnNldCwgVUlSZWN0RWRnZUFsbCk7Ci0gICAgcmV0
dXJuIENHUG9pbnRNYWtlKGluc2V0cy5sZWZ0LCBpbnNldHMudG9wICsgX292ZXJsYWlkQWNjZXNz
b3J5Vmlld3NJbnNldC5oZWlnaHQpOwotfQotCi0tICh2b2lkKV91cGRhdGVQYWdlTnVtYmVySW5k
aWNhdG9yCi17Ci0gICAgaWYgKF9pc1BlcmZvcm1pbmdTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9wYWdlTnVtYmVySW5kaWNhdG9yKQotICAgICAg
ICBfcGFnZU51bWJlckluZGljYXRvciA9IGFkb3B0TlMoW1tXS1BERlBhZ2VOdW1iZXJJbmRpY2F0
b3IgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb10pOwotCi0gICAgW19maXhlZE92ZXJs
YXlWaWV3IGFkZFN1YnZpZXc6X3BhZ2VOdW1iZXJJbmRpY2F0b3IuZ2V0KCldOwotCi0gICAgW19w
YWdlTnVtYmVySW5kaWNhdG9yIHNldEN1cnJlbnRQYWdlTnVtYmVyOl9jZW50ZXJQYWdlTnVtYmVy
XTsKLSAgICBbX3BhZ2VOdW1iZXJJbmRpY2F0b3IgbW92ZVRvUG9pbnQ6W3NlbGYgX29mZnNldEZv
clBhZ2VOdW1iZXJJbmRpY2F0b3JdIGFuaW1hdGVkOk5PXTsKLX0KLQotLSAodm9pZCl3ZWJfc2V0
T3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0luc2V0OihDR1NpemUpaW5zZXQKLXsKLSAgICBfb3Zlcmxh
aWRBY2Nlc3NvcnlWaWV3c0luc2V0ID0gaW5zZXQ7Ci0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9y
IG1vdmVUb1BvaW50OltzZWxmIF9vZmZzZXRGb3JQYWdlTnVtYmVySW5kaWNhdG9yXSBhbmltYXRl
ZDpZRVNdOwotfQotCi0tICh2b2lkKXdlYl9jb21wdXRlZENvbnRlbnRJbnNldERpZENoYW5nZQot
ewotICAgIFtzZWxmIF91cGRhdGVQYWdlTnVtYmVySW5kaWNhdG9yXTsKLQotICAgIGlmIChVSUVk
Z2VJbnNldHNFcXVhbFRvRWRnZUluc2V0cyhfd2ViVmlldy5fY29tcHV0ZWRVbm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldCwgX2xhc3RVbm9ic2N1cmVkU2FmZUFyZWFJbnNldCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFtzZWxmIF9jb21wdXRlUGFnZUFuZERvY3VtZW50RnJhbWVzXTsKLSAgICBbc2Vs
ZiBfcmV2YWxpZGF0ZVZpZXdzXTsKLX0KLQotLSAodm9pZCl3ZWJfc2V0Rml4ZWRPdmVybGF5Vmll
dzooVUlWaWV3ICopZml4ZWRPdmVybGF5VmlldwotewotICAgIF9maXhlZE92ZXJsYXlWaWV3ID0g
Zml4ZWRPdmVybGF5VmlldzsKLQotICAgIGlmIChfcGFnZU51bWJlckluZGljYXRvcikKLSAgICAg
ICAgW19maXhlZE92ZXJsYXlWaWV3IGFkZFN1YnZpZXc6X3BhZ2VOdW1iZXJJbmRpY2F0b3IuZ2V0
KCldOwotfQotCi0tICh2b2lkKV9zY3JvbGxUb0ZyYWdtZW50OihOU1N0cmluZyAqKWZyYWdtZW50
Ci17Ci0gICAgaWYgKCFbZnJhZ21lbnQgaGFzUHJlZml4OkAicGFnZSJdKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBOU0ludGVnZXIgcGFnZUluZGV4ID0gW1tmcmFnbWVudCBzdWJzdHJpbmdGcm9t
SW5kZXg6NF0gaW50ZWdlclZhbHVlXSAtIDE7Ci0gICAgaWYgKHBhZ2VJbmRleCA8IDAgfHwgc3Rh
dGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHBhZ2VJbmRleCkgPj0gX3BhZ2VzLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgX2lzUGVyZm9ybWluZ1NhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBZ
RVM7Ci0KLSAgICBbX3BhZ2VOdW1iZXJJbmRpY2F0b3IgaGlkZV07Ci0gICAgW3NlbGYgX3Jlc2V0
Wm9vbUFuaW1hdGVkOk5PXTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBwYWdlIG1hcmdpbiBp
cyB2aXNpYmxlIGJlbG93IHRoZSBjb250ZW50IGluc2V0LgotICAgIGNvbnN0IENHRmxvYXQgdmVy
dGljYWxPZmZzZXQgPSBfcGFnZXNbcGFnZUluZGV4XS5mcmFtZS5vcmlnaW4ueSAtIF93ZWJWaWV3
Ll9jb21wdXRlZE9ic2N1cmVkSW5zZXQudG9wIC0gcGRmUGFnZU1hcmdpbjsKLSAgICBbX3Njcm9s
bFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50TWFrZShfc2Nyb2xsVmlldy5jb250ZW50T2Zm
c2V0LngsIHZlcnRpY2FsT2Zmc2V0KSBhbmltYXRlZDpOT107Ci0KLSAgICBfaXNQZXJmb3JtaW5n
U2FtZURvY3VtZW50TmF2aWdhdGlvbiA9IE5POwotfQotCi0tICh2b2lkKXdlYl9kaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uOihXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKW5hdmlnYXRpb25U
eXBlCi17Ci0gICAgLy8gQ2hlY2sgZm9yIGtXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9u
U3RhdGVQb3AgaW5zdGVhZCBvZiBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdh
dGlvbiBzaW5jZSB0aGUKLSAgICAvLyBsYXR0ZXIgaXMgb25seSBjYWxsZWQgb25jZSB3aGVuIG5h
dmlnYXRpbmcgdG8gdGhlIHNhbWUgYW5jaG9yIGluIHN1Y2Nlc3Npb24uIElmIHRoZSB1c2VyIG5h
dmlnYXRlcyB0byBhIHBhZ2UKLSAgICAvLyB0aGVuIHNjcm9sbHMgYmFjayBhbmQgY2xpY2tzIG9u
IHRoZSBzYW1lIGxpbmsgYSBzZWNvbmQgdGltZSwgd2Ugd2FudCB0byBzY3JvbGwgYWdhaW4uCi0g
ICAgaWYgKG5hdmlnYXRpb25UeXBlICE9IGtXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9u
U3RhdGVQb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiByZXN0b3JlIHRoZSBz
Y3JvbGwgcG9zaXRpb24gYW5kIHBhZ2Ugc2NhbGUgaWYgbmF2aWdhdGluZyBiYWNrIGZyb20gYSBm
cmFnbWVudC4KLQotICAgIFtzZWxmIF9zY3JvbGxUb0ZyYWdtZW50Ol93ZWJWaWV3LlVSTC5mcmFn
bWVudF07Ci19Ci0KLS0gKFVJVmlldyAqKXdlYl9jb250ZW50VmlldwotewotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tICh2b2lkKV9jb21wdXRlUGFnZUFuZERvY3VtZW50RnJhbWVzCi17Ci0gICAg
VUlFZGdlSW5zZXRzIHNhZmVBcmVhSW5zZXRzID0gX3dlYlZpZXcuX2NvbXB1dGVkVW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXQ7Ci0gICAgX2xhc3RVbm9ic2N1cmVkU2FmZUFyZWFJbnNldCA9IHNhZmVB
cmVhSW5zZXRzOwotICAgIENHU2l6ZSBtaW5pbXVtU2l6ZVJlc3BlY3RpbmdDb250ZW50SW5zZXQg
PSBDR1NpemVNYWtlKF9taW5pbXVtU2l6ZS53aWR0aCAtIChzYWZlQXJlYUluc2V0cy5sZWZ0ICsg
c2FmZUFyZWFJbnNldHMucmlnaHQpLCBfbWluaW11bVNpemUuaGVpZ2h0IC0gKHNhZmVBcmVhSW5z
ZXRzLnRvcCArIHNhZmVBcmVhSW5zZXRzLmJvdHRvbSkpOwotCi0gICAgaWYgKCFfcGFnZXMuaXNF
bXB0eSgpICYmIF9sYXN0TGF5b3V0V2lkdGggPT0gbWluaW11bVNpemVSZXNwZWN0aW5nQ29udGVu
dEluc2V0LndpZHRoKSB7Ci0gICAgICAgIFtzZWxmIF91cGRhdGVEb2N1bWVudEZyYW1lXTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIE5TVUludGVnZXIgcGFnZUNvdW50ID0gW19wZGZE
b2N1bWVudCBudW1iZXJPZlBhZ2VzXTsKLSAgICBpZiAoIXBhZ2VDb3VudCkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIF9sYXN0TGF5b3V0V2lkdGggPSBtaW5pbXVtU2l6ZVJlc3BlY3RpbmdD
b250ZW50SW5zZXQud2lkdGg7Ci0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIHNldFBhZ2VDb3Vu
dDpwYWdlQ291bnRdOwotICAgIAotICAgIFtzZWxmIF9jbGVhclBhZ2VzXTsKLQotICAgIF9wYWdl
cy5yZXNlcnZlQ2FwYWNpdHkocGFnZUNvdW50KTsKLQotICAgIENHUmVjdCBwYWdlRnJhbWUgPSBD
R1JlY3RNYWtlKDAsIDAsIG1pbmltdW1TaXplUmVzcGVjdGluZ0NvbnRlbnRJbnNldC53aWR0aCwg
bWluaW11bVNpemVSZXNwZWN0aW5nQ29udGVudEluc2V0LmhlaWdodCk7Ci0gICAgZm9yIChOU1VJ
bnRlZ2VyIHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IHBhZ2VDb3VudDsgKytwYWdlSW5kZXgp
IHsKLSAgICAgICAgVUlQREZQYWdlICpwYWdlID0gW19wZGZEb2N1bWVudCBwYWdlQXRJbmRleDpw
YWdlSW5kZXhdOwotICAgICAgICBpZiAoIXBhZ2UpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBDR1NpemUgcGFnZVNpemUgPSBbcGFnZSBjcm9wQm94QWNjb3VudEZvclJvdGF0aW9u
XS5zaXplOwotICAgICAgICBwYWdlRnJhbWUuc2l6ZS5oZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQg
LyBwYWdlU2l6ZS53aWR0aCAqIHBhZ2VGcmFtZS5zaXplLndpZHRoOwotICAgICAgICBDR1JlY3Qg
cGFnZUZyYW1lV2l0aE1hcmdpbkFwcGxpZWQgPSBDR1JlY3RJbnNldChwYWdlRnJhbWUsIHBkZlBh
Z2VNYXJnaW4sIHBkZlBhZ2VNYXJnaW4pOwotICAgICAgICBpZiAoQ0dSZWN0SXNOdWxsKHBhZ2VG
cmFtZVdpdGhNYXJnaW5BcHBsaWVkKSkKLSAgICAgICAgICAgIHBhZ2VGcmFtZVdpdGhNYXJnaW5B
cHBsaWVkID0gQ0dSZWN0WmVybzsKLQotICAgICAgICBQREZQYWdlSW5mbyBwYWdlSW5mbzsKLSAg
ICAgICAgcGFnZUluZm8ucGFnZSA9IHBhZ2U7Ci0gICAgICAgIHBhZ2VJbmZvLmZyYW1lID0gcGFn
ZUZyYW1lV2l0aE1hcmdpbkFwcGxpZWQ7Ci0gICAgICAgIHBhZ2VJbmZvLmluZGV4ID0gcGFnZUlu
ZGV4OwotICAgICAgICBfcGFnZXMuYXBwZW5kKHBhZ2VJbmZvKTsKLSAgICAgICAgcGFnZUZyYW1l
Lm9yaWdpbi55ICs9IHBhZ2VGcmFtZS5zaXplLmhlaWdodCAtIHBkZlBhZ2VNYXJnaW47Ci0gICAg
fQotCi0gICAgW3NlbGYgX3VwZGF0ZURvY3VtZW50RnJhbWVdOwotfQotCi0tICh2b2lkKV91cGRh
dGVEb2N1bWVudEZyYW1lCi17Ci0gICAgaWYgKF9wYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFVJRWRnZUluc2V0cyBzYWZlQXJlYUluc2V0cyA9IF93ZWJWaWV3Ll9jb21w
dXRlZFVub2JzY3VyZWRTYWZlQXJlYUluc2V0OwotICAgIENHRmxvYXQgc2NhbGUgPSBfc2Nyb2xs
Vmlldy56b29tU2NhbGU7Ci0gICAgQ0dSZWN0IG5ld0ZyYW1lID0gQ0dSZWN0WmVybzsKLSAgICBu
ZXdGcmFtZS5vcmlnaW4ueCA9IHNhZmVBcmVhSW5zZXRzLmxlZnQ7Ci0gICAgbmV3RnJhbWUub3Jp
Z2luLnkgPSBzYWZlQXJlYUluc2V0cy50b3A7Ci0gICAgbmV3RnJhbWUuc2l6ZS53aWR0aCA9IF9s
YXN0TGF5b3V0V2lkdGggKiBzY2FsZTsKLSAgICBuZXdGcmFtZS5zaXplLmhlaWdodCA9IHN0ZDo6
bWF4KChDR1JlY3RHZXRNYXhZKF9wYWdlcy5sYXN0KCkuZnJhbWUpICsgcGRmUGFnZU1hcmdpbikg
KiBzY2FsZSArIHNhZmVBcmVhSW5zZXRzLmJvdHRvbSwgX21pbmltdW1TaXplLmhlaWdodCAqIHNj
YWxlKTsKLQotICAgIFtzZWxmIHNldEZyYW1lOm5ld0ZyYW1lXTsKLSAgICBbX3Njcm9sbFZpZXcg
c2V0Q29udGVudFNpemU6bmV3RnJhbWUuc2l6ZV07Ci19Ci0KLS0gKHZvaWQpX3Jlc2V0Wm9vbUFu
aW1hdGVkOihCT09MKWFuaW1hdGVkCi17Ci0gICAgX2lzU3RhcnRpbmdab29tID0gWUVTOwotCi0g
ICAgQ0dSZWN0IHNjcm9sbFZpZXdCb3VuZHMgPSBfc2Nyb2xsVmlldy5ib3VuZHM7Ci0gICAgQ0dQ
b2ludCBjZW50ZXJPZlBhZ2VJbkRvY3VtZW50Q29vcmRpbmF0ZXMgPSBbX3Njcm9sbFZpZXcgY29u
dmVydFBvaW50OkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoc2Nyb2xsVmlld0JvdW5kcyksIENH
UmVjdEdldE1pZFkoc2Nyb2xsVmlld0JvdW5kcykpIHRvVmlldzpzZWxmXTsKLSAgICBbX3dlYlZp
ZXcgX3pvb21PdXRXaXRoT3JpZ2luOmNlbnRlck9mUGFnZUluRG9jdW1lbnRDb29yZGluYXRlcyBh
bmltYXRlZDphbmltYXRlZF07Ci0KLSAgICBfaXNTdGFydGluZ1pvb20gPSBOTzsKLX0KLQotLSAo
dm9pZClfaGlnaGxpZ2h0TGlua0Fubm90YXRpb246KFVJUERGTGlua0Fubm90YXRpb24gKilsaW5r
QW5ub3RhdGlvbiBmb3JEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgc3RhdGlj
IGNvbnN0IENHRmxvYXQgaGlnaGxpZ2h0Qm9yZGVyUmFkaXVzID0gMzsKLSAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCBoaWdobGlnaHRDb2xvckNvbXBvbmVudCA9IDI2LjAgLyAyNTU7Ci0gICAgc3Rh
dGljIFVJQ29sb3IgKmhpZ2hsaWdodENvbG9yID0gW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aFJl
ZDpoaWdobGlnaHRDb2xvckNvbXBvbmVudCBncmVlbjpoaWdobGlnaHRDb2xvckNvbXBvbmVudCBi
bHVlOmhpZ2hsaWdodENvbG9yQ29tcG9uZW50IGFscGhhOjAuM107Ci0KLSAgICBVSVBERlBhZ2VW
aWV3ICpwYWdlVmlldyA9IGxpbmtBbm5vdGF0aW9uLmFubm90YXRpb25Db250cm9sbGVyLnBhZ2VW
aWV3OwotICAgIENHUmVjdCBoaWdobGlnaHRWaWV3RnJhbWUgPSBbc2VsZiBjb252ZXJ0UmVjdDpb
cGFnZVZpZXcgY29udmVydFJlY3RGcm9tUERGUGFnZVNwYWNlOmxpbmtBbm5vdGF0aW9uLlJlY3Rd
IGZyb21WaWV3OnBhZ2VWaWV3XTsKLSAgICBSZXRhaW5QdHI8X1VJSGlnaGxpZ2h0Vmlldz4gaGln
aGxpZ2h0VmlldyA9IGFkb3B0TlMoW1tfVUlIaWdobGlnaHRWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdEluc2V0KGhpZ2hsaWdodFZpZXdGcmFtZSwgLWhpZ2hsaWdodEJvcmRlclJhZGl1
cywgLWhpZ2hsaWdodEJvcmRlclJhZGl1cyldKTsKLSAgICBbaGlnaGxpZ2h0VmlldyBzZXRPcGFx
dWU6Tk9dOwotICAgIFtoaWdobGlnaHRWaWV3IHNldENvcm5lclJhZGl1czpoaWdobGlnaHRCb3Jk
ZXJSYWRpdXNdOwotICAgIFtoaWdobGlnaHRWaWV3IHNldENvbG9yOmhpZ2hsaWdodENvbG9yXTsK
LQotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgW3NlbGYgYWRkU3Vidmlldzpo
aWdobGlnaHRWaWV3LmdldCgpXTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJ
U1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFtoaWdobGlnaHRWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0pOwotfQotCi0tIChOU1VS
TCAqKV9VUkxGb3JMaW5rQW5ub3RhdGlvbjooVUlQREZMaW5rQW5ub3RhdGlvbiAqKWxpbmtBbm5v
dGF0aW9uCi17Ci0gICAgTlNVUkwgKmRvY3VtZW50VVJMID0gX3dlYlZpZXcuVVJMOwotCi0gICAg
aWYgKE5TVVJMICp1cmwgPSBsaW5rQW5ub3RhdGlvbi51cmwpCi0gICAgICAgIHJldHVybiBbTlNV
UkwgVVJMV2l0aFN0cmluZzp1cmwucmVsYXRpdmVTdHJpbmcgcmVsYXRpdmVUb1VSTDpkb2N1bWVu
dFVSTF07Ci0KLSAgICBpZiAoTlNVSW50ZWdlciBwYWdlTnVtYmVyID0gbGlua0Fubm90YXRpb24u
cGFnZU51bWJlcikgewotICAgICAgICBTdHJpbmcgYW5jaG9yU3RyaW5nID0gbWFrZVN0cmluZygi
I3BhZ2UiLCBwYWdlTnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5n
OmFuY2hvclN0cmluZyByZWxhdGl2ZVRvVVJMOmRvY3VtZW50VVJMXTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbmlsOwotfQotCi0jcHJhZ21hIG1hcmsgRmluZC1pbi1QYWdlCi0KLXN0YXRpYyBOU1N0
cmluZ0NvbXBhcmVPcHRpb25zIHN0cmluZ0NvbXBhcmVPcHRpb25zKF9XS0ZpbmRPcHRpb25zIG9w
dGlvbnMpCi17Ci0gICAgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBmaW5kT3B0aW9ucyA9IDA7Ci0g
ICAgaWYgKG9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAg
ZmluZE9wdGlvbnMgfD0gTlNDYXNlSW5zZW5zaXRpdmVTZWFyY2g7Ci0gICAgaWYgKG9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gTlNCYWNr
d2FyZHNTZWFyY2g7Ci0gICAgcmV0dXJuIGZpbmRPcHRpb25zOwotfQotCi0tICh2b2lkKV9jb21w
dXRlTWF0Y2hlc0ZvclN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9w
dGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIGlm
ICghX3BkZkRvY3VtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9XS0ZpbmRPcHRpb25zIG9wdGlvbnNBZmZlY3RpbmdS
ZXN1bHRzID0gb3B0aW9ucyAmIH5fV0tGaW5kT3B0aW9uc0lycmVsZXZhbnRGb3JCYXRjaFJlc3Vs
dHM7Ci0KLSAgICAvLyBJZiB0aGlzIHNlYXJjaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBjdXJyZW50
bHkgY2FjaGVkIHNlYXJjaCwgYmFpbCBhbmQgY2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyLCBi
ZWNhdXNlIHRoZSBleGlzdGluZyBjYWNoZWQgcmVzdWx0cyBhcmUgdmFsaWQuCi0gICAgaWYgKCFf
Y2FjaGVkRmluZE1hdGNoZXMuaXNFbXB0eSgpICYmIFtfY2FjaGVkRmluZFN0cmluZyBpc0VxdWFs
VG9TdHJpbmc6c3RyaW5nXSAmJiBfY2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzID09
IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzICYmIF9jYWNoZWRGaW5kTWF4aW11bUNvdW50ID09IG1h
eENvdW50KSB7Ci0gICAgICAgIC8vIEFsc28sIGNhbmNlbCBhbnkgcnVubmluZyBzZWFyY2gsIGJl
Y2F1c2UgaXQgd2lsbCBldmVudHVhbGx5IHJlcGxhY2UgdGhlIG5vdy12YWxpZCByZXN1bHRzLgot
ICAgICAgICArK19uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRDsKLQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihZRVMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSWYg
dGhpcyBzZWFyY2ggaXMgZXF1aXZhbGVudCB0byB0aGUgY3VycmVudGx5IHJ1bm5pbmcgYXN5bmNo
cm9ub3VzIHNlYXJjaCwgYmFpbCBhcyBpZiB0aGlzIHNlYXJjaCB3ZXJlIGNhbmNlbGxlZDsgdGhl
IG9yaWdpbmFsIHNlYXJjaCdzIGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGV2ZW50dWFsbHkgZmly
ZS4KLSAgICBpZiAoW19uZXh0Q2FjaGVkRmluZFN0cmluZyBpc0VxdWFsVG9TdHJpbmc6c3RyaW5n
XSAmJiBfbmV4dENhY2hlZEZpbmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0cyA9PSBvcHRpb25zQWZm
ZWN0aW5nUmVzdWx0cyAmJiBfbmV4dENhY2hlZEZpbmRNYXhpbXVtQ291bnQgPT0gbWF4Q291bnQp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBmaW5kT3B0aW9ucyA9IHN0cmluZ0NvbXBh
cmVPcHRpb25zKG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzKTsKLQotICAgIFZlY3RvcjxQREZQYWdl
SW5mbz4gcGFnZXMgPSBfcGFnZXM7Ci0KLSAgICB1bnNpZ25lZCBjb21wdXRlTWF0Y2hlc09wZXJh
dGlvbklEID0gKytfbmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQ7Ci0gICAgX25leHRDYWNo
ZWRGaW5kU3RyaW5nID0gc3RyaW5nOwotICAgIF9uZXh0Q2FjaGVkRmluZE9wdGlvbnNBZmZlY3Rp
bmdSZXN1bHRzID0gb3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7Ci0gICAgX25leHRDYWNoZWRGaW5k
TWF4aW11bUNvdW50ID0gbWF4Q291bnQ7Ci0KLSAgICBSZXRhaW5QdHI8V0tMZWdhY3lQREZWaWV3
PiByZXRhaW5lZFNlbGYgPSBzZWxmOwotICAgIHR5cGVvZihjb21wbGV0aW9uSGFuZGxlcikgY29t
cGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0KLSAg
ICBkaXNwYXRjaF9hc3luYyhfZmluZFF1ZXVlLCBbcGFnZXMsIHN0cmluZywgZmluZE9wdGlvbnMs
IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzLCBtYXhDb3VudCwgY29tcHV0ZU1hdGNoZXNPcGVyYXRp
b25JRCwgcmV0YWluZWRTZWxmLCBjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKLSAgICAgICAgVmVj
dG9yPFJldGFpblB0cjxVSVBERlNlbGVjdGlvbj4+IG1hdGNoZXM7Ci0KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCBwYWdlcy5zaXplKCk7ICsrcGFnZUlu
ZGV4KSB7Ci0gICAgICAgICAgICBVSVBERlNlbGVjdGlvbiAqbWF0Y2ggPSBudWxscHRyOwotICAg
ICAgICAgICAgd2hpbGUgKChtYXRjaCA9IFtwYWdlc1twYWdlSW5kZXhdLnBhZ2UgZmluZFN0cmlu
ZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjptYXRjaCBvcHRpb25zOmZpbmRPcHRpb25zXSkpIHsKLSAg
ICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaCk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1hdGNoZXMuc2l6ZSgpID4gbWF4Q291bnQpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gbWF4
Q291bnRFeGNlZWRlZDsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGVucXVldWVkIGFu
b3RoZXIgc2VhcmNoLCBjYW5jZWwgdGhpcyBvbmUuCi0gICAgICAgICAgICAgICAgaWYgKHJldGFp
bmVkU2VsZi0+X25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEICE9IGNvbXB1dGVNYXRjaGVz
T3BlcmF0aW9uSUQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewotICAgICAgICAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KE5PKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICBtYXhDb3VudEV4Y2VlZGVk
OgotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbY29t
cHV0ZU1hdGNoZXNPcGVyYXRpb25JRCwgc3RyaW5nLCBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cywg
bWF4Q291bnQsIG1hdGNoZXMsIGNvbXBsZXRpb25IYW5kbGVyQ29weSwgcmV0YWluZWRTZWxmXSB7
Ci0KLSAgICAgICAgICAgIC8vIElmIGFub3RoZXIgc2VhcmNoIGhhcyBiZWVuIGVucXVldWVkIGlu
IHRoZSBtZWFudGltZSwgaWdub3JlIHRoaXMgcmVzdWx0LgotICAgICAgICAgICAgaWYgKHJldGFp
bmVkU2VsZi0+X25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEICE9IGNvbXB1dGVNYXRjaGVz
T3BlcmF0aW9uSUQpIHsKLSAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25I
YW5kbGVyQ29weSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9jYWNoZWRGaW5kU3RyaW5nID0gc3RyaW5nOwotICAg
ICAgICAgICAgcmV0YWluZWRTZWxmLT5fY2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRz
ID0gb3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7Ci0gICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9j
YWNoZWRGaW5kTWF4aW11bUNvdW50ID0gbWF4Q291bnQ7Ci0gICAgICAgICAgICByZXRhaW5lZFNl
bGYtPl9jYWNoZWRGaW5kTWF0Y2hlcyA9IG1hdGNoZXM7Ci0KLSAgICAgICAgICAgIHJldGFpbmVk
U2VsZi0+X25leHRDYWNoZWRGaW5kU3RyaW5nID0gbmlsOwotCi0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlckNvcHkoWUVTKTsKLSAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlv
bkhhbmRsZXJDb3B5KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpd2ViX2Nv
dW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAotewotICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLSAgICBbc2VsZiBf
Y29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3VudDpt
YXhDb3VudCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHBhZ2UtPmZpbmRDbGllbnQo
KS5kaWRDb3VudFN0cmluZ01hdGNoZXMocGFnZS5nZXQoKSwgc3RyaW5nLCBfY2FjaGVkRmluZE1h
dGNoZXMuc2l6ZSgpKTsKLSAgICB9XTsKLX0KLQotLSAodm9pZClfZGlkRmluZE1hdGNoOihVSVBE
RlNlbGVjdGlvbiAqKW1hdGNoCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlSW5mbyA6IF9wYWdlcykg
ewotICAgICAgICBpZiAocGFnZUluZm8ucGFnZSA9PSBtYXRjaC5wYWdlKSB7Ci0gICAgICAgICAg
ICBbc2VsZiBfZW5zdXJlVmlld0ZvclBhZ2U6cGFnZUluZm9dOwotCi0gICAgICAgICAgICBbcGFn
ZUluZm8udmlldyBoaWdobGlnaHRTZWFyY2hTZWxlY3Rpb246bWF0Y2ggYW5pbWF0ZWQ6Tk9dOwot
Ci0gICAgICAgICAgICBfY3VycmVudEZpbmRQYWdlSW5kZXggPSBwYWdlSW5mby5pbmRleDsKLSAg
ICAgICAgICAgIF9jdXJyZW50RmluZFNlbGVjdGlvbiA9IG1hdGNoOwotCi0gICAgICAgICAgICBD
R1JlY3Qgem9vbVJlY3QgPSBbcGFnZUluZm8udmlldyBjb252ZXJ0UmVjdEZyb21QREZQYWdlU3Bh
Y2U6bWF0Y2guYm91bmRzXTsKLSAgICAgICAgICAgIGlmIChDR1JlY3RJc051bGwoem9vbVJlY3Qp
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgW3NlbGYgem9vbTpwYWdl
SW5mby52aWV3LmdldCgpIHRvOnpvb21SZWN0IGF0UG9pbnQ6Q0dQb2ludFplcm8ga2luZDprVUlQ
REZPYmplY3RLaW5kVGV4dF07Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotLSAodm9pZCl3ZWJfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9u
czooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAot
ewotICAgIGlmIChfY3VycmVudEZpbmRTZWxlY3Rpb24pCi0gICAgICAgIFtfcGFnZXNbX2N1cnJl
bnRGaW5kUGFnZUluZGV4XS52aWV3IGNsZWFyU2VhcmNoSGlnaGxpZ2h0c107Ci0KLSAgICBSZXRh
aW5QdHI8VUlQREZTZWxlY3Rpb24+IHByZXZpb3VzRmluZFNlbGVjdGlvbiA9IF9jdXJyZW50Rmlu
ZFNlbGVjdGlvbjsKLSAgICB1bnNpZ25lZCBwcmV2aW91c0ZpbmRQYWdlSW5kZXggPSAwOwotICAg
IGlmIChwcmV2aW91c0ZpbmRTZWxlY3Rpb24pIHsKLSAgICAgICAgcHJldmlvdXNGaW5kUGFnZUlu
ZGV4ID0gX2N1cnJlbnRGaW5kUGFnZUluZGV4OwotICAgICAgICBpZiAoIVtfY2FjaGVkRmluZFN0
cmluZyBpc0VxdWFsVG9TdHJpbmc6c3RyaW5nXSkgewotICAgICAgICAgICAgTlNVSW50ZWdlciBs
b2NhdGlvbiA9IFtfY3VycmVudEZpbmRTZWxlY3Rpb24gc3RhcnRJbmRleF07Ci0gICAgICAgICAg
ICBpZiAobG9jYXRpb24pCi0gICAgICAgICAgICAgICAgcHJldmlvdXNGaW5kU2VsZWN0aW9uID0g
YWRvcHROUyhbW1VJUERGU2VsZWN0aW9uIGFsbG9jXSBpbml0V2l0aFBhZ2U6W19jdXJyZW50Rmlu
ZFNlbGVjdGlvbiBwYWdlXSBmcm9tSW5kZXg6bG9jYXRpb24gLSAxIHRvSW5kZXg6bG9jYXRpb25d
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmluZE9w
dGlvbnMgPSBzdHJpbmdDb21wYXJlT3B0aW9ucyhvcHRpb25zKTsKLSAgICBib29sIGJhY2t3YXJk
cyA9IChvcHRpb25zICYgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMpOwotICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLQotICAgIFtzZWxmIF9j
b21wdXRlTWF0Y2hlc0ZvclN0cmluZzpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENvdW50Om1h
eENvdW50IGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAgIGlmICgh
c3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB1bnNpZ25lZCBwYWdlSW5k
ZXggPSBwcmV2aW91c0ZpbmRQYWdlSW5kZXg7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBfcGFnZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFVJUERGU2VsZWN0aW9uICpt
YXRjaCA9IFtfcGFnZXNbcGFnZUluZGV4XS5wYWdlIGZpbmRTdHJpbmc6c3RyaW5nIGZyb21TZWxl
Y3Rpb246KHBhZ2VJbmRleCA9PSBwcmV2aW91c0ZpbmRQYWdlSW5kZXggPyBwcmV2aW91c0ZpbmRT
ZWxlY3Rpb24uZ2V0KCkgOiBuaWwpIG9wdGlvbnM6ZmluZE9wdGlvbnNdOwotCi0gICAgICAgICAg
ICBpZiAoIW1hdGNoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYWdlSW5kZXggJiYgYmFja3dh
cmRzKQotICAgICAgICAgICAgICAgICAgICBwYWdlSW5kZXggPSBfcGFnZXMuc2l6ZSgpIC0gMTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChwYWdlSW5kZXggPT0gX3BhZ2VzLnNpemUoKSAtIDEg
JiYgIWJhY2t3YXJkcykKLSAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4ID0gMDsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleCArPSBiYWNrd2Fy
ZHMgPyAtMSA6IDE7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIFtzZWxmIF9kaWRGaW5kTWF0Y2g6bWF0Y2hdOwotCi0gICAgICAgICAgICBp
ZiAoX2NhY2hlZEZpbmRNYXRjaGVzLnNpemUoKSA8PSBtYXhDb3VudCkgewotICAgICAgICAgICAg
ICAgIF9jdXJyZW50RmluZE1hdGNoSW5kZXggPSAwOwotICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYga25vd25NYXRjaCA6IF9jYWNoZWRGaW5kTWF0Y2hlcykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAobWF0Y2guc3RyaW5nUmFuZ2UubG9jYXRpb24gPT0gW2tub3duTWF0Y2ggc3Ry
aW5nUmFuZ2VdLmxvY2F0aW9uICYmIG1hdGNoLnN0cmluZ1JhbmdlLmxlbmd0aCA9PSBba25vd25N
YXRjaCBzdHJpbmdSYW5nZV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWdl
LT5maW5kQ2xpZW50KCkuZGlkRmluZFN0cmluZyhwYWdlLmdldCgpLCBzdHJpbmcsIHsgfSwgX2Nh
Y2hlZEZpbmRNYXRjaGVzLnNpemUoKSwgX2N1cnJlbnRGaW5kTWF0Y2hJbmRleCwgZmFsc2UpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgX2N1cnJlbnRGaW5kTWF0Y2hJbmRleCsrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBwYWdlLT5maW5kQ2xpZW50KCkuZGlkRmFpbFRvRmluZFN0cmluZyhw
YWdlLmdldCgpLCBzdHJpbmcpOwotICAgIH1dOwotfQotCi0tICh2b2lkKXdlYl9oaWRlRmluZFVJ
Ci17Ci0gICAgaWYgKF9jdXJyZW50RmluZFNlbGVjdGlvbikKLSAgICAgICAgW19wYWdlc1tfY3Vy
cmVudEZpbmRQYWdlSW5kZXhdLnZpZXcgY2xlYXJTZWFyY2hIaWdobGlnaHRzXTsKLQotICAgIF9j
dXJyZW50RmluZFNlbGVjdGlvbiA9IG51bGxwdHI7Ci0gICAgX2NhY2hlZEZpbmRTdHJpbmcgPSBu
dWxscHRyOwotICAgIF9jYWNoZWRGaW5kTWF0Y2hlcy5jbGVhcigpOwotfQotCi0jcHJhZ21hIG1h
cmsgVUlQREZQYWdlVmlld0RlbGVnYXRlCi0KLS0gKHZvaWQpem9vbTooVUlQREZQYWdlVmlldyAq
KXBhZ2VWaWV3IHRvOihDR1JlY3QpdGFyZ2V0UmVjdCBhdFBvaW50OihDR1BvaW50KW9yaWdpbiBr
aW5kOihVSVBERk9iamVjdEtpbmQpa2luZAotewotICAgIF9pc1N0YXJ0aW5nWm9vbSA9IFlFUzsK
LQotICAgIEJPT0wgaXNJbWFnZSA9IGtpbmQgPT0ga1VJUERGT2JqZWN0S2luZEdyYXBoaWM7Ci0K
LSAgICBpZiAoIWlzSW1hZ2UpCi0gICAgICAgIHRhcmdldFJlY3QgPSBDR1JlY3RJbnNldCh0YXJn
ZXRSZWN0LCBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyAqIHRhcmdldFJlY3Quc2l6
ZS53aWR0aCwgc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0YXJnZXRSZWN0LnNp
emUuaGVpZ2h0KTsKLQotICAgIENHUmVjdCByZWN0SW5Eb2N1bWVudENvb3JkaW5hdGVzID0gW3Bh
Z2VWaWV3IGNvbnZlcnRSZWN0OnRhcmdldFJlY3QgdG9WaWV3OnNlbGZdOwotICAgIENHUG9pbnQg
b3JpZ2luSW5Eb2N1bWVudENvb3JkaW5hdGVzID0gW3BhZ2VWaWV3IGNvbnZlcnRQb2ludDpvcmln
aW4gdG9WaWV3OnNlbGZdOwotCi0gICAgW193ZWJWaWV3IF96b29tVG9SZWN0OnJlY3RJbkRvY3Vt
ZW50Q29vcmRpbmF0ZXMgd2l0aE9yaWdpbjpvcmlnaW5JbkRvY3VtZW50Q29vcmRpbmF0ZXMgZml0
RW50aXJlUmVjdDppc0ltYWdlIG1pbmltdW1TY2FsZTpwZGZNaW5pbXVtWm9vbVNjYWxlIG1heGlt
dW1TY2FsZTpwZGZNYXhpbXVtWm9vbVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKLQot
ICAgIF9pc1N0YXJ0aW5nWm9vbSA9IE5POwotfQotCi0tICh2b2lkKXJlc2V0Wm9vbTooVUlQREZQ
YWdlVmlldyAqKXBhZ2VWaWV3Ci17Ci0gICAgW3NlbGYgX3Jlc2V0Wm9vbUFuaW1hdGVkOllFU107
Ci19Ci0KLSNwcmFnbWEgbWFyayBVSVBERkFubm90YXRpb25Db250cm9sbGVyRGVsZWdhdGUKLQot
LSAodm9pZClhbm5vdGF0aW9uOihVSVBERkFubm90YXRpb24gKilhbm5vdGF0aW9uIHdhc1RvdWNo
ZWRBdFBvaW50OihDR1BvaW50KXBvaW50IGNvbnRyb2xsZXI6KFVJUERGQW5ub3RhdGlvbkNvbnRy
b2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgaWYgKCFbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNz
OltVSVBERkxpbmtBbm5vdGF0aW9uIGNsYXNzXV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFVJ
UERGTGlua0Fubm90YXRpb24gKmxpbmtBbm5vdGF0aW9uID0gKFVJUERGTGlua0Fubm90YXRpb24g
Kilhbm5vdGF0aW9uOwotICAgIFJldGFpblB0cjxOU1VSTD4gdXJsID0gW3NlbGYgX1VSTEZvckxp
bmtBbm5vdGF0aW9uOmxpbmtBbm5vdGF0aW9uXTsKLSAgICBpZiAoIXVybCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ0dQb2ludCBkb2N1bWVudFBvaW50ID0gW2NvbnRyb2xsZXIucGFnZVZpZXcg
Y29udmVydFBvaW50OnBvaW50IHRvVmlldzpzZWxmXTsKLSAgICBDR1BvaW50IHNjcmVlblBvaW50
ID0gW3NlbGYud2luZG93IGNvbnZlcnRQb2ludDpbc2VsZiBjb252ZXJ0UG9pbnQ6ZG9jdW1lbnRQ
b2ludCB0b1ZpZXc6bmlsXSB0b1dpbmRvdzpuaWxdOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHJldGFpbmVkV2ViVmlldyA9IF93ZWJWaWV3OwotCi0gICAgW3NlbGYgX2hpZ2hsaWdodExpbmtB
bm5vdGF0aW9uOmxpbmtBbm5vdGF0aW9uIGZvckR1cmF0aW9uOi4yIGNvbXBsZXRpb25IYW5kbGVy
Ol57Ci0gICAgICAgIHJldGFpbmVkV2ViVmlldy0+X3BhZ2UtPm5hdmlnYXRlVG9QREZMaW5rV2l0
aFNpbXVsYXRlZENsaWNrKFt1cmwgYWJzb2x1dGVTdHJpbmddLCBXZWJDb3JlOjpyb3VuZGVkSW50
UG9pbnQoZG9jdW1lbnRQb2ludCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChzY3JlZW5Qb2lu
dCkpOwotICAgIH1dOwotfQotCi0tICh2b2lkKWFubm90YXRpb246KFVJUERGQW5ub3RhdGlvbiAq
KWFubm90YXRpb24gaXNCZWluZ1ByZXNzZWRBdFBvaW50OihDR1BvaW50KXBvaW50IGNvbnRyb2xs
ZXI6KFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgaWYgKCFb
YW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOltVSVBERkxpbmtBbm5vdGF0aW9uIGNsYXNzXV0pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFVJUERGTGlua0Fubm90YXRpb24gKmxpbmtBbm5vdGF0aW9u
ID0gKFVJUERGTGlua0Fubm90YXRpb24gKilhbm5vdGF0aW9uOwotICAgIE5TVVJMICp1cmwgPSBb
c2VsZiBfVVJMRm9yTGlua0Fubm90YXRpb246bGlua0Fubm90YXRpb25dOwotICAgIGlmICghdXJs
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBv
aW50ID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZl
cnRQb2ludDpwb2ludCB0b1ZpZXc6c2VsZl0pOwotCi0gICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24u
dXJsID0gdXJsOwotICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyA9IFdlYkNvcmU6OnJv
dW5kZWRJbnRSZWN0KFtzZWxmIGNvbnZlcnRSZWN0Oltjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZl
cnRSZWN0RnJvbVBERlBhZ2VTcGFjZTphbm5vdGF0aW9uLlJlY3RdIGZyb21WaWV3OmNvbnRyb2xs
ZXIucGFnZVZpZXddKTsKLQotICAgIFtzZWxmIF9oaWdobGlnaHRMaW5rQW5ub3RhdGlvbjpsaW5r
QW5ub3RhdGlvbiBmb3JEdXJhdGlvbjouNzUgY29tcGxldGlvbkhhbmRsZXI6XnsKLSAgICAgICAg
W19hY3Rpb25TaGVldEFzc2lzdGFudCBzaG93TGlua1NoZWV0XTsKLSAgICB9XTsKLX0KLQotI3By
YWdtYSBtYXJrIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZQotCi0tIChPcHRpb25hbDxX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uPilwb3NpdGlvbkluZm9ybWF0
aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQKLXsKLSAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb247Ci19Ci0KLS0gKHZvaWQp
YWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQg
cGVyZm9ybUFjdGlvbjooV2ViS2l0OjpTaGVldEFjdGlvbilhY3Rpb24KLXsKLSAgICBpZiAoYWN0
aW9uICE9IFdlYktpdDo6U2hlZXRBY3Rpb246OkNvcHkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IE5TRGljdGlvbmFyeSAqcmVwcmVzZW50YXRpb25zID0gQHsKLSAgICAgICAgKE5TU3RyaW5nICop
a1VUVHlwZVVURjhQbGFpblRleHQgOiAoTlNTdHJpbmcgKilfcG9zaXRpb25JbmZvcm1hdGlvbi51
cmwsCi0gICAgICAgIChOU1N0cmluZyAqKWtVVFR5cGVVUkwgOiAoTlNVUkwgKilfcG9zaXRpb25J
bmZvcm1hdGlvbi51cmwKLSAgICB9OwotCi0gICAgW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVi
b2FyZF0uaXRlbXMgPSBAWyByZXByZXNlbnRhdGlvbnMgXTsKLX0KLQotLSAodm9pZClhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBvcGVuRWxl
bWVudEF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KLXsKLSAgICBDR1BvaW50IHNjcmVlblBv
aW50ID0gW3NlbGYud2luZG93IGNvbnZlcnRQb2ludDpbc2VsZiBjb252ZXJ0UG9pbnQ6bG9jYXRp
b24gdG9WaWV3Om5pbF0gdG9XaW5kb3c6bmlsXTsKLSAgICBfd2ViVmlldy0+X3BhZ2UtPm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybCwg
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KHNjcmVlblBvaW50KSk7Ci19Ci0KLS0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdL
QWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVSTDooTlNV
UkwgKil1cmwgcmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdAotewotICAgIF93ZWJTZWxlY3Rpb25B
c3Npc3RhbnQgPSBhZG9wdE5TKFtbVUlXS1NlbGVjdGlvbkFzc2lzdGFudCBhbGxvY10gaW5pdFdp
dGhWaWV3OnNlbGZdKTsKLSAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVl
dEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsK
LSAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwotfQotCi0jaWYgSEFWRShBUFBfTElO
S1MpCi0tIChCT09MKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICopYXNzaXN0YW50IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudAotewotICAgIHJldHVybiBfd2ViVmlldy0+X3Bh
Z2UtPnVpQ2xpZW50KCkuc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudChlbGVt
ZW50KTsKLX0KLSNlbmRpZgotCi0tIChSZXRhaW5QdHI8TlNBcnJheT4pYWN0aW9uU2hlZXRBc3Np
c3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgZGVjaWRlQWN0aW9uc0Zv
ckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9u
czooUmV0YWluUHRyPE5TQXJyYXk+KWRlZmF1bHRBY3Rpb25zCi17Ci0gICAgcmV0dXJuIF93ZWJW
aWV3LT5fcGFnZS0+dWlDbGllbnQoKS5hY3Rpb25zRm9yRWxlbWVudChlbGVtZW50LCBXVEZNb3Zl
KGRlZmF1bHRBY3Rpb25zKSk7Ci19Ci0KLSNwcmFnbWEgbWFyayBQYXNzd29yZCBwcm90ZWN0aW9u
IFVJCi0KLS0gKHZvaWQpX3Nob3dQYXNzd29yZEVudHJ5RmllbGQKLXsKLSAgICBbX3dlYlZpZXcg
X3Nob3dQYXNzd29yZFZpZXdXaXRoRG9jdW1lbnROYW1lOl9zdWdnZXN0ZWRGaWxlbmFtZS5nZXQo
KSBwYXNzd29yZEhhbmRsZXI6W3JldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgd2ViVmll
dyA9IHJldGFpblB0cihfd2ViVmlldyldKE5TU3RyaW5nICpwYXNzd29yZCkgewotICAgICAgICBp
ZiAoIUNHUERGRG9jdW1lbnRVbmxvY2tXaXRoUGFzc3dvcmQocmV0YWluZWRTZWxmLT5fY2dQREZE
b2N1bWVudC5nZXQoKSwgcGFzc3dvcmQuVVRGOFN0cmluZykpIHsKLSAgICAgICAgICAgIFtbd2Vi
VmlldyBfcGFzc3dvcmRWaWV3XSBzaG93UGFzc3dvcmRGYWlsdXJlQWxlcnRdOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgW3dlYlZpZXcgX2hpZGVQYXNzd29yZFZp
ZXddOwotICAgICAgICBbcmV0YWluZWRTZWxmIF9kaWRMb2FkUERGRG9jdW1lbnRdOwotICAgIH1d
OwotfQotCi0tIChCT09MKXdlYl9pc0JhY2tncm91bmQKLXsKLSAgICByZXR1cm4gW3NlbGYgaXNC
YWNrZ3JvdW5kXTsKLX0KLQotLSAodm9pZClfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
Ci17Ci0gICAgW3N1cGVyIF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdOwotICAgIC8v
IEZJWE1FOiBJcyBpdCByZWFsbHkgbmVjZXNzYXJ5IHRvIGhpZGUgdGhlIHdlYiBjb250ZW50IGRy
YXdpbmcgYXJlYSB3aGVuIGEgUERGIGlzIGRpc3BsYXllZD8KLSAgICBpZiAoYXV0byBkcmF3aW5n
QXJlYSA9IF93ZWJWaWV3LT5fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgZHJhd2luZ0Fy
ZWEtPmhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKTsKLX0KLQotQGVuZAotCi0jcHJhZ21hIG1h
cmsgUHJpbnRpbmcKLQotI2lmICFQTEFURk9STShJT1NNQUMpCi0KLUBpbnRlcmZhY2UgV0tMZWdh
Y3lQREZWaWV3IChfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIpIDxfV0tXZWJWaWV3UHJpbnRQcm92
aWRlcj4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLTGVnYWN5UERGVmlldyAoX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVyKQotCi0tIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZv
cm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXIKLXsKLSAg
ICBDR1BERkRvY3VtZW50UmVmIGRvY3VtZW50ID0gX2NnUERGRG9jdW1lbnQuZ2V0KCk7Ci0gICAg
aWYgKCFDR1BERkRvY3VtZW50QWxsb3dzUHJpbnRpbmcoZG9jdW1lbnQpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIHNpemVfdCBudW1iZXJPZlBhZ2VzID0gQ0dQREZEb2N1bWVudEdldE51bWJl
ck9mUGFnZXMoZG9jdW1lbnQpOwotICAgIGlmIChwcmludEZvcm1hdHRlci5zbmFwc2hvdEZpcnN0
UGFnZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluPE5TVUludGVnZXI+KG51bWJlck9mUGFnZXMs
IDEpOwotCi0gICAgcmV0dXJuIG51bWJlck9mUGFnZXM7Ci19Ci0KLS0gKENHUERGRG9jdW1lbnRS
ZWYpX3drX3ByaW50ZWREb2N1bWVudAotewotICAgIHJldHVybiBfY2dQREZEb2N1bWVudC5nZXQo
KTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU01BQykKLQotQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSNlbmRpZiAvLyBFTkFCTEUoV0tMRUdBQ1lQREZW
SUVXKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzBmMTJjNTZhMjIwMzYyNzVjZDgxYWFiMjMzNmY3NWI1NDFmZDYyZS4uZWUzYjM3M2Fh
NmM2ZWI2OGQxYmVlNjkzNDk3YjNlOTQzMWZmNWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTgsNyArNjE4LDYgQEAKIAkJMkQ2
QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QUI1M0YxOTJCMUM0
QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oICovOyB9OwogCQkyRDZCMzcx
QjE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8q
IF9XS1RodW1ibmFpbFZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyRDZCRjEyNDIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkJG
MTIyMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oICovOyB9OwotCQkyRDZD
RDExQjE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMUExODkwNThBNTAwRTVB
NEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmNwcCAqLzsgfTsKIAkJMkQ2Q0QxMTkxODkwNThBNTAw
RTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBz
aG90U3RvcmUuaCAqLzsgfTsKIAkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFCMTZBREIxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tICovOyB9OwogCQkyRDczMDM3OTFBN0MyQjc1MDBGOEY0ODcgLyogV0tQYWdl
TmF2aWdhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ3MzAzNzgxQTdDMkI3NTAwRjhGNDg3IC8qIFdLUGFnZU5hdmlnYXRpb25DbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NzA0LDcgKzcwMyw2IEBACiAJCTJEOUVBMzBGMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEOUVBMzBFMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCAqLzsgfTsKIAkJMkRBMDQ5QjQxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5o
ICovOyB9OwogCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVt
b3RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEw
NDlCNjE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi87IH07Ci0J
CTJEQTFFNEZFMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTFFNEZDMThDMDJCNkEwMERC
QzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCAqLzsgfTsKIAkJMkRBNjczMUEyMEM3NTRCMTAwM0NC
NDAxIC8qIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTY3MzE5MjBDNzU0QjEwMDNDQjQwMSAvKiBEeW5h
bWljVmlld3BvcnRTaXplVXBkYXRlLmggKi87IH07CiAJCTJEQTk0NEEwMTg4NEU0RjAwMEVEODZE
QiAvKiBXZWJJT1NFdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEQTk0NDk5MTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZh
Y3RvcnkuaCAqLzsgfTsKIAkJMkRBOTQ0QTQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovOyB9OwpAQCAtMTU3Miw3ICsx
NTcwLDYgQEAKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLmggKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTEx
Q0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CiAJCUNFMUEwQkQyMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07Ci0JCUNFMUEwQkQzMUE0OEU2QzYwMDU0RUY3NCAv
KiBDb3JlUERGU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovOyB9OwogCQlD
RTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkNGMUE0OEU2
QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oICovOyB9OwogCQlDRTFBMEJE
NjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmgg
Ki87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQxMUE0OEU2
QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKQEAgLTI0NjgsNyArMjQ2NSw2IEBA
CiAJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZFBhcmFtZXRlcnNDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxMjVDNUMxODU3RUEwNTAwM0JB
M0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2Q0QxMTgx
ODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmVNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMTJEQUI0MjA2NjJDNzMwMDZGMDBGQiAvKiBXS0Fu
aW1hdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQW5p
bWF0aW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxQjVENUEx
ODU4NjU5OTAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEMUI1RDVCMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTI1NDQsNiArMjU0MCw3
IEBACiAJCTJENkJGMTIxMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBlbmNpbEtpdFNvZnRMaW5r
Lm1tOyBwYXRoID0gaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVuY2lsS2l0U29mdExpbmsuaDsg
cGF0aCA9IGlvcy9QZW5jaWxLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2Q0QxMTgxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdT
bmFwc2hvdFN0b3JlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVmlld1NuYXBzaG90U3RvcmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJENkNEMTFBMTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3U25hcHNob3RTdG9yZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzMwMzc4MUE3QzJCNzUwMEY4RjQ4NyAvKiBX
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUGFnZU5hdmlnYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQ3OTBBOUMxQUQ3MDUwRDAwQUI5MEIzIC8qIF9XS0xheW91dE1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLTGF5b3V0TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjczMyw4ICsyNzMwLDYgQEAKIAkJMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlF
IC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRBMDQ5QjUxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1v
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREEwNDlCNjE4MENDRDBBMDBB
QUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkyREExRTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTGVnYWN5UERGVmlldy5oOyBwYXRoID0g
aW9zL1dLTGVnYWN5UERGVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREEx
RTRGRDE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tMZWdhY3lQREZWaWV3Lm1tOyBwYXRoID0gaW9z
L1dLTGVnYWN5UERGVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBNjcz
MTkyMEM3NTRCMTAwM0NCNDAxIC8qIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oOyBw
YXRoID0gaW9zL0R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRBN0ZEQ0IxOEY4ODYyNTAwOERERUQwIC8qIEZpbmRJbmRpY2F0b3JPdmVy
bGF5Q2xpZW50SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50
SU9TLmg7IHBhdGggPSBpb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OTcxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2
ZVdlYktleWJvYXJkRXZlbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tOyBwYXRoID0gaW9zL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDAz
LDcgKzQzOTgsNiBAQAogCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2RlU2lnbmluZy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1
IC8qIENvZGVTaWduaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVT
aWduaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUEwQkNDMUE0OEU2QzYw
MDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlUERGU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFMUEwQkNGMUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJh
dGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYW5hZ2VkQ29uZmln
dXJhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhF
NkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRDQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2
MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTg1Niw4
ICs1ODUwLDYgQEAKIAkJCQlBNTQyOTNBMzE5NUE0M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0gKi8sCiAJCQkJMkRENUUxMjcyMTBBREM3QTAw
REI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oICovLAogCQkJCTJERDVFMTI2
MjEwQURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gKi8sCi0J
CQkJMkRBMUU0RkMxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5oICovLAotCQkJ
CTJEQTFFNEZEMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcubW0gKi8sCiAJCQkJ
QTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggKi8sCiAJCQkJQTE1
RUVERTMxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3Lm1tICovLAogCQkJCTJENkFC
NTNGMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCAqLywKQEAg
LTc0NjQsOCArNzQ1Niw4IEBACiAJCQkJQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovLAogCQkJCUM5QzE4MzM3MUI3M0ZENkEwMDcwMzZB
NyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwICovLAogCQkJCUM5QzE4
MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQu
aCAqLywKKwkJCQkyRDNFRjQ0MDE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcCAqLywKIAkJCQkyRDNFRjQ0MTE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmggKi8sCi0JCQkJMkQzRUY0NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdl
Yk1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSAqLywKIAkJCQk3Q0NDQzhGODFBNUY1MEZEMDA4RkIw
REEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmNwcCAqLywKIAkJCQk3Q0NDQzhGOTFBNUY1MEZEMDA4
RkIwREEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmggKi8sCiAJCQkJQkMxREZFQTMxMkIzMUY4NzAw
NURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovLApAQCAtODY4
OCw3ICs4NjgwLDYgQEAKIAkJCQkyREI3NjY3MDIxQjVFNDhBMDA0NUREQjEgLyogQWNjZXNzaWJp
bGl0eVN1cHBvcnRTUEkuaCAqLywKIAkJCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNz
ZXJ0aW9uU2VydmljZXNTUEkuaCAqLywKIAkJCQlDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyog
QmFja0JvYXJkU2VydmljZXNTUEkuaCAqLywKLQkJCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQg
LyogQ29yZVBERlNQSS5oICovLAogCQkJCTJENEFGMDg4MjA0NEMzQzQwMDZDODgxNyAvKiBGcm9u
dEJvYXJkU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyog
TWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLywKIAkJCQlBMTNCM0RBMTIwN0YzOURFMDA5MEM1
OEQgLyogTW9iaWxlV2lGaVNQSS5oICovLApAQCAtOTAzMSw3ICs5MDIyLDYgQEAKIAkJCQkzN0M0
RTlGNjEzMUM2RTdFMDAyOUJENUEgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAz
MkRBQjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUNFMUEwQkQzMUE0OEU2QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzN0MyMUNBRTFFOTk0QzBDMDAyOUQ1RjkgLyogQ29yZVByZWRp
Y3Rpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAv
KiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRkI2ODI3MUY2RTUxQzEw
MEM0M0Y5RiAvKiBDcmFzaFJlcG9ydGVyQ2xpZW50U1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTk3
NzEsNyArOTc2MSw2IEBACiAJCQkJMkRENUUxMjkyMTBBREM3QjAwREI2MDEyIC8qIFdLS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBOUUxMEIxMzE1Q0Qx
ODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ3OTBBOUYxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9kZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUM1Q0VDMzAyMjA5MTFDNzAwRDZCQkIwIC8qIFdLTWFpbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUNENDM5RDFCNEIwMjRGMDAy
MzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361857</attachid>
            <date>2019-02-12 15:52:40 -0800</date>
            <delta_ts>2019-02-12 21:04:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194559-20190212155239.patch</filename>
            <type>text/plain</type>
            <size>57341</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgyM2FiMDZhOWZhY2FhZDBjN2IyMWEx
ZjRmZmQ2ZmEzMDhkM2NhMjkuLjM3YTZiZWM1NGVlOThkYjMyMzg1YWVmYzk0NThmY2YzZGEzYmEz
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdLTGVnYWN5UERGVmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTU5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmVhdHVy
ZURlZmluZXMuaDoKKwogMjAxOS0wMi0xMSAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDEyMjkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDQyNTMzZTM1ZmM2MWVkOWYyNmY3ZTg2NDgxMTJiMDNiMWNiZTg4YTcuLjRmYzk1NjliYjQ2
YmQ5YWVlYzJmNGNkZTI5Mjk2MDg1YmMzNmM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTktMDItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIFdLTGVnYWN5UERGVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW06IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDItMTEgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgQXV0b21hdGlv
bjogY2xpZW50IGNhbGxiYWNrcyBhcmUgbm90IGNhbGxlZCBpZiBkZWxlZ2F0ZSBkb2VzIG5vdCBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggN2JiZjk3MDk5YjBiNWViNjVkNGNk
ODk4YWM2YmFlNzEyZTU5MWE4OS4uY2Y5MmM1YjEyNDdiOGE1ZmE2M2YyOTgxZDkzZjI3OGExYzky
YjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0xNjUsMTIgKzE2NSw2IEBAIHRoZSBw
dWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzkxNjc+LiAqLwogI2Rl
ZmluZSBFTkFCTEVfRE9XTkxPQURfQVRUUklCVVRFIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
RU5BQkxFX1dLTEVHQUNZUERGVklFVykKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShJT1NNQUMp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTIwMDAwCi0jZGVmaW5lIEVO
QUJMRV9XS0xFR0FDWVBERlZJRVcgMQotI2VuZGlmCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVO
QUJMRV9XS1BERlZJRVcpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKSAmJiAhUExBVEZPUk0oSU9TTUFDKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICNkZWZpbmUgRU5BQkxFX1dL
UERGVklFVyAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvQ29y
ZVBERlNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY1ZDY2M2M1NTRiOGY3YTY1M2JiNTcwYzgy
ODY4ZDNhZTdhYTkzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvQ29yZVBERlNQSS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFdLTEVHQUNZ
UERGVklFVykgfHwgRU5BQkxFKFdLUERGVklFVykKLQotI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljcy5oPgotI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KLQotI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCi0KLSNpbXBvcnQgPENvcmVQREYvVUlQREZBbm5vdGF0aW9uQ29udHJvbGxl
ci5oPgotI2ltcG9ydCA8Q29yZVBERi9VSVBERkRvY3VtZW50Lmg+Ci0jaW1wb3J0IDxDb3JlUERG
L1VJUERGTGlua0Fubm90YXRpb24uaD4KLSNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlLmg+Ci0j
aW1wb3J0IDxDb3JlUERGL1VJUERGUGFnZVZpZXcuaD4KLSNpbXBvcnQgPENvcmVQREYvVUlQREZT
ZWxlY3Rpb24uaD4KLQotI2Vsc2UKLQotQGNsYXNzIFVJUERGU2VsZWN0aW9uOwotCi1AaW50ZXJm
YWNlIFVJUERGUGFnZSA6IE5TT2JqZWN0Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZQYWdlICgp
Ci0tIChDR1JlY3QpY3JvcEJveEFjY291bnRGb3JSb3RhdGlvbjsKLS0gKFVJUERGU2VsZWN0aW9u
ICopZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZnJvbVNlbGVjdGlvbjooVUlQREZTZWxl
Y3Rpb24gKilzZWxlY3Rpb24gb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylvcHRpb25z
OwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgOiBOU09iamVjdAotQGVuZAotCi1A
aW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgKCkKLS0gKFVJUERGUGFnZSAqKXBhZ2VBdEluZGV4OihO
U1VJbnRlZ2VyKWluZGV4OwotLSAoaWQpaW5pdFdpdGhDR1BERkRvY3VtZW50OihDR1BERkRvY3Vt
ZW50UmVmKWRvY3VtZW50OwotQHByb3BlcnR5IChhc3NpZ24sIHJlYWRvbmx5KSBOU1VJbnRlZ2Vy
IG51bWJlck9mUGFnZXM7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBDR1BERkRvY3VtZW50UmVmIENH
RG9jdW1lbnQ7Ci1AZW5kCi0KLXR5cGVkZWYgZW51bSB7Ci0gICAga1VJUERGT2JqZWN0S2luZEdy
YXBoaWMgPSAxLAotICAgIGtVSVBERk9iamVjdEtpbmRUZXh0ID0gMgotfSBVSVBERk9iamVjdEtp
bmQ7Ci0KLUBjbGFzcyBVSVBERlBhZ2VWaWV3OwotQHByb3RvY29sIFVJUERGQW5ub3RhdGlvbkNv
bnRyb2xsZXJEZWxlZ2F0ZTsKLQotQGludGVyZmFjZSBVSVBERkFubm90YXRpb25Db250cm9sbGVy
IDogTlNPYmplY3Q8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPgotQGVuZAotCi1AaW50ZXJm
YWNlIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIgKCkKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgVUlQREZQYWdlVmlldyAqcGFnZVZpZXc7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBpZDxOU09iamVjdCwgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRlPiBk
ZWxlZ2F0ZTsKLUBlbmQKLQotQHByb3RvY29sIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZTsKLQotQGlu
dGVyZmFjZSBVSVBERlBhZ2VWaWV3IDogVUlWaWV3Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZQ
YWdlVmlldyAoKQotLSAoaWQpaW5pdFdpdGhQYWdlOihVSVBERlBhZ2UgKikgcGFnZSB0aWxlZENv
bnRlbnQ6KEJPT0wpdGlsZWQ7Ci0tIChDR1JlY3QpY29udmVydFJlY3RGcm9tUERGUGFnZVNwYWNl
OihDR1JlY3QpcDsKLS0gKHZvaWQpaGlnaGxpZ2h0U2VhcmNoU2VsZWN0aW9uOihVSVBERlNlbGVj
dGlvbiAqKXNlbGVjdGlvbiBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKLS0gKHZvaWQpY2xlYXJT
ZWFyY2hIaWdobGlnaHRzOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCB1c2VC
YWNraW5nTGF5ZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZDxOU09iamVjdCwg
VUlQREZQYWdlVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQ0FMYXllciAqY29udGVudExheWVyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBVSVBERkFubm90YXRpb25Db250cm9sbGVyICphbm5vdGF0aW9uQ29udHJvbGxlcjsK
LUBlbmQKLQotQHByb3RvY29sIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZQotQG9wdGlvbmFsCi0tIChC
T09MKXNlbGVjdGlvbldpbGxUcmFjazooVUlQREZQYWdlVmlldyopcGFnZVZpZXc7Ci0tIChCT09M
KXNob3VsZFJlY29nbml6ZVRhcEluOihVSVBERlBhZ2VWaWV3ICopcGFnZVZpZXcgYXRQb2ludDoo
Q0dQb2ludClwb2ludDsKLS0gKENsYXNzKWNsYXNzRm9yQW5ub3RhdGlvblR5cGU6KGNvbnN0IGNo
YXIgKil0eXBlOwotLSAodm9pZClkaWRUYXA6KFVJUERGUGFnZVZpZXcgKilwYWdlVmlldyBhdFBv
aW50OihDR1BvaW50KXBvaW50OwotLSAodm9pZClkb3VibGVUYXBJbjooVUlQREZQYWdlVmlldyAq
KXBhZ2VWaWV3IGF0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKXBhZ2VXYXNSZW5kZXJl
ZDooVUlQREZQYWdlVmlldyAqKXBhZ2VWaWV3OwotLSAodm9pZClyZXNldFpvb206KFVJUERGUGFn
ZVZpZXcgKilwYWdlVmlldzsKLS0gKHZvaWQpc2VsZWN0aW9uRGlkRW5kVHJhY2tpbmc6KFVJUERG
UGFnZVZpZXcgKilwYWdlVmlldzsKLS0gKHZvaWQpem9vbTooVUlQREZQYWdlVmlldyAqKXBhZ2VW
aWV3IHRvOihDR1JlY3QpcmVjdCBhdFBvaW50OihDR1BvaW50KXB0IGtpbmQ6KFVJUERGT2JqZWN0
S2luZClraW5kOwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGQW5ub3RhdGlvbiA6IE5TT2JqZWN0
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZBbm5vdGF0aW9uICgpCi0tIChDR1JlY3QpUmVjdDsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIq
IGFubm90YXRpb25Db250cm9sbGVyOwotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGTWFya3VwQW5u
b3RhdGlvbiA6IFVJUERGQW5ub3RhdGlvbgotQGVuZAotCi1AaW50ZXJmYWNlIFVJUERGTGlua0Fu
bm90YXRpb24gOiBVSVBERk1hcmt1cEFubm90YXRpb24KLUBlbmQKLQotQGludGVyZmFjZSBVSVBE
RkxpbmtBbm5vdGF0aW9uICgpCi0tIChOU1VSTCAqKXVybDsKLS0gKE5TVUludGVnZXIpcGFnZU51
bWJlcjsKLUBlbmQKLQotQHByb3RvY29sIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXJEZWxlZ2F0
ZQotQG9wdGlvbmFsCi0tICh2b2lkKWFubm90YXRpb246KFVJUERGQW5ub3RhdGlvbiAqKWFubm90
YXRpb24gd2FzVG91Y2hlZEF0UG9pbnQ6KENHUG9pbnQpIHBvaW50IGNvbnRyb2xsZXI6KFVJUERG
QW5ub3RhdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAodm9pZClhbm5vdGF0aW9uOihV
SVBERkFubm90YXRpb24gKilhbm5vdGF0aW9uIGlzQmVpbmdQcmVzc2VkQXRQb2ludDooQ0dQb2lu
dCkgcG9pbnQgY29udHJvbGxlcjooVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xs
ZXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlQREZTZWxlY3Rpb24gOiBOU09iamVjdAotQGVuZAot
Ci1AaW50ZXJmYWNlIFVJUERGU2VsZWN0aW9uICgpCi0tIChpZClpbml0V2l0aFBhZ2U6KFVJUERG
UGFnZSAqKXBhZ2UgZnJvbUluZGV4OihOU1VJbnRlZ2VyKXN0YXJ0SW5kZXggdG9JbmRleDooTlNV
SW50ZWdlcillbmRJbmRleDsKLS0gKENHUmVjdClib3VuZHM7Ci0tIChVSVBERlBhZ2UgKilwYWdl
OwotLSAoTlNVSW50ZWdlcilzdGFydEluZGV4OwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgQ0ZSYW5nZSBzdHJpbmdSYW5nZTsKLUBlbmQKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0tMRUdBQ1lQREZWSUVXKSB8fCBFTkFCTEUoV0tQREZWSUVXKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDlmZWUyYzZjYzE3ZjcxOTE2M2I5MWEwNjM2ODNhYmVmMjAzMGM3YTkuLjZjYTQ1
Y2E4Y2FhYTUzZGQ3ZGU1NTFmMzliOWE4MDMxNGVjNWJlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTQwMyw3ICs0MDMsNiBAQCBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCi1VSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5t
bQogVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0KIFVJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCmluZGV4IDZk
N2Y5MTdhYjRhOGYwNjdkYmMwMjIwYjc1YmFhYjA5OTIzMjUwZjMuLmMyYTMwMzM3YTI1YzliMjgw
NWRlOGVkYmMyNDFiYWFjYjk3NGFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
Lm1tCkBAIC0zMCw3ICszMCw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1w
b3J0ICJXS0xlZ2FjeVBERlZpZXcuaCIKICNpbXBvcnQgIldLUERGVmlldy5oIgogI2ltcG9ydCAi
V0tTeXN0ZW1QcmV2aWV3Vmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaCIKQEAgLTU1LDkgKzU0LDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmln
dXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICNpZiBFTkFC
TEUoV0tQREZWSUVXKQogICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRl
cjpbV0tQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07Ci0jZWxpZiBFTkFCTEUo
V0tMRUdBQ1lQREZWSUVXKQotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKLSAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92
aWRlcjpbV0tMZWdhY3lQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CiAjZW5k
aWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDFlOGUyZGY4NzgzYzk2OGQ5MTlkYTBiMGQ4
NjNmNzgzMGRkMGM3YzMuLmZjMDAxNjkxOWM3MTc2Y2FlZjI4ZjVmZjg4YjU5ODgyYzk4MTY3YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApA
QCAtMjYsMjAgKzI2LDMyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBGb3Jt
RGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0Oworc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwogY2xhc3MgU3VzcGVuZGVkUGFn
ZVByb3h5OworY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXZWJGcmFtZVByb3h5Owotc3RydWN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmU7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9j
ZXNzUHJveHk7CitzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKK3N0cnVjdCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YTsKK3N0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsKK3N0cnVjdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlOwogCiBjbGFzcyBQcm92aXNpb25hbFBhZ2VQcm94eSA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByb3Zpc2lvbmFsUGFnZVBy
b3h5PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGIyMWViN2MwYWIyOWQ4OGNmN2JjM2Y5NmRmMzdmZGYzNWYxMDc0ZmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZiBFTkFCTEUoV0tMRUdBQ1lQREZWSUVXKQotCi0jaW1wb3J0ICJDb3Jl
UERGU1BJLmgiCi0jaW1wb3J0ICJXS0FjdGlvblNoZWV0QXNzaXN0YW50LmgiCi0jaW1wb3J0ICJX
S0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCIKLSNpbXBvcnQgIldLV2ViVmlld0NvbnRl
bnRQcm92aWRlci5oIgotCi1AaW50ZXJmYWNlIFdLTGVnYWN5UERGVmlldyA6IFdLQXBwbGljYXRp
b25TdGF0ZVRyYWNraW5nVmlldyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLCBVSVBERlBhZ2VW
aWV3RGVsZWdhdGUsIFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tBY3Rpb25T
aGVldEFzc2lzdGFudERlbGVnYXRlPgotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdLTEVHQUNZ
UERGVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2Fj
eVBERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzEyMDg0OTUyYTU1ODM3OTRmZmYy
MzQ0YjAwZTk3MmU0YmUxNWQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw4NjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS0xlZ2FjeVBERlZpZXcuaCIKLQotI2lmIEVOQUJMRShX
S0xFR0FDWVBERlZJRVcpCi0KLSNpbXBvcnQgIkFQSUZpbmRDbGllbnQuaCIKLSNpbXBvcnQgIkFQ
SVVJQ2xpZW50LmgiCi0jaW1wb3J0ICJDb3JlUERGU1BJLmgiCi0jaW1wb3J0ICJEcmF3aW5nQXJl
YVByb3h5LmgiCi0jaW1wb3J0ICJTZXNzaW9uU3RhdGUuaCIKLSNpbXBvcnQgIlVJS2l0U1BJLmgi
Ci0jaW1wb3J0ICJXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCIKLSNpbXBvcnQgIldLUGFzc3dv
cmRWaWV3LmgiCi0jaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCi0jaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKLSNpbXBvcnQgIl9XS1dlYlZp
ZXdQcmludEZvcm1hdHRlckludGVybmFsLmgiCi0jaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMv
VVRDb3JlVHlwZXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+Ci0jaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KLSNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgotCi0vLyBBbGwgb2YgVUlQREZQYWdlKiBhcmUgZGVwcmVjYXRlZCwgc28ganVz
dCBpZ25vcmUgZGVwcmVjYXRlZCBkZWNsYXJhdGlvbnMKLS8vIGluIHRoaXMgZmlsZSB1bnRpbCB3
ZSBzd2l0Y2ggb2ZmIHRoZW0uCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
Ci1jb25zdCBDR0Zsb2F0IHBkZlBhZ2VNYXJnaW4gPSA4OwotY29uc3QgQ0dGbG9hdCBwZGZNaW5p
bXVtWm9vbVNjYWxlID0gMTsKLWNvbnN0IENHRmxvYXQgcGRmTWF4aW11bVpvb21TY2FsZSA9IDU7
Ci0KLWNvbnN0IGZsb2F0IG92ZXJkcmF3SGVpZ2h0TXVsdGlwbGllciA9IDEuNTsKLQotc3RhdGlj
IGNvbnN0IENHRmxvYXQgc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgPSAwLjA1Owot
Ci10eXBlZGVmIHN0cnVjdCB7Ci0gICAgQ0dSZWN0IGZyYW1lOwotICAgIFJldGFpblB0cjxVSVBE
RlBhZ2VWaWV3PiB2aWV3OwotICAgIFJldGFpblB0cjxVSVBERlBhZ2U+IHBhZ2U7Ci0gICAgdW5z
aWduZWQgaW5kZXg7Ci19IFBERlBhZ2VJbmZvOwotCi1AaW50ZXJmYWNlIFdLTGVnYWN5UERGVmll
dyAoKQotLSAodm9pZClfcmVzZXRab29tQW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7Ci1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBXS0xlZ2FjeVBERlZpZXcgewotICAgIFJldGFpblB0cjxDR1BERkRv
Y3VtZW50UmVmPiBfY2dQREZEb2N1bWVudDsKLSAgICBSZXRhaW5QdHI8VUlQREZEb2N1bWVudD4g
X3BkZkRvY3VtZW50OwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3N1Z2dlc3RlZEZpbGVuYW1l
OwotICAgIFJldGFpblB0cjxXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3I+IF9wYWdlTnVtYmVySW5k
aWNhdG9yOwotCi0gICAgVmVjdG9yPFBERlBhZ2VJbmZvPiBfcGFnZXM7Ci0gICAgdW5zaWduZWQg
X2NlbnRlclBhZ2VOdW1iZXI7Ci0KLSAgICBDR1NpemUgX21pbmltdW1TaXplOwotICAgIENHU2l6
ZSBfb3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0luc2V0OwotICAgIFdLV2ViVmlldyAqX3dlYlZpZXc7
Ci0gICAgVUlTY3JvbGxWaWV3ICpfc2Nyb2xsVmlldzsKLSAgICBVSVZpZXcgKl9maXhlZE92ZXJs
YXlWaWV3OwotCi0gICAgQk9PTCBfaXNTdGFydGluZ1pvb207Ci0gICAgQk9PTCBfaXNQZXJmb3Jt
aW5nU2FtZURvY3VtZW50TmF2aWdhdGlvbjsKLQotICAgIFJldGFpblB0cjxXS0FjdGlvblNoZWV0
QXNzaXN0YW50PiBfYWN0aW9uU2hlZXRBc3Npc3RhbnQ7Ci0gICAgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiBfcG9zaXRpb25JbmZvcm1hdGlvbjsKLQotICAgIHVuc2ln
bmVkIF9jdXJyZW50RmluZFBhZ2VJbmRleDsKLSAgICB1bnNpZ25lZCBfY3VycmVudEZpbmRNYXRj
aEluZGV4OwotICAgIFJldGFpblB0cjxVSVBERlNlbGVjdGlvbj4gX2N1cnJlbnRGaW5kU2VsZWN0
aW9uOwotCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfY2FjaGVkRmluZFN0cmluZzsKLSAgICBW
ZWN0b3I8UmV0YWluUHRyPFVJUERGU2VsZWN0aW9uPj4gX2NhY2hlZEZpbmRNYXRjaGVzOwotICAg
IHVuc2lnbmVkIF9jYWNoZWRGaW5kTWF4aW11bUNvdW50OwotICAgIF9XS0ZpbmRPcHRpb25zIF9j
YWNoZWRGaW5kT3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7Ci0KLSAgICBzdGQ6OmF0b21pYzx1bnNp
Z25lZD4gX25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEOwotICAgIFJldGFpblB0cjxOU1N0
cmluZz4gX25leHRDYWNoZWRGaW5kU3RyaW5nOwotICAgIHVuc2lnbmVkIF9uZXh0Q2FjaGVkRmlu
ZE1heGltdW1Db3VudDsKLSAgICBfV0tGaW5kT3B0aW9ucyBfbmV4dENhY2hlZEZpbmRPcHRpb25z
QWZmZWN0aW5nUmVzdWx0czsKLQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgX2ZpbmRRdWV1ZTsKLQot
ICAgIFJldGFpblB0cjxVSVdLU2VsZWN0aW9uQXNzaXN0YW50PiBfd2ViU2VsZWN0aW9uQXNzaXN0
YW50OwotCi0gICAgVUlFZGdlSW5zZXRzIF9sYXN0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQ7Ci0g
ICAgQ0dGbG9hdCBfbGFzdExheW91dFdpZHRoOwotfQotCi0tIChpbnN0YW5jZXR5cGUpd2ViX2lu
aXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3ICBt
aW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhGcmFtZTpmcmFtZSB3ZWJWaWV3OndlYlZpZXddKSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0gW1VJQ29sb3IgZ3JheUNvbG9yXTsKLQot
ICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKLQotICAgIF9zY3JvbGxWaWV3ID0gd2ViVmlldy5zY3Jv
bGxWaWV3OwotICAgIFtfc2Nyb2xsVmlldyBzZXRNaW5pbXVtWm9vbVNjYWxlOnBkZk1pbmltdW1a
b29tU2NhbGVdOwotICAgIFtfc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOnBkZk1heGlt
dW1ab29tU2NhbGVdOwotICAgIFtfc2Nyb2xsVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W1VJQ29s
b3IgZ3JheUNvbG9yXV07Ci0KLSAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtb
V0tBY3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKLSAgICBb
X2FjdGlvblNoZWV0QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwotCi0gICAgX2ZpbmRRdWV1
ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XS1BERlZpZXdDb21w
dXRlTWF0Y2hlc1F1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKLQotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotCi0gICAgW3NlbGYgX2NsZWFy
UGFnZXNdOwotICAgIFtfcGFnZU51bWJlckluZGljYXRvciByZW1vdmVGcm9tU3VwZXJ2aWV3XTsK
LSAgICBkaXNwYXRjaF9yZWxlYXNlKF9maW5kUXVldWUpOwotICAgIFtfYWN0aW9uU2hlZXRBc3Np
c3RhbnQgY2xlYW51cFNoZWV0XTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5TU3Ry
aW5nICopd2ViX3N1Z2dlc3RlZEZpbGVuYW1lCi17Ci0gICAgcmV0dXJuIF9zdWdnZXN0ZWRGaWxl
bmFtZS5nZXQoKTsKLX0KLQotLSAoTlNEYXRhICopd2ViX2RhdGFSZXByZXNlbnRhdGlvbgotewot
ICAgIHJldHVybiBbKE5TRGF0YSAqKUNHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dQREZEb2N1bWVu
dEdldERhdGFQcm92aWRlcihfY2dQREZEb2N1bWVudC5nZXQoKSkpIGF1dG9yZWxlYXNlXTsKLX0K
LQotc3RhdGljIHZvaWQgZGV0YWNoVmlld0ZvclBhZ2UoUERGUGFnZUluZm8mIHBhZ2UpCi17Ci0g
ICAgW3BhZ2UudmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICBbcGFnZS52aWV3IHNldERl
bGVnYXRlOm5pbF07Ci0gICAgW1twYWdlLnZpZXcgYW5ub3RhdGlvbkNvbnRyb2xsZXJdIHNldERl
bGVnYXRlOm5pbF07Ci0gICAgcGFnZS52aWV3ID0gbmlsOwotfQotCi0tICh2b2lkKV9jbGVhclBh
Z2VzCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogX3BhZ2VzKQotICAgICAgICBkZXRhY2hWaWV3
Rm9yUGFnZShwYWdlKTsKLSAgICAKLSAgICBfcGFnZXMuY2xlYXIoKTsKLX0KLQotLSAodm9pZClf
ZGlkTG9hZFBERkRvY3VtZW50Ci17Ci0gICAgX3BkZkRvY3VtZW50ID0gYWRvcHROUyhbW1VJUERG
RG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ0dQREZEb2N1bWVudDpfY2dQREZEb2N1bWVudC5nZXQo
KV0pOwotCi0gICAgLy8gRklYTUU6IFJlc3RvcmUgdGhlIHNjcm9sbCBwb3NpdGlvbiBhbmQgcGFn
ZSBzY2FsZSBpZiBuYXZpZ2F0aW5nIGZyb20gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgotCi0gICAg
W3NlbGYgX2NvbXB1dGVQYWdlQW5kRG9jdW1lbnRGcmFtZXNdOwotICAgIFtzZWxmIF9yZXZhbGlk
YXRlVmlld3NdOwotICAgIFtzZWxmIF9zY3JvbGxUb0ZyYWdtZW50Ol93ZWJWaWV3LlVSTC5mcmFn
bWVudF07Ci19Ci0KLS0gKHZvaWQpd2ViX3NldENvbnRlbnRQcm92aWRlckRhdGE6KE5TRGF0YSAq
KWRhdGEgc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKLXsKLSAgICBfc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBhZG9wdE5TKFtmaWxlbmFtZSBjb3B5XSk7Ci0KLSAgICBbc2VsZiBf
Y2xlYXJQYWdlc107Ci0KLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFSZWYp
ZGF0YSkpOwotICAgIF9jZ1BERkRvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRl
V2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwotCi0gICAgaWYgKCFfY2dQREZEb2N1
bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKENHUERGRG9jdW1lbnRJc1VubG9ja2Vk
KF9jZ1BERkRvY3VtZW50LmdldCgpKSkgewotICAgICAgICBbc2VsZiBfZGlkTG9hZFBERkRvY3Vt
ZW50XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIF9zaG93UGFzc3dvcmRF
bnRyeUZpZWxkXTsKLX0KLQotLSAodm9pZCl3ZWJfc2V0TWluaW11bVNpemU6KENHU2l6ZSlzaXpl
Ci17Ci0gICAgaWYgKENHU2l6ZUVxdWFsVG9TaXplKHNpemUsIF9taW5pbXVtU2l6ZSkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIF9taW5pbXVtU2l6ZSA9IHNpemU7Ci0KLSAgICBpZiAoX3dlYlZp
ZXcuX3Bhc3N3b3JkVmlldykgewotICAgICAgICBzZWxmLmZyYW1lID0geyBzZWxmLmZyYW1lLm9y
aWdpbiwgc2l6ZSB9OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dGbG9hdCBvbGRE
b2N1bWVudExlZnRGcmFjdGlvbiA9IDA7Ci0gICAgQ0dGbG9hdCBvbGREb2N1bWVudFRvcEZyYWN0
aW9uID0gMDsKLSAgICBDR1NpemUgY29udGVudFNpemUgPSBfc2Nyb2xsVmlldy5jb250ZW50U2l6
ZTsKLSAgICBpZiAoY29udGVudFNpemUud2lkdGggJiYgY29udGVudFNpemUuaGVpZ2h0KSB7Ci0g
ICAgICAgIENHUG9pbnQgY29udGVudE9mZnNldCA9IF9zY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQ7
Ci0gICAgICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXQgPSBfc2Nyb2xsVmlldy5jb250ZW50
SW5zZXQ7Ci0gICAgICAgIG9sZERvY3VtZW50TGVmdEZyYWN0aW9uID0gKGNvbnRlbnRPZmZzZXQu
eCArIGNvbnRlbnRJbnNldC5sZWZ0KSAvIGNvbnRlbnRTaXplLndpZHRoOwotICAgICAgICBvbGRE
b2N1bWVudFRvcEZyYWN0aW9uID0gKGNvbnRlbnRPZmZzZXQueSArIGNvbnRlbnRJbnNldC50b3Ap
IC8gY29udGVudFNpemUuaGVpZ2h0OwotICAgIH0KLQotICAgIFtzZWxmIF9jb21wdXRlUGFnZUFu
ZERvY3VtZW50RnJhbWVzXTsKLQotICAgIENHU2l6ZSBuZXdDb250ZW50U2l6ZSA9IF9zY3JvbGxW
aWV3LmNvbnRlbnRTaXplOwotICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXQgPSBfc2Nyb2xs
Vmlldy5jb250ZW50SW5zZXQ7Ci0gICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQ
b2ludE1ha2UoKG9sZERvY3VtZW50TGVmdEZyYWN0aW9uICogbmV3Q29udGVudFNpemUud2lkdGgp
IC0gY29udGVudEluc2V0LmxlZnQsIChvbGREb2N1bWVudFRvcEZyYWN0aW9uICogbmV3Q29udGVu
dFNpemUuaGVpZ2h0KSAtIGNvbnRlbnRJbnNldC50b3ApIGFuaW1hdGVkOk5PXTsKLQotICAgIFtz
ZWxmIF9yZXZhbGlkYXRlVmlld3NdOwotfQotCi0tICh2b2lkKXdlYl9zY3JvbGxWaWV3RGlkU2Ny
b2xsOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3Ci17Ci0gICAgaWYgKHNjcm9sbFZpZXcuaXNa
b29tQm91bmNpbmcgfHwgc2Nyb2xsVmlldy5faXNBbmltYXRpbmdab29tKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbc2VsZiBfcmV2YWxpZGF0ZVZpZXdzXTsKLQotICAgIGlmICghX2lzUGVyZm9y
bWluZ1NhbWVEb2N1bWVudE5hdmlnYXRpb24pCi0gICAgICAgIFtfcGFnZU51bWJlckluZGljYXRv
ciBzaG93XTsKLX0KLQotLSAodm9pZClfZW5zdXJlVmlld0ZvclBhZ2U6KFBERlBhZ2VJbmZvJilw
YWdlSW5mbwotewotICAgIGlmIChwYWdlSW5mby52aWV3KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBwYWdlSW5mby52aWV3ID0gYWRvcHROUyhbW1VJUERGUGFnZVZpZXcgYWxsb2NdIGluaXRXaXRo
UGFnZTpwYWdlSW5mby5wYWdlLmdldCgpIHRpbGVkQ29udGVudDpZRVNdKTsKLSAgICBbcGFnZUlu
Zm8udmlldyBzZXRVc2VCYWNraW5nTGF5ZXI6WUVTXTsKLSAgICBbcGFnZUluZm8udmlldyBzZXRE
ZWxlZ2F0ZTpzZWxmXTsKLSAgICBbW3BhZ2VJbmZvLnZpZXcgYW5ub3RhdGlvbkNvbnRyb2xsZXJd
IHNldERlbGVnYXRlOnNlbGZdOwotICAgIFtzZWxmIGFkZFN1YnZpZXc6cGFnZUluZm8udmlldy5n
ZXQoKV07Ci0KLSAgICBbcGFnZUluZm8udmlldyBzZXRGcmFtZTpwYWdlSW5mby5mcmFtZV07Ci0g
ICAgW3BhZ2VJbmZvLnZpZXcgY29udGVudExheWVyXS5jb250ZW50c1NjYWxlID0gc2VsZi53aW5k
b3cuc2NyZWVuLnNjYWxlOwotfQotCi0tICh2b2lkKV9yZXZhbGlkYXRlVmlld3MKLXsKLSAgICBp
ZiAoX2lzU3RhcnRpbmdab29tKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR1JlY3QgdGFyZ2V0
UmVjdCA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UmVjdDpfc2Nyb2xsVmlldy5ib3VuZHMgdG9WaWV3
OnNlbGZdOwotCi0gICAgLy8gV2UgYXBwbHkgb3ZlcmRyYXcgYWZ0ZXIgYXBwbHlpbmcgc2NhbGUg
aW4gb3JkZXIgdG8gYXZvaWQgZXhjZXNzaXZlCi0gICAgLy8gbWVtb3J5IHVzZSBjYXVzZWQgYnkg
c2NhbGluZyB0aGUgb3ZlcmRyYXcuCi0gICAgQ0dSZWN0IHRhcmdldFJlY3RXaXRoT3ZlcmRyYXcg
PSBDR1JlY3RJbnNldCh0YXJnZXRSZWN0LCAwLCAtdGFyZ2V0UmVjdC5zaXplLmhlaWdodCAqIG92
ZXJkcmF3SGVpZ2h0TXVsdGlwbGllcik7Ci0gICAgQ0dSZWN0IHRhcmdldFJlY3RGb3JDZW50ZXJQ
YWdlID0gQ0dSZWN0SW5zZXQodGFyZ2V0UmVjdCwgMCwgdGFyZ2V0UmVjdC5zaXplLmhlaWdodCAv
IDIgLSBwZGZQYWdlTWFyZ2luICogMik7Ci0KLSAgICBfY2VudGVyUGFnZU51bWJlciA9IDA7Ci0K
LSAgICBmb3IgKGF1dG8mIHBhZ2VJbmZvIDogX3BhZ2VzKSB7Ci0gICAgICAgIGlmICghQ0dSZWN0
SW50ZXJzZWN0c1JlY3QocGFnZUluZm8uZnJhbWUsIHRhcmdldFJlY3RXaXRoT3ZlcmRyYXcpICYm
IHBhZ2VJbmZvLmluZGV4ICE9IF9jdXJyZW50RmluZFBhZ2VJbmRleCkgewotICAgICAgICAgICAg
ZGV0YWNoVmlld0ZvclBhZ2UocGFnZUluZm8pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIV9jZW50ZXJQYWdlTnVtYmVyICYmIENHUmVjdEludGVyc2Vj
dHNSZWN0KHBhZ2VJbmZvLmZyYW1lLCB0YXJnZXRSZWN0Rm9yQ2VudGVyUGFnZSkpCi0gICAgICAg
ICAgICBfY2VudGVyUGFnZU51bWJlciA9IHBhZ2VJbmZvLmluZGV4ICsgMTsKLQotICAgICAgICBb
c2VsZiBfZW5zdXJlVmlld0ZvclBhZ2U6cGFnZUluZm9dOwotICAgIH0KLQotICAgIGlmICghX2Nl
bnRlclBhZ2VOdW1iZXIgJiYgX3BhZ2VzLnNpemUoKSkgewotICAgICAgICBpZiAoQ0dSZWN0R2V0
TWluWShfcGFnZXMuZmlyc3QoKS5mcmFtZSkgPiBDR1JlY3RHZXRNYXhZKHRhcmdldFJlY3RGb3JD
ZW50ZXJQYWdlKSkKLSAgICAgICAgICAgIF9jZW50ZXJQYWdlTnVtYmVyID0gMTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoQ0dSZWN0R2V0TWF4WShfcGFnZXMubGFzdCgpLmZy
YW1lKSA8IENHUmVjdEdldE1pblkodGFyZ2V0UmVjdEZvckNlbnRlclBhZ2UpKTsKLSAgICAgICAg
ICAgIF9jZW50ZXJQYWdlTnVtYmVyID0gX3BhZ2VzLnNpemUoKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIFtzZWxmIF91cGRhdGVQYWdlTnVtYmVySW5kaWNhdG9yXTsKLX0KLQotLSAoQ0dQb2lu
dClfb2Zmc2V0Rm9yUGFnZU51bWJlckluZGljYXRvcgotewotICAgIFVJRWRnZUluc2V0cyBpbnNl
dHMgPSBVSUVkZ2VJbnNldHNBZGQoX3dlYlZpZXcuX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVh
SW5zZXQsIF93ZWJWaWV3Ll9jb21wdXRlZE9ic2N1cmVkSW5zZXQsIFVJUmVjdEVkZ2VBbGwpOwot
ICAgIHJldHVybiBDR1BvaW50TWFrZShpbnNldHMubGVmdCwgaW5zZXRzLnRvcCArIF9vdmVybGFp
ZEFjY2Vzc29yeVZpZXdzSW5zZXQuaGVpZ2h0KTsKLX0KLQotLSAodm9pZClfdXBkYXRlUGFnZU51
bWJlckluZGljYXRvcgotewotICAgIGlmIChfaXNQZXJmb3JtaW5nU2FtZURvY3VtZW50TmF2aWdh
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFfcGFnZU51bWJlckluZGljYXRvcikK
LSAgICAgICAgX3BhZ2VOdW1iZXJJbmRpY2F0b3IgPSBhZG9wdE5TKFtbV0tQREZQYWdlTnVtYmVy
SW5kaWNhdG9yIGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKLQotICAgIFtfZml4
ZWRPdmVybGF5VmlldyBhZGRTdWJ2aWV3Ol9wYWdlTnVtYmVySW5kaWNhdG9yLmdldCgpXTsKLQot
ICAgIFtfcGFnZU51bWJlckluZGljYXRvciBzZXRDdXJyZW50UGFnZU51bWJlcjpfY2VudGVyUGFn
ZU51bWJlcl07Ci0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIG1vdmVUb1BvaW50OltzZWxmIF9v
ZmZzZXRGb3JQYWdlTnVtYmVySW5kaWNhdG9yXSBhbmltYXRlZDpOT107Ci19Ci0KLS0gKHZvaWQp
d2ViX3NldE92ZXJsYWlkQWNjZXNzb3J5Vmlld3NJbnNldDooQ0dTaXplKWluc2V0Ci17Ci0gICAg
X292ZXJsYWlkQWNjZXNzb3J5Vmlld3NJbnNldCA9IGluc2V0OwotICAgIFtfcGFnZU51bWJlcklu
ZGljYXRvciBtb3ZlVG9Qb2ludDpbc2VsZiBfb2Zmc2V0Rm9yUGFnZU51bWJlckluZGljYXRvcl0g
YW5pbWF0ZWQ6WUVTXTsKLX0KLQotLSAodm9pZCl3ZWJfY29tcHV0ZWRDb250ZW50SW5zZXREaWRD
aGFuZ2UKLXsKLSAgICBbc2VsZiBfdXBkYXRlUGFnZU51bWJlckluZGljYXRvcl07Ci0KLSAgICBp
ZiAoVUlFZGdlSW5zZXRzRXF1YWxUb0VkZ2VJbnNldHMoX3dlYlZpZXcuX2NvbXB1dGVkVW5vYnNj
dXJlZFNhZmVBcmVhSW5zZXQsIF9sYXN0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBbc2VsZiBfY29tcHV0ZVBhZ2VBbmREb2N1bWVudEZyYW1lc107Ci0g
ICAgW3NlbGYgX3JldmFsaWRhdGVWaWV3c107Ci19Ci0KLS0gKHZvaWQpd2ViX3NldEZpeGVkT3Zl
cmxheVZpZXc6KFVJVmlldyAqKWZpeGVkT3ZlcmxheVZpZXcKLXsKLSAgICBfZml4ZWRPdmVybGF5
VmlldyA9IGZpeGVkT3ZlcmxheVZpZXc7Ci0KLSAgICBpZiAoX3BhZ2VOdW1iZXJJbmRpY2F0b3Ip
Ci0gICAgICAgIFtfZml4ZWRPdmVybGF5VmlldyBhZGRTdWJ2aWV3Ol9wYWdlTnVtYmVySW5kaWNh
dG9yLmdldCgpXTsKLX0KLQotLSAodm9pZClfc2Nyb2xsVG9GcmFnbWVudDooTlNTdHJpbmcgKilm
cmFnbWVudAotewotICAgIGlmICghW2ZyYWdtZW50IGhhc1ByZWZpeDpAInBhZ2UiXSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgTlNJbnRlZ2VyIHBhZ2VJbmRleCA9IFtbZnJhZ21lbnQgc3Vic3Ry
aW5nRnJvbUluZGV4OjRdIGludGVnZXJWYWx1ZV0gLSAxOwotICAgIGlmIChwYWdlSW5kZXggPCAw
IHx8IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihwYWdlSW5kZXgpID49IF9wYWdlcy5zaXplKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIF9pc1BlcmZvcm1pbmdTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uID0gWUVTOwotCi0gICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIGhpZGVdOwotICAgIFtzZWxm
IF9yZXNldFpvb21BbmltYXRlZDpOT107Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcGFnZSBt
YXJnaW4gaXMgdmlzaWJsZSBiZWxvdyB0aGUgY29udGVudCBpbnNldC4KLSAgICBjb25zdCBDR0Zs
b2F0IHZlcnRpY2FsT2Zmc2V0ID0gX3BhZ2VzW3BhZ2VJbmRleF0uZnJhbWUub3JpZ2luLnkgLSBf
d2ViVmlldy5fY29tcHV0ZWRPYnNjdXJlZEluc2V0LnRvcCAtIHBkZlBhZ2VNYXJnaW47Ci0gICAg
W19zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQb2ludE1ha2UoX3Njcm9sbFZpZXcuY29u
dGVudE9mZnNldC54LCB2ZXJ0aWNhbE9mZnNldCkgYW5pbWF0ZWQ6Tk9dOwotCi0gICAgX2lzUGVy
Zm9ybWluZ1NhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBOTzsKLX0KLQotLSAodm9pZCl3ZWJfZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbjooV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSluYXZp
Z2F0aW9uVHlwZQotewotICAgIC8vIENoZWNrIGZvciBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
U2Vzc2lvblN0YXRlUG9wIGluc3RlYWQgb2Yga1dLU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hv
ck5hdmlnYXRpb24gc2luY2UgdGhlCi0gICAgLy8gbGF0dGVyIGlzIG9ubHkgY2FsbGVkIG9uY2Ug
d2hlbiBuYXZpZ2F0aW5nIHRvIHRoZSBzYW1lIGFuY2hvciBpbiBzdWNjZXNzaW9uLiBJZiB0aGUg
dXNlciBuYXZpZ2F0ZXMgdG8gYSBwYWdlCi0gICAgLy8gdGhlbiBzY3JvbGxzIGJhY2sgYW5kIGNs
aWNrcyBvbiB0aGUgc2FtZSBsaW5rIGEgc2Vjb25kIHRpbWUsIHdlIHdhbnQgdG8gc2Nyb2xsIGFn
YWluLgotICAgIGlmIChuYXZpZ2F0aW9uVHlwZSAhPSBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
U2Vzc2lvblN0YXRlUG9wKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogcmVzdG9y
ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCBwYWdlIHNjYWxlIGlmIG5hdmlnYXRpbmcgYmFjayBm
cm9tIGEgZnJhZ21lbnQuCi0KLSAgICBbc2VsZiBfc2Nyb2xsVG9GcmFnbWVudDpfd2ViVmlldy5V
UkwuZnJhZ21lbnRdOwotfQotCi0tIChVSVZpZXcgKil3ZWJfY29udGVudFZpZXcKLXsKLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClfY29tcHV0ZVBhZ2VBbmREb2N1bWVudEZyYW1lcwot
ewotICAgIFVJRWRnZUluc2V0cyBzYWZlQXJlYUluc2V0cyA9IF93ZWJWaWV3Ll9jb21wdXRlZFVu
b2JzY3VyZWRTYWZlQXJlYUluc2V0OwotICAgIF9sYXN0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQg
PSBzYWZlQXJlYUluc2V0czsKLSAgICBDR1NpemUgbWluaW11bVNpemVSZXNwZWN0aW5nQ29udGVu
dEluc2V0ID0gQ0dTaXplTWFrZShfbWluaW11bVNpemUud2lkdGggLSAoc2FmZUFyZWFJbnNldHMu
bGVmdCArIHNhZmVBcmVhSW5zZXRzLnJpZ2h0KSwgX21pbmltdW1TaXplLmhlaWdodCAtIChzYWZl
QXJlYUluc2V0cy50b3AgKyBzYWZlQXJlYUluc2V0cy5ib3R0b20pKTsKLQotICAgIGlmICghX3Bh
Z2VzLmlzRW1wdHkoKSAmJiBfbGFzdExheW91dFdpZHRoID09IG1pbmltdW1TaXplUmVzcGVjdGlu
Z0NvbnRlbnRJbnNldC53aWR0aCkgewotICAgICAgICBbc2VsZiBfdXBkYXRlRG9jdW1lbnRGcmFt
ZV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBOU1VJbnRlZ2VyIHBhZ2VDb3VudCA9
IFtfcGRmRG9jdW1lbnQgbnVtYmVyT2ZQYWdlc107Ci0gICAgaWYgKCFwYWdlQ291bnQpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBfbGFzdExheW91dFdpZHRoID0gbWluaW11bVNpemVSZXNw
ZWN0aW5nQ29udGVudEluc2V0LndpZHRoOwotICAgIFtfcGFnZU51bWJlckluZGljYXRvciBzZXRQ
YWdlQ291bnQ6cGFnZUNvdW50XTsKLSAgICAKLSAgICBbc2VsZiBfY2xlYXJQYWdlc107Ci0KLSAg
ICBfcGFnZXMucmVzZXJ2ZUNhcGFjaXR5KHBhZ2VDb3VudCk7Ci0KLSAgICBDR1JlY3QgcGFnZUZy
YW1lID0gQ0dSZWN0TWFrZSgwLCAwLCBtaW5pbXVtU2l6ZVJlc3BlY3RpbmdDb250ZW50SW5zZXQu
d2lkdGgsIG1pbmltdW1TaXplUmVzcGVjdGluZ0NvbnRlbnRJbnNldC5oZWlnaHQpOwotICAgIGZv
ciAoTlNVSW50ZWdlciBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCBwYWdlQ291bnQ7ICsrcGFn
ZUluZGV4KSB7Ci0gICAgICAgIFVJUERGUGFnZSAqcGFnZSA9IFtfcGRmRG9jdW1lbnQgcGFnZUF0
SW5kZXg6cGFnZUluZGV4XTsKLSAgICAgICAgaWYgKCFwYWdlKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgQ0dTaXplIHBhZ2VTaXplID0gW3BhZ2UgY3JvcEJveEFjY291bnRGb3JS
b3RhdGlvbl0uc2l6ZTsKLSAgICAgICAgcGFnZUZyYW1lLnNpemUuaGVpZ2h0ID0gcGFnZVNpemUu
aGVpZ2h0IC8gcGFnZVNpemUud2lkdGggKiBwYWdlRnJhbWUuc2l6ZS53aWR0aDsKLSAgICAgICAg
Q0dSZWN0IHBhZ2VGcmFtZVdpdGhNYXJnaW5BcHBsaWVkID0gQ0dSZWN0SW5zZXQocGFnZUZyYW1l
LCBwZGZQYWdlTWFyZ2luLCBwZGZQYWdlTWFyZ2luKTsKLSAgICAgICAgaWYgKENHUmVjdElzTnVs
bChwYWdlRnJhbWVXaXRoTWFyZ2luQXBwbGllZCkpCi0gICAgICAgICAgICBwYWdlRnJhbWVXaXRo
TWFyZ2luQXBwbGllZCA9IENHUmVjdFplcm87Ci0KLSAgICAgICAgUERGUGFnZUluZm8gcGFnZUlu
Zm87Ci0gICAgICAgIHBhZ2VJbmZvLnBhZ2UgPSBwYWdlOwotICAgICAgICBwYWdlSW5mby5mcmFt
ZSA9IHBhZ2VGcmFtZVdpdGhNYXJnaW5BcHBsaWVkOwotICAgICAgICBwYWdlSW5mby5pbmRleCA9
IHBhZ2VJbmRleDsKLSAgICAgICAgX3BhZ2VzLmFwcGVuZChwYWdlSW5mbyk7Ci0gICAgICAgIHBh
Z2VGcmFtZS5vcmlnaW4ueSArPSBwYWdlRnJhbWUuc2l6ZS5oZWlnaHQgLSBwZGZQYWdlTWFyZ2lu
OwotICAgIH0KLQotICAgIFtzZWxmIF91cGRhdGVEb2N1bWVudEZyYW1lXTsKLX0KLQotLSAodm9p
ZClfdXBkYXRlRG9jdW1lbnRGcmFtZQotewotICAgIGlmIChfcGFnZXMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBVSUVkZ2VJbnNldHMgc2FmZUFyZWFJbnNldHMgPSBfd2ViVmll
dy5fY29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldDsKLSAgICBDR0Zsb2F0IHNjYWxlID0g
X3Njcm9sbFZpZXcuem9vbVNjYWxlOwotICAgIENHUmVjdCBuZXdGcmFtZSA9IENHUmVjdFplcm87
Ci0gICAgbmV3RnJhbWUub3JpZ2luLnggPSBzYWZlQXJlYUluc2V0cy5sZWZ0OwotICAgIG5ld0Zy
YW1lLm9yaWdpbi55ID0gc2FmZUFyZWFJbnNldHMudG9wOwotICAgIG5ld0ZyYW1lLnNpemUud2lk
dGggPSBfbGFzdExheW91dFdpZHRoICogc2NhbGU7Ci0gICAgbmV3RnJhbWUuc2l6ZS5oZWlnaHQg
PSBzdGQ6Om1heCgoQ0dSZWN0R2V0TWF4WShfcGFnZXMubGFzdCgpLmZyYW1lKSArIHBkZlBhZ2VN
YXJnaW4pICogc2NhbGUgKyBzYWZlQXJlYUluc2V0cy5ib3R0b20sIF9taW5pbXVtU2l6ZS5oZWln
aHQgKiBzY2FsZSk7Ci0KLSAgICBbc2VsZiBzZXRGcmFtZTpuZXdGcmFtZV07Ci0gICAgW19zY3Jv
bGxWaWV3IHNldENvbnRlbnRTaXplOm5ld0ZyYW1lLnNpemVdOwotfQotCi0tICh2b2lkKV9yZXNl
dFpvb21BbmltYXRlZDooQk9PTClhbmltYXRlZAotewotICAgIF9pc1N0YXJ0aW5nWm9vbSA9IFlF
UzsKLQotICAgIENHUmVjdCBzY3JvbGxWaWV3Qm91bmRzID0gX3Njcm9sbFZpZXcuYm91bmRzOwot
ICAgIENHUG9pbnQgY2VudGVyT2ZQYWdlSW5Eb2N1bWVudENvb3JkaW5hdGVzID0gW19zY3JvbGxW
aWV3IGNvbnZlcnRQb2ludDpDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKHNjcm9sbFZpZXdCb3Vu
ZHMpLCBDR1JlY3RHZXRNaWRZKHNjcm9sbFZpZXdCb3VuZHMpKSB0b1ZpZXc6c2VsZl07Ci0gICAg
W193ZWJWaWV3IF96b29tT3V0V2l0aE9yaWdpbjpjZW50ZXJPZlBhZ2VJbkRvY3VtZW50Q29vcmRp
bmF0ZXMgYW5pbWF0ZWQ6YW5pbWF0ZWRdOwotCi0gICAgX2lzU3RhcnRpbmdab29tID0gTk87Ci19
Ci0KLS0gKHZvaWQpX2hpZ2hsaWdodExpbmtBbm5vdGF0aW9uOihVSVBERkxpbmtBbm5vdGF0aW9u
ICopbGlua0Fubm90YXRpb24gZm9yRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgotewotICAg
IHN0YXRpYyBjb25zdCBDR0Zsb2F0IGhpZ2hsaWdodEJvcmRlclJhZGl1cyA9IDM7Ci0gICAgc3Rh
dGljIGNvbnN0IENHRmxvYXQgaGlnaGxpZ2h0Q29sb3JDb21wb25lbnQgPSAyNi4wIC8gMjU1Owot
ICAgIHN0YXRpYyBVSUNvbG9yICpoaWdobGlnaHRDb2xvciA9IFtbVUlDb2xvciBhbGxvY10gaW5p
dFdpdGhSZWQ6aGlnaGxpZ2h0Q29sb3JDb21wb25lbnQgZ3JlZW46aGlnaGxpZ2h0Q29sb3JDb21w
b25lbnQgYmx1ZTpoaWdobGlnaHRDb2xvckNvbXBvbmVudCBhbHBoYTowLjNdOwotCi0gICAgVUlQ
REZQYWdlVmlldyAqcGFnZVZpZXcgPSBsaW5rQW5ub3RhdGlvbi5hbm5vdGF0aW9uQ29udHJvbGxl
ci5wYWdlVmlldzsKLSAgICBDR1JlY3QgaGlnaGxpZ2h0Vmlld0ZyYW1lID0gW3NlbGYgY29udmVy
dFJlY3Q6W3BhZ2VWaWV3IGNvbnZlcnRSZWN0RnJvbVBERlBhZ2VTcGFjZTpsaW5rQW5ub3RhdGlv
bi5SZWN0XSBmcm9tVmlldzpwYWdlVmlld107Ci0gICAgUmV0YWluUHRyPF9VSUhpZ2hsaWdodFZp
ZXc+IGhpZ2hsaWdodFZpZXcgPSBhZG9wdE5TKFtbX1VJSGlnaGxpZ2h0VmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RJbnNldChoaWdobGlnaHRWaWV3RnJhbWUsIC1oaWdobGlnaHRCb3Jk
ZXJSYWRpdXMsIC1oaWdobGlnaHRCb3JkZXJSYWRpdXMpXSk7Ci0gICAgW2hpZ2hsaWdodFZpZXcg
c2V0T3BhcXVlOk5PXTsKLSAgICBbaGlnaGxpZ2h0VmlldyBzZXRDb3JuZXJSYWRpdXM6aGlnaGxp
Z2h0Qm9yZGVyUmFkaXVzXTsKLSAgICBbaGlnaGxpZ2h0VmlldyBzZXRDb2xvcjpoaWdobGlnaHRD
b2xvcl07Ci0KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFtzZWxmIGFkZFN1
YnZpZXc6aGlnaGxpZ2h0Vmlldy5nZXQoKV07Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24gKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBbaGlnaGxpZ2h0VmlldyByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQot
LSAoTlNVUkwgKilfVVJMRm9yTGlua0Fubm90YXRpb246KFVJUERGTGlua0Fubm90YXRpb24gKils
aW5rQW5ub3RhdGlvbgotewotICAgIE5TVVJMICpkb2N1bWVudFVSTCA9IF93ZWJWaWV3LlVSTDsK
LQotICAgIGlmIChOU1VSTCAqdXJsID0gbGlua0Fubm90YXRpb24udXJsKQotICAgICAgICByZXR1
cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsLnJlbGF0aXZlU3RyaW5nIHJlbGF0aXZlVG9VUkw6
ZG9jdW1lbnRVUkxdOwotCi0gICAgaWYgKE5TVUludGVnZXIgcGFnZU51bWJlciA9IGxpbmtBbm5v
dGF0aW9uLnBhZ2VOdW1iZXIpIHsKLSAgICAgICAgU3RyaW5nIGFuY2hvclN0cmluZyA9IG1ha2VT
dHJpbmcoIiNwYWdlIiwgcGFnZU51bWJlcik7Ci0gICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0
aFN0cmluZzphbmNob3JTdHJpbmcgcmVsYXRpdmVUb1VSTDpkb2N1bWVudFVSTF07Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotI3ByYWdtYSBtYXJrIEZpbmQtaW4tUGFnZQotCi1zdGF0
aWMgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBzdHJpbmdDb21wYXJlT3B0aW9ucyhfV0tGaW5kT3B0
aW9ucyBvcHRpb25zKQotewotICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmluZE9wdGlvbnMg
PSAwOwotICAgIGlmIChvcHRpb25zICYgX1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0g
ICAgICAgIGZpbmRPcHRpb25zIHw9IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOwotICAgIGlmIChv
cHRpb25zICYgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9
IE5TQmFja3dhcmRzU2VhcmNoOwotICAgIHJldHVybiBmaW5kT3B0aW9uczsKLX0KLQotLSAodm9p
ZClfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9X
S0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSAgICBpZiAoIV9wZGZEb2N1bWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBfV0tGaW5kT3B0aW9ucyBvcHRpb25zQWZm
ZWN0aW5nUmVzdWx0cyA9IG9wdGlvbnMgJiB+X1dLRmluZE9wdGlvbnNJcnJlbGV2YW50Rm9yQmF0
Y2hSZXN1bHRzOwotCi0gICAgLy8gSWYgdGhpcyBzZWFyY2ggaXMgZXF1aXZhbGVudCB0byB0aGUg
Y3VycmVudGx5IGNhY2hlZCBzZWFyY2gsIGJhaWwgYW5kIGNhbGwgdGhlIGNvbXBsZXRpb24gaGFu
ZGxlciwgYmVjYXVzZSB0aGUgZXhpc3RpbmcgY2FjaGVkIHJlc3VsdHMgYXJlIHZhbGlkLgotICAg
IGlmICghX2NhY2hlZEZpbmRNYXRjaGVzLmlzRW1wdHkoKSAmJiBbX2NhY2hlZEZpbmRTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOnN0cmluZ10gJiYgX2NhY2hlZEZpbmRPcHRpb25zQWZmZWN0aW5nUmVz
dWx0cyA9PSBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyAmJiBfY2FjaGVkRmluZE1heGltdW1Db3Vu
dCA9PSBtYXhDb3VudCkgewotICAgICAgICAvLyBBbHNvLCBjYW5jZWwgYW55IHJ1bm5pbmcgc2Vh
cmNoLCBiZWNhdXNlIGl0IHdpbGwgZXZlbnR1YWxseSByZXBsYWNlIHRoZSBub3ctdmFsaWQgcmVz
dWx0cy4KLSAgICAgICAgKytfbmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQ7Ci0KLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoWUVTKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIElmIHRoaXMgc2VhcmNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGN1cnJlbnRseSBydW5uaW5n
IGFzeW5jaHJvbm91cyBzZWFyY2gsIGJhaWwgYXMgaWYgdGhpcyBzZWFyY2ggd2VyZSBjYW5jZWxs
ZWQ7IHRoZSBvcmlnaW5hbCBzZWFyY2gncyBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBldmVudHVh
bGx5IGZpcmUuCi0gICAgaWYgKFtfbmV4dENhY2hlZEZpbmRTdHJpbmcgaXNFcXVhbFRvU3RyaW5n
OnN0cmluZ10gJiYgX25leHRDYWNoZWRGaW5kT3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHMgPT0gb3B0
aW9uc0FmZmVjdGluZ1Jlc3VsdHMgJiYgX25leHRDYWNoZWRGaW5kTWF4aW11bUNvdW50ID09IG1h
eENvdW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmluZE9wdGlvbnMgPSBzdHJp
bmdDb21wYXJlT3B0aW9ucyhvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyk7Ci0KLSAgICBWZWN0b3I8
UERGUGFnZUluZm8+IHBhZ2VzID0gX3BhZ2VzOwotCi0gICAgdW5zaWduZWQgY29tcHV0ZU1hdGNo
ZXNPcGVyYXRpb25JRCA9ICsrX25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEOwotICAgIF9u
ZXh0Q2FjaGVkRmluZFN0cmluZyA9IHN0cmluZzsKLSAgICBfbmV4dENhY2hlZEZpbmRPcHRpb25z
QWZmZWN0aW5nUmVzdWx0cyA9IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOwotICAgIF9uZXh0Q2Fj
aGVkRmluZE1heGltdW1Db3VudCA9IG1heENvdW50OwotCi0gICAgUmV0YWluUHRyPFdLTGVnYWN5
UERGVmlldz4gcmV0YWluZWRTZWxmID0gc2VsZjsKLSAgICB0eXBlb2YoY29tcGxldGlvbkhhbmRs
ZXIpIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIp
OwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoX2ZpbmRRdWV1ZSwgW3BhZ2VzLCBzdHJpbmcsIGZpbmRP
cHRpb25zLCBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cywgbWF4Q291bnQsIGNvbXB1dGVNYXRjaGVz
T3BlcmF0aW9uSUQsIHJldGFpbmVkU2VsZiwgY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7Ci0gICAg
ICAgIFZlY3RvcjxSZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+PiBtYXRjaGVzOwotCi0gICAgICAg
IGZvciAodW5zaWduZWQgcGFnZUluZGV4ID0gMDsgcGFnZUluZGV4IDwgcGFnZXMuc2l6ZSgpOyAr
K3BhZ2VJbmRleCkgewotICAgICAgICAgICAgVUlQREZTZWxlY3Rpb24gKm1hdGNoID0gbnVsbHB0
cjsKLSAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBbcGFnZXNbcGFnZUluZGV4XS5wYWdlIGZp
bmRTdHJpbmc6c3RyaW5nIGZyb21TZWxlY3Rpb246bWF0Y2ggb3B0aW9uczpmaW5kT3B0aW9uc10p
KSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpOwotICAgICAgICAgICAg
ICAgIGlmIChtYXRjaGVzLnNpemUoKSA+IG1heENvdW50KQotICAgICAgICAgICAgICAgICAgICBn
b3RvIG1heENvdW50RXhjZWVkZWQ7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBlbnF1
ZXVlZCBhbm90aGVyIHNlYXJjaCwgY2FuY2VsIHRoaXMgb25lLgotICAgICAgICAgICAgICAgIGlm
IChyZXRhaW5lZFNlbGYtPl9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCAhPSBjb21wdXRl
TWF0Y2hlc09wZXJhdGlvbklEKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShOTyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVyQ29weSk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgbWF4Q291bnRF
eGNlZWRlZDoKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW2NvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQsIHN0cmluZywgb3B0aW9uc0FmZmVjdGluZ1Jl
c3VsdHMsIG1heENvdW50LCBtYXRjaGVzLCBjb21wbGV0aW9uSGFuZGxlckNvcHksIHJldGFpbmVk
U2VsZl0gewotCi0gICAgICAgICAgICAvLyBJZiBhbm90aGVyIHNlYXJjaCBoYXMgYmVlbiBlbnF1
ZXVlZCBpbiB0aGUgbWVhbnRpbWUsIGlnbm9yZSB0aGlzIHJlc3VsdC4KLSAgICAgICAgICAgIGlm
IChyZXRhaW5lZFNlbGYtPl9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCAhPSBjb21wdXRl
TWF0Y2hlc09wZXJhdGlvbklEKSB7Ci0gICAgICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21w
bGV0aW9uSGFuZGxlckNvcHkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgcmV0YWluZWRTZWxmLT5fY2FjaGVkRmluZFN0cmluZyA9IHN0cmlu
ZzsKLSAgICAgICAgICAgIHJldGFpbmVkU2VsZi0+X2NhY2hlZEZpbmRPcHRpb25zQWZmZWN0aW5n
UmVzdWx0cyA9IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOwotICAgICAgICAgICAgcmV0YWluZWRT
ZWxmLT5fY2FjaGVkRmluZE1heGltdW1Db3VudCA9IG1heENvdW50OwotICAgICAgICAgICAgcmV0
YWluZWRTZWxmLT5fY2FjaGVkRmluZE1hdGNoZXMgPSBtYXRjaGVzOwotCi0gICAgICAgICAgICBy
ZXRhaW5lZFNlbGYtPl9uZXh0Q2FjaGVkRmluZFN0cmluZyA9IG5pbDsKLQotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXJDb3B5KFlFUyk7Ci0gICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNv
bXBsZXRpb25IYW5kbGVyQ29weSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi0tICh2b2lk
KXdlYl9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0Zp
bmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKLXsKLSAgICBS
ZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7Ci0gICAg
W3NlbGYgX2NvbXB1dGVNYXRjaGVzRm9yU3RyaW5nOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4
Q291bnQ6bWF4Q291bnQgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAg
ICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBwYWdlLT5maW5k
Q2xpZW50KCkuZGlkQ291bnRTdHJpbmdNYXRjaGVzKHBhZ2UuZ2V0KCksIHN0cmluZywgX2NhY2hl
ZEZpbmRNYXRjaGVzLnNpemUoKSk7Ci0gICAgfV07Ci19Ci0KLS0gKHZvaWQpX2RpZEZpbmRNYXRj
aDooVUlQREZTZWxlY3Rpb24gKiltYXRjaAotewotICAgIGZvciAoYXV0byYgcGFnZUluZm8gOiBf
cGFnZXMpIHsKLSAgICAgICAgaWYgKHBhZ2VJbmZvLnBhZ2UgPT0gbWF0Y2gucGFnZSkgewotICAg
ICAgICAgICAgW3NlbGYgX2Vuc3VyZVZpZXdGb3JQYWdlOnBhZ2VJbmZvXTsKLQotICAgICAgICAg
ICAgW3BhZ2VJbmZvLnZpZXcgaGlnaGxpZ2h0U2VhcmNoU2VsZWN0aW9uOm1hdGNoIGFuaW1hdGVk
Ok5PXTsKLQotICAgICAgICAgICAgX2N1cnJlbnRGaW5kUGFnZUluZGV4ID0gcGFnZUluZm8uaW5k
ZXg7Ci0gICAgICAgICAgICBfY3VycmVudEZpbmRTZWxlY3Rpb24gPSBtYXRjaDsKLQotICAgICAg
ICAgICAgQ0dSZWN0IHpvb21SZWN0ID0gW3BhZ2VJbmZvLnZpZXcgY29udmVydFJlY3RGcm9tUERG
UGFnZVNwYWNlOm1hdGNoLmJvdW5kc107Ci0gICAgICAgICAgICBpZiAoQ0dSZWN0SXNOdWxsKHpv
b21SZWN0KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIFtzZWxmIHpv
b206cGFnZUluZm8udmlldy5nZXQoKSB0bzp6b29tUmVjdCBhdFBvaW50OkNHUG9pbnRaZXJvIGtp
bmQ6a1VJUERGT2JqZWN0S2luZFRleHRdOwotCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLS0gKHZvaWQpd2ViX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4
Q291bnQKLXsKLSAgICBpZiAoX2N1cnJlbnRGaW5kU2VsZWN0aW9uKQotICAgICAgICBbX3BhZ2Vz
W19jdXJyZW50RmluZFBhZ2VJbmRleF0udmlldyBjbGVhclNlYXJjaEhpZ2hsaWdodHNdOwotCi0g
ICAgUmV0YWluUHRyPFVJUERGU2VsZWN0aW9uPiBwcmV2aW91c0ZpbmRTZWxlY3Rpb24gPSBfY3Vy
cmVudEZpbmRTZWxlY3Rpb247Ci0gICAgdW5zaWduZWQgcHJldmlvdXNGaW5kUGFnZUluZGV4ID0g
MDsKLSAgICBpZiAocHJldmlvdXNGaW5kU2VsZWN0aW9uKSB7Ci0gICAgICAgIHByZXZpb3VzRmlu
ZFBhZ2VJbmRleCA9IF9jdXJyZW50RmluZFBhZ2VJbmRleDsKLSAgICAgICAgaWYgKCFbX2NhY2hl
ZEZpbmRTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnN0cmluZ10pIHsKLSAgICAgICAgICAgIE5TVUlu
dGVnZXIgbG9jYXRpb24gPSBbX2N1cnJlbnRGaW5kU2VsZWN0aW9uIHN0YXJ0SW5kZXhdOwotICAg
ICAgICAgICAgaWYgKGxvY2F0aW9uKQotICAgICAgICAgICAgICAgIHByZXZpb3VzRmluZFNlbGVj
dGlvbiA9IGFkb3B0TlMoW1tVSVBERlNlbGVjdGlvbiBhbGxvY10gaW5pdFdpdGhQYWdlOltfY3Vy
cmVudEZpbmRTZWxlY3Rpb24gcGFnZV0gZnJvbUluZGV4OmxvY2F0aW9uIC0gMSB0b0luZGV4Omxv
Y2F0aW9uXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBOU1N0cmluZ0NvbXBhcmVPcHRpb25z
IGZpbmRPcHRpb25zID0gc3RyaW5nQ29tcGFyZU9wdGlvbnMob3B0aW9ucyk7Ci0gICAgYm9vbCBi
YWNrd2FyZHMgPSAob3B0aW9ucyAmIF9XS0ZpbmRPcHRpb25zQmFja3dhcmRzKTsKLSAgICBSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7Ci0KLSAgICBb
c2VsZiBfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhD
b3VudDptYXhDb3VudCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2VzcykgewotICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5zaWduZWQg
cGFnZUluZGV4ID0gcHJldmlvdXNGaW5kUGFnZUluZGV4OwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgX3BhZ2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBVSVBERlNlbGVj
dGlvbiAqbWF0Y2ggPSBbX3BhZ2VzW3BhZ2VJbmRleF0ucGFnZSBmaW5kU3RyaW5nOnN0cmluZyBm
cm9tU2VsZWN0aW9uOihwYWdlSW5kZXggPT0gcHJldmlvdXNGaW5kUGFnZUluZGV4ID8gcHJldmlv
dXNGaW5kU2VsZWN0aW9uLmdldCgpIDogbmlsKSBvcHRpb25zOmZpbmRPcHRpb25zXTsKLQotICAg
ICAgICAgICAgaWYgKCFtYXRjaCkgewotICAgICAgICAgICAgICAgIGlmICghcGFnZUluZGV4ICYm
IGJhY2t3YXJkcykKLSAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4ID0gX3BhZ2VzLnNpemUo
KSAtIDE7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocGFnZUluZGV4ID09IF9wYWdlcy5zaXpl
KCkgLSAxICYmICFiYWNrd2FyZHMpCi0gICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleCA9IDA7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBwYWdlSW5kZXggKz0g
YmFja3dhcmRzID8gLTEgOiAxOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBbc2VsZiBfZGlkRmluZE1hdGNoOm1hdGNoXTsKLQotICAgICAg
ICAgICAgaWYgKF9jYWNoZWRGaW5kTWF0Y2hlcy5zaXplKCkgPD0gbWF4Q291bnQpIHsKLSAgICAg
ICAgICAgICAgICBfY3VycmVudEZpbmRNYXRjaEluZGV4ID0gMDsKLSAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGtub3duTWF0Y2ggOiBfY2FjaGVkRmluZE1hdGNoZXMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoLnN0cmluZ1JhbmdlLmxvY2F0aW9uID09IFtrbm93bk1h
dGNoIHN0cmluZ1JhbmdlXS5sb2NhdGlvbiAmJiBtYXRjaC5zdHJpbmdSYW5nZS5sZW5ndGggPT0g
W2tub3duTWF0Y2ggc3RyaW5nUmFuZ2VdLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZpbmRTdHJpbmcocGFnZS5nZXQoKSwgc3RyaW5nLCB7
IH0sIF9jYWNoZWRGaW5kTWF0Y2hlcy5zaXplKCksIF9jdXJyZW50RmluZE1hdGNoSW5kZXgsIGZh
bHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIF9jdXJyZW50RmluZE1hdGNoSW5kZXgrKzsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZhaWxUb0ZpbmRT
dHJpbmcocGFnZS5nZXQoKSwgc3RyaW5nKTsKLSAgICB9XTsKLX0KLQotLSAodm9pZCl3ZWJfaGlk
ZUZpbmRVSQotewotICAgIGlmIChfY3VycmVudEZpbmRTZWxlY3Rpb24pCi0gICAgICAgIFtfcGFn
ZXNbX2N1cnJlbnRGaW5kUGFnZUluZGV4XS52aWV3IGNsZWFyU2VhcmNoSGlnaGxpZ2h0c107Ci0K
LSAgICBfY3VycmVudEZpbmRTZWxlY3Rpb24gPSBudWxscHRyOwotICAgIF9jYWNoZWRGaW5kU3Ry
aW5nID0gbnVsbHB0cjsKLSAgICBfY2FjaGVkRmluZE1hdGNoZXMuY2xlYXIoKTsKLX0KLQotI3By
YWdtYSBtYXJrIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZQotCi0tICh2b2lkKXpvb206KFVJUERGUGFn
ZVZpZXcgKilwYWdlVmlldyB0bzooQ0dSZWN0KXRhcmdldFJlY3QgYXRQb2ludDooQ0dQb2ludClv
cmlnaW4ga2luZDooVUlQREZPYmplY3RLaW5kKWtpbmQKLXsKLSAgICBfaXNTdGFydGluZ1pvb20g
PSBZRVM7Ci0KLSAgICBCT09MIGlzSW1hZ2UgPSBraW5kID09IGtVSVBERk9iamVjdEtpbmRHcmFw
aGljOwotCi0gICAgaWYgKCFpc0ltYWdlKQotICAgICAgICB0YXJnZXRSZWN0ID0gQ0dSZWN0SW5z
ZXQodGFyZ2V0UmVjdCwgc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0YXJnZXRS
ZWN0LnNpemUud2lkdGgsIHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nICogdGFyZ2V0
UmVjdC5zaXplLmhlaWdodCk7Ci0KLSAgICBDR1JlY3QgcmVjdEluRG9jdW1lbnRDb29yZGluYXRl
cyA9IFtwYWdlVmlldyBjb252ZXJ0UmVjdDp0YXJnZXRSZWN0IHRvVmlldzpzZWxmXTsKLSAgICBD
R1BvaW50IG9yaWdpbkluRG9jdW1lbnRDb29yZGluYXRlcyA9IFtwYWdlVmlldyBjb252ZXJ0UG9p
bnQ6b3JpZ2luIHRvVmlldzpzZWxmXTsKLQotICAgIFtfd2ViVmlldyBfem9vbVRvUmVjdDpyZWN0
SW5Eb2N1bWVudENvb3JkaW5hdGVzIHdpdGhPcmlnaW46b3JpZ2luSW5Eb2N1bWVudENvb3JkaW5h
dGVzIGZpdEVudGlyZVJlY3Q6aXNJbWFnZSBtaW5pbXVtU2NhbGU6cGRmTWluaW11bVpvb21TY2Fs
ZSBtYXhpbXVtU2NhbGU6cGRmTWF4aW11bVpvb21TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6
MF07Ci0KLSAgICBfaXNTdGFydGluZ1pvb20gPSBOTzsKLX0KLQotLSAodm9pZClyZXNldFpvb206
KFVJUERGUGFnZVZpZXcgKilwYWdlVmlldwotewotICAgIFtzZWxmIF9yZXNldFpvb21BbmltYXRl
ZDpZRVNdOwotfQotCi0jcHJhZ21hIG1hcmsgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVn
YXRlCi0KLS0gKHZvaWQpYW5ub3RhdGlvbjooVUlQREZBbm5vdGF0aW9uICopYW5ub3RhdGlvbiB3
YXNUb3VjaGVkQXRQb2ludDooQ0dQb2ludClwb2ludCBjb250cm9sbGVyOihVSVBERkFubm90YXRp
b25Db250cm9sbGVyICopY29udHJvbGxlcgotewotICAgIGlmICghW2Fubm90YXRpb24gaXNLaW5k
T2ZDbGFzczpbVUlQREZMaW5rQW5ub3RhdGlvbiBjbGFzc11dKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBVSVBERkxpbmtBbm5vdGF0aW9uICpsaW5rQW5ub3RhdGlvbiA9IChVSVBERkxpbmtBbm5v
dGF0aW9uICopYW5ub3RhdGlvbjsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IHVybCA9IFtzZWxmIF9V
UkxGb3JMaW5rQW5ub3RhdGlvbjpsaW5rQW5ub3RhdGlvbl07Ci0gICAgaWYgKCF1cmwpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIENHUG9pbnQgZG9jdW1lbnRQb2ludCA9IFtjb250cm9sbGVyLnBh
Z2VWaWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6c2VsZl07Ci0gICAgQ0dQb2ludCBzY3Jl
ZW5Qb2ludCA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UG9pbnQ6W3NlbGYgY29udmVydFBvaW50OmRv
Y3VtZW50UG9pbnQgdG9WaWV3Om5pbF0gdG9XaW5kb3c6bmlsXTsKLSAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiByZXRhaW5lZFdlYlZpZXcgPSBfd2ViVmlldzsKLQotICAgIFtzZWxmIF9oaWdobGln
aHRMaW5rQW5ub3RhdGlvbjpsaW5rQW5ub3RhdGlvbiBmb3JEdXJhdGlvbjouMiBjb21wbGV0aW9u
SGFuZGxlcjpeewotICAgICAgICByZXRhaW5lZFdlYlZpZXctPl9wYWdlLT5uYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljayhbdXJsIGFic29sdXRlU3RyaW5nXSwgV2ViQ29yZTo6cm91
bmRlZEludFBvaW50KGRvY3VtZW50UG9pbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoc2Ny
ZWVuUG9pbnQpKTsKLSAgICB9XTsKLX0KLQotLSAodm9pZClhbm5vdGF0aW9uOihVSVBERkFubm90
YXRpb24gKilhbm5vdGF0aW9uIGlzQmVpbmdQcmVzc2VkQXRQb2ludDooQ0dQb2ludClwb2ludCBj
b250cm9sbGVyOihVSVBERkFubm90YXRpb25Db250cm9sbGVyICopY29udHJvbGxlcgotewotICAg
IGlmICghW2Fubm90YXRpb24gaXNLaW5kT2ZDbGFzczpbVUlQREZMaW5rQW5ub3RhdGlvbiBjbGFz
c11dKQotICAgICAgICByZXR1cm47Ci0KLSAgICBVSVBERkxpbmtBbm5vdGF0aW9uICpsaW5rQW5u
b3RhdGlvbiA9IChVSVBERkxpbmtBbm5vdGF0aW9uICopYW5ub3RhdGlvbjsKLSAgICBOU1VSTCAq
dXJsID0gW3NlbGYgX1VSTEZvckxpbmtBbm5vdGF0aW9uOmxpbmtBbm5vdGF0aW9uXTsKLSAgICBp
ZiAoIXVybCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVx
dWVzdC5wb2ludCA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbY29udHJvbGxlci5wYWdlVmll
dyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9WaWV3OnNlbGZdKTsKLQotICAgIF9wb3NpdGlvbkluZm9y
bWF0aW9uLnVybCA9IHVybDsKLSAgICBfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgPSBXZWJD
b3JlOjpyb3VuZGVkSW50UmVjdChbc2VsZiBjb252ZXJ0UmVjdDpbY29udHJvbGxlci5wYWdlVmll
dyBjb252ZXJ0UmVjdEZyb21QREZQYWdlU3BhY2U6YW5ub3RhdGlvbi5SZWN0XSBmcm9tVmlldzpj
b250cm9sbGVyLnBhZ2VWaWV3XSk7Ci0KLSAgICBbc2VsZiBfaGlnaGxpZ2h0TGlua0Fubm90YXRp
b246bGlua0Fubm90YXRpb24gZm9yRHVyYXRpb246Ljc1IGNvbXBsZXRpb25IYW5kbGVyOl57Ci0g
ICAgICAgIFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgc2hvd0xpbmtTaGVldF07Ci0gICAgfV07Ci19
Ci0KLSNwcmFnbWEgbWFyayBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUKLQotLSAoT3B0
aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4pcG9zaXRpb25J
bmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICopYXNzaXN0YW50Ci17Ci0gICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uOwotfQotCi0t
ICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNz
aXN0YW50IHBlcmZvcm1BY3Rpb246KFdlYktpdDo6U2hlZXRBY3Rpb24pYWN0aW9uCi17Ci0gICAg
aWYgKGFjdGlvbiAhPSBXZWJLaXQ6OlNoZWV0QWN0aW9uOjpDb3B5KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBOU0RpY3Rpb25hcnkgKnJlcHJlc2VudGF0aW9ucyA9IEB7Ci0gICAgICAgIChOU1N0
cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IDogKE5TU3RyaW5nICopX3Bvc2l0aW9uSW5mb3Jt
YXRpb24udXJsLAotICAgICAgICAoTlNTdHJpbmcgKilrVVRUeXBlVVJMIDogKE5TVVJMICopX3Bv
c2l0aW9uSW5mb3JtYXRpb24udXJsCi0gICAgfTsKLQotICAgIFtVSVBhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdLml0ZW1zID0gQFsgcmVwcmVzZW50YXRpb25zIF07Ci19Ci0KLS0gKHZvaWQp
YWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQg
b3BlbkVsZW1lbnRBdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCi17Ci0gICAgQ0dQb2ludCBz
Y3JlZW5Qb2ludCA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UG9pbnQ6W3NlbGYgY29udmVydFBvaW50
OmxvY2F0aW9uIHRvVmlldzpuaWxdIHRvV2luZG93Om5pbF07Ci0gICAgX3dlYlZpZXctPl9wYWdl
LT5uYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhfcG9zaXRpb25JbmZvcm1hdGlv
bi51cmwsIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChzY3JlZW5Qb2ludCkpOwotfQotCi0tICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0
YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhV
Ukw6KE5TVVJMICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKLXsKLSAgICBfd2ViU2Vs
ZWN0aW9uQXNzaXN0YW50ID0gYWRvcHROUyhbW1VJV0tTZWxlY3Rpb25Bc3Npc3RhbnQgYWxsb2Nd
IGluaXRXaXRoVmlldzpzZWxmXSk7Ci0gICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1No
YXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5n
UmVjdF07Ci0gICAgX3dlYlNlbGVjdGlvbkFzc2lzdGFudCA9IG5pbDsKLX0KLQotI2lmIEhBVkUo
QVBQX0xJTktTKQotLSAoQk9PTClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudCBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50
OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQKLXsKLSAgICByZXR1cm4gX3dlYlZp
ZXctPl9wYWdlLT51aUNsaWVudCgpLnNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1l
bnQoZWxlbWVudCk7Ci19Ci0jZW5kaWYKLQotLSAoUmV0YWluUHRyPE5TQXJyYXk+KWFjdGlvblNo
ZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IGRlY2lkZUFj
dGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVs
dEFjdGlvbnM6KFJldGFpblB0cjxOU0FycmF5PilkZWZhdWx0QWN0aW9ucwotewotICAgIHJldHVy
biBfd2ViVmlldy0+X3BhZ2UtPnVpQ2xpZW50KCkuYWN0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwg
V1RGTW92ZShkZWZhdWx0QWN0aW9ucykpOwotfQotCi0jcHJhZ21hIG1hcmsgUGFzc3dvcmQgcHJv
dGVjdGlvbiBVSQotCi0tICh2b2lkKV9zaG93UGFzc3dvcmRFbnRyeUZpZWxkCi17Ci0gICAgW193
ZWJWaWV3IF9zaG93UGFzc3dvcmRWaWV3V2l0aERvY3VtZW50TmFtZTpfc3VnZ2VzdGVkRmlsZW5h
bWUuZ2V0KCkgcGFzc3dvcmRIYW5kbGVyOltyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiks
IHdlYlZpZXcgPSByZXRhaW5QdHIoX3dlYlZpZXcpXShOU1N0cmluZyAqcGFzc3dvcmQpIHsKLSAg
ICAgICAgaWYgKCFDR1BERkRvY3VtZW50VW5sb2NrV2l0aFBhc3N3b3JkKHJldGFpbmVkU2VsZi0+
X2NnUERGRG9jdW1lbnQuZ2V0KCksIHBhc3N3b3JkLlVURjhTdHJpbmcpKSB7Ci0gICAgICAgICAg
ICBbW3dlYlZpZXcgX3Bhc3N3b3JkVmlld10gc2hvd1Bhc3N3b3JkRmFpbHVyZUFsZXJ0XTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFt3ZWJWaWV3IF9oaWRlUGFz
c3dvcmRWaWV3XTsKLSAgICAgICAgW3JldGFpbmVkU2VsZiBfZGlkTG9hZFBERkRvY3VtZW50XTsK
LSAgICB9XTsKLX0KLQotLSAoQk9PTCl3ZWJfaXNCYWNrZ3JvdW5kCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIGlzQmFja2dyb3VuZF07Ci19Ci0KLS0gKHZvaWQpX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZAotewotICAgIFtzdXBlciBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXTsK
LSAgICAvLyBGSVhNRTogSXMgaXQgcmVhbGx5IG5lY2Vzc2FyeSB0byBoaWRlIHRoZSB3ZWIgY29u
dGVudCBkcmF3aW5nIGFyZWEgd2hlbiBhIFBERiBpcyBkaXNwbGF5ZWQ/Ci0gICAgaWYgKGF1dG8g
ZHJhd2luZ0FyZWEgPSBfd2ViVmlldy0+X3BhZ2UtPmRyYXdpbmdBcmVhKCkpCi0gICAgICAgIGRy
YXdpbmdBcmVhLT5oaWRlQ29udGVudFVudGlsQW55VXBkYXRlKCk7Ci19Ci0KLUBlbmQKLQotI3By
YWdtYSBtYXJrIFByaW50aW5nCi0KLSNpZiAhUExBVEZPUk0oSU9TTUFDKQotCi1AaW50ZXJmYWNl
IFdLTGVnYWN5UERGVmlldyAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyKSA8X1dLV2ViVmlld1By
aW50UHJvdmlkZXI+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0xlZ2FjeVBERlZpZXcgKF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlcikKLQotLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9y
UHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm9ybWF0dGVy
Ci17Ci0gICAgQ0dQREZEb2N1bWVudFJlZiBkb2N1bWVudCA9IF9jZ1BERkRvY3VtZW50LmdldCgp
OwotICAgIGlmICghQ0dQREZEb2N1bWVudEFsbG93c1ByaW50aW5nKGRvY3VtZW50KSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBzaXplX3QgbnVtYmVyT2ZQYWdlcyA9IENHUERGRG9jdW1lbnRH
ZXROdW1iZXJPZlBhZ2VzKGRvY3VtZW50KTsKLSAgICBpZiAocHJpbnRGb3JtYXR0ZXIuc25hcHNo
b3RGaXJzdFBhZ2UpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbjxOU1VJbnRlZ2VyPihudW1iZXJP
ZlBhZ2VzLCAxKTsKLQotICAgIHJldHVybiBudW1iZXJPZlBhZ2VzOwotfQotCi0tIChDR1BERkRv
Y3VtZW50UmVmKV93a19wcmludGVkRG9jdW1lbnQKLXsKLSAgICByZXR1cm4gX2NnUERGRG9jdW1l
bnQuZ2V0KCk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vICFQTEFURk9STShJT1NNQUMpCi0KLUFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotCi0jZW5kaWYgLy8gRU5BQkxFKFdLTEVH
QUNZUERGVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDcwZjEyYzU2YTIyMDM2Mjc1Y2Q4MWFhYjIzMzZmNzViNTQxZmQ2MmUuLmVl
M2IzNzNhYTZjNmViNjhkMWJlZTY5MzQ5N2IzZTk0MzFmZjVmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE4LDcgKzYxOCw2IEBA
CiAJCTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkFCNTNG
MTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCAqLzsgfTsKIAkJ
MkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkIzNzE5MThBOTY3QUQwMDQy
QUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ2QkYxMjQyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtp
dFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsuaCAqLzsgfTsK
LQkJMkQ2Q0QxMUIxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkNEMTFBMTg5MDU4
QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5jcHAgKi87IH07CiAJCTJENkNEMTE5MTg5
MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMTcxODkwNThBNTAwRTVBNEEwIC8qIFZp
ZXdTbmFwc2hvdFN0b3JlLmggKi87IH07CiAJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjE2QURCMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbSAqLzsgfTsKIAkJMkQ3MzAzNzkxQTdDMkI3NTAwRjhGNDg3IC8q
IFdLUGFnZU5hdmlnYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJENzMwMzc4MUE3QzJCNzUwMEY4RjQ4NyAvKiBXS1BhZ2VOYXZpZ2F0
aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTcwNCw3ICs3MDMsNiBAQAogCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4MDcgLyogV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDlFQTMwRTFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmggKi87IH07CiAJCTJEQTA0OUI0MTgwQ0NDRDMwMEFBRkE5RSAvKiBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEQTA0OUIyMTgwQ0NDRDMwMEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuaCAqLzsgfTsKIAkJMkRBMDQ5QjgxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5
ZXJDQVJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBMDQ5QjYxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oICov
OyB9OwotCQkyREExRTRGRTE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREExRTRGQzE4QzAy
QjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3LmggKi87IH07CiAJCTJEQTY3MzFBMjBDNzU0
QjEwMDNDQjQwMSAvKiBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE2NzMxOTIwQzc1NEIxMDAzQ0I0MDEg
LyogRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oICovOyB9OwogCQkyREE5NDRBMDE4ODRFNEYw
MDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5OTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9T
RXZlbnRGYWN0b3J5LmggKi87IH07CiAJCTJEQTk0NEE0MTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0
dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLzsgfTsKQEAgLTE1
NzIsNyArMTU3MCw2IEBACiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oICovOyB9OwogCQlDRTExQUQ1MjFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNp
Z25pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovOyB9OwogCQlDRTFBMEJE
MjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkNDMUE0OEU2QzYwMDU0RUY3
NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwotCQlDRTFBMEJEMzFBNDhFNkM2MDA1
NEVGNzQgLyogQ29yZVBERlNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxQTBCQ0QxQTQ4RTZDNjAwNTRFRjc0IC8qIENvcmVQREZTUEkuaCAqLzsg
fTsKIAkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJD
RjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLzsgfTsKIAkJ
Q0UxQTBCRDYxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRD
Q1NQSS5oICovOyB9OwogCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJE
MTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi87IH07CkBAIC0yNDY4LDcgKzI0
NjUsNiBAQAogCQkyRDEwODc2MjFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvYWRQYXJhbWV0
ZXJzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMTI1QzVDMTg1N0VB
MDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEMTI1QzVEMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJE
NkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDEyREFCNDIwNjYyQzczMDA2RjAwRkIg
LyogV0tBbmltYXRpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0FuaW1hdGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
MUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDFCNUQ1QjE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0yNTQ0LDYg
KzI1NDAsNyBAQAogCQkyRDZCRjEyMTIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExp
bmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQZW5jaWxLaXRT
b2Z0TGluay5tbTsgcGF0aCA9IGlvcy9QZW5jaWxLaXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2QkYxMjIyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNv
ZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBlbmNpbEtpdFNvZnRM
aW5rLmg7IHBhdGggPSBpb3MvUGVuY2lsS2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ2Q0QxMTcxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAv
KiBWaWV3U25hcHNob3RTdG9yZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDczMDM3ODFBN0MyQjc1MDBGOEY0
ODcgLyogV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJENzkwQTlDMUFENzA1MEQwMEFCOTBCMyAvKiBfV0tMYXlvdXRNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0xheW91dE1vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzMsOCArMjczMCw2IEBACiAJCTJEQTA0OUIyMTgwQ0NDRDMw
MEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEQTA0OUI1MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1v
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNBUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBMDQ5QjYxODBD
Q0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMkRBMUU0RkMxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0xlZ2FjeVBERlZpZXcuaDsg
cGF0aCA9IGlvcy9XS0xlZ2FjeVBERlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMkRBMUU0RkQxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLTGVnYWN5UERGVmlldy5tbTsgcGF0
aCA9IGlvcy9XS0xlZ2FjeVBERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEQTY3MzE5MjBDNzU0QjEwMDNDQjQwMSAvKiBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IER5bmFtaWNWaWV3cG9ydFNpemVVcGRh
dGUuaDsgcGF0aCA9IGlvcy9EeW5hbWljVmlld3BvcnRTaXplVXBkYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEQTdGRENCMThGODg2MjUwMDhEREVEMCAvKiBGaW5kSW5kaWNh
dG9yT3ZlcmxheUNsaWVudElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaW5kSW5kaWNhdG9yT3Zlcmxh
eUNsaWVudElPUy5oOyBwYXRoID0gaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NDk3MTg4NEU0RjAwMEVEODZEQiAv
KiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbTsgcGF0aCA9IGlvcy9O
YXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDQwMyw3ICs0Mzk4LDYgQEAKIAkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVT
aWduaW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29kZVNp
Z25pbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTFBRDUxMUNCQzQ4MkYw
MDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2RlU2lnbmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJDQzFB
NDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQ0UxQTBCQ0QxQTQ4RTZDNjAwNTRFRjc0IC8qIENvcmVQREZTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVBERlNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENv
bmZpZ3VyYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdl
ZENvbmZpZ3VyYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBC
RDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUQ0NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDEx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU4NTYsOCArNTg1MCw2IEBACiAJCQkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCTJERDVFMTI3MjEw
QURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCAqLywKIAkJCQky
REQ1RTEyNjIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1t
ICovLAotCQkJCTJEQTFFNEZDMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCAq
LywKLQkJCQkyREExRTRGRDE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3Lm1tICov
LAogCQkJCUExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLAog
CQkJCUExNUVFREUzMUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5tbSAqLywKIAkJ
CQkyRDZBQjUzRjE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmgg
Ki8sCkBAIC03NDY0LDggKzc0NTYsOCBAQAogCQkJCUM5OEM0OEE0MUI2RkQ0QzMwMDE0NTEwMyAv
KiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLywKIAkJCQlDOUMxODMzNzFCNzNGRDZB
MDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcCAqLywKIAkJ
CQlDOUMxODMzODFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
Q2xpZW50LmggKi8sCisJCQkJMkQzRUY0NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVBy
ZXNzdXJlSGFuZGxlci5jcHAgKi8sCiAJCQkJMkQzRUY0NDExOTE3NjQ2MzAwMDM0MTg0IC8qIFdl
Yk1lbW9yeVByZXNzdXJlSGFuZGxlci5oICovLAotCQkJCTJEM0VGNDQwMTkxNzY0NjMwMDAzNDE4
NCAvKiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0gKi8sCiAJCQkJN0NDQ0M4RjgxQTVGNTBG
RDAwOEZCMERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5jcHAgKi8sCiAJCQkJN0NDQ0M4RjkxQTVG
NTBGRDAwOEZCMERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5oICovLAogCQkJCUJDMURGRUEzMTJC
MzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCAqLywK
QEAgLTg2ODgsNyArODY4MCw2IEBACiAJCQkJMkRCNzY2NzAyMUI1RTQ4QTAwNDVEREIxIC8qIEFj
Y2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi8sCiAJCQkJQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0
IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi8sCiAJCQkJQ0RBMDQxRjMxQUNFMjEwNTAwNEEx
M0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggKi8sCi0JCQkJQ0UxQTBCQ0QxQTQ4RTZDNjAw
NTRFRjc0IC8qIENvcmVQREZTUEkuaCAqLywKIAkJCQkyRDRBRjA4ODIwNDRDM0M0MDA2Qzg4MTcg
LyogRnJvbnRCb2FyZFNlcnZpY2VzU1BJLmggKi8sCiAJCQkJQ0UxQTBCQ0YxQTQ4RTZDNjAwNTRF
Rjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggKi8sCiAJCQkJQTEzQjNEQTEyMDdGMzlE
RTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCAqLywKQEAgLTkwMzEsNyArOTAyMiw2IEBACiAJ
CQkJMzdDNEU5RjYxMzFDNkU3RTAwMjlCRDVBIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMwMzJEQUIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMDZEN0M0MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRh
LmggaW4gSGVhZGVycyAqLywKLQkJCQlDRTFBMEJEMzFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBE
RlNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDMjFDQUUxRTk5NEMwQzAwMjlENUY5IC8qIENv
cmVQcmVkaWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlCODc4QjYxNTEzMzQyOERDMDA2
ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUZCNjgyNzFG
NkU1MUMxMDBDNDNGOUYgLyogQ3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oIGluIEhlYWRlcnMgKi8s
CkBAIC05NzcxLDcgKzk3NjEsNiBAQAogCQkJCTJERDVFMTI5MjEwQURDN0IwMERCNjAxMiAvKiBX
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTlFMTBC
MTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENzkwQTlGMUFENzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTJEQTFFNEZFMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZp
ZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNUNFQzMwMjIwOTExQzcwMEQ2QkJCMCAvKiBXS01h
aW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUM5OEM0OEFBMUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlDRDQzOUQxQjRC
MDI0RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>