<?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>184010</bug_id>
          
          <creation_ts>2018-03-26 09:57:08 -0700</creation_ts>
          <short_desc>[LayoutReloaded] Add InlineText DOM interface and dependencies.</short_desc>
          <delta_ts>2018-03-26 10:04:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1409306</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-03-26 09:57:08 -0700</bug_when>
    <thetext>to help inline text layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409308</commentid>
    <comment_count>1</comment_count>
      <attachid>336522</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-03-26 10:02:45 -0700</bug_when>
    <thetext>Created attachment 336522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409309</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-03-26 10:03:58 -0700</bug_when>
    <thetext>Committed r229975: &lt;https://trac.webkit.org/changeset/229975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409310</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-26 10:04:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/38870245&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336522</attachid>
            <date>2018-03-26 10:02:45 -0700</date>
            <delta_ts>2018-03-26 10:02:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184010-20180326100244.patch</filename>
            <type>text/plain</type>
            <size>56554</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTc0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2JjY2I3NDU0MmQ1ZGYwYjM2ZDJkNWI1YzkzYzY2ZDU2
ZWUyOWYyMi4uNzdjYzg4MDcwNWJkNjE1MmMxYjk0MWM4MTQwOGEzMTVkM2MwNmFmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE4LTAzLTI2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0xheW91dFJlbG9hZGVkXSBBZGQgSW5saW5lVGV4dCBET00gaW50ZXJmYWNlIGFuZCBkZXBl
bmRlbmNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IHRvIGhlbHAgaW5saW5lIHRleHQgbGF5b3V0LgorCisgICAgICAgICogTGF5b3V0UmVsb2FkZWQv
bWlzYy9MYXlvdXRSZWxvYWRlZFdlYktpdC5wYXRjaDoKKwogMjAxOC0wMy0yNSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBB
ZGQgQVBJIHRvIGNvbnZlcnQgYmV0d2VlbiBET00gYW5kIEpTQ1ZhbHVlCmRpZmYgLS1naXQgYS9U
b29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xheW91dFJlbG9hZGVkV2ViS2l0LnBhdGNoIGIvVG9v
bHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MYXlvdXRSZWxvYWRlZFdlYktpdC5wYXRjaAppbmRleCBl
MWFjMTMyY2UyMjk1MmFjZDMwZTY2ZjRhMzc3ZDViZmQzNWRjYWQzLi42MTFkM2YwNTcwYjQxNTU0
ODliMjQyYWFmMWU4ODVjYTM4ZjE5Yzg0IDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRl
ZC9taXNjL0xheW91dFJlbG9hZGVkV2ViS2l0LnBhdGNoCisrKyBiL1Rvb2xzL0xheW91dFJlbG9h
ZGVkL21pc2MvTGF5b3V0UmVsb2FkZWRXZWJLaXQucGF0Y2gKQEAgLTEsOCArMSw4IEBACiBkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKLWluZGV4IDkyMWExMDgyMDZiLi42Nzk3MDNmYTllOSAxMDA2NDQKK2luZGV4IDg0YmM0
NGM3NDUwLi5kM2VhMWUwMmY5YSAxMDA2NDQKIC0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKICsrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKLUBAIC0xMTE2LDcgKzExMTYsNyBA
QAorQEAgLTExMTksNyArMTExOSw3IEBACiAgI2lmICFkZWZpbmVkKE5ERUJVRykKICAjZGVmaW5l
IEVOQUJMRV9UUkVFX0RFQlVHR0lORyAxCiAgI2Vsc2UKQEAgLTExLDExICsxMSwxMjYgQEAgaW5k
ZXggOTIxYTEwODIwNmIuLjY3OTcwM2ZhOWU5IDEwMDY0NAogICNlbmRpZgogICNlbmRpZgogIAor
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCitpbmRleCBmNWQwZTVkMmMzZS4uMzk0NTA5MGFj
ZjMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCitAQCAtNTMyLDYgKzUzMiw3IEBA
IEpTX0JJTkRJTkdfSURMUyA9IFwKKyAgICAgJChXZWJDb3JlKS9kb20vVGV4dERlY29kZXIuaWRs
IFwKKyAgICAgJChXZWJDb3JlKS9kb20vVGV4dEVuY29kZXIuaWRsIFwKKyAgICAgJChXZWJDb3Jl
KS9kb20vVGV4dEV2ZW50LmlkbCBcCisrICAgICQoV2ViQ29yZSkvZG9tL0lubGluZVRleHRSdW4u
aWRsIFwKKyAgICAgJChXZWJDb3JlKS9kb20vVHJhbnNpdGlvbkV2ZW50LmlkbCBcCisgICAgICQo
V2ViQ29yZSkvZG9tL1RyZWVXYWxrZXIuaWRsIFwKKyAgICAgJChXZWJDb3JlKS9kb20vVUlFdmVu
dC5pZGwgXAorZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKK2luZGV4IDAyZGE0Y2I0NDNjLi5hYTc1N2ZjYjQyZSAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorQEAgLTE3OTgsNyArMTc5OCw5IEBAIHJlbmRlcmluZy9JbmxpbmVCb3gu
Y3BwCisgcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guY3BwCisgcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwCisgcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmNwcAorK3JlbmRlcmluZy9Jbmxp
bmVUZXh0QnJlYWtlci5jcHAKKyByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKytyZW5kZXJp
bmcvSW5saW5lVGV4dFJ1bkl0ZXJhdG9yLmNwcAorIHJlbmRlcmluZy9MYXlvdXREaXNhbGxvd2Vk
U2NvcGUuY3BwCisgcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAKKyByZW5kZXJpbmcvTGF5
b3V0U3RhdGUuY3BwCitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCitpbmRleCA5YmI1NmYwMWE4MS4uYWExMDNkOGQ3ODIgMTAwNjQ0CistLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorQEAgLTM5
Nyw2ICszOTcsMTAgQEAKKyAJCTExOTM0MDhBMUZFQjM1NUQwMDkzNUYxRSAvKiBSZW5kZXJUcmVl
QnVpbGRlclJ1YnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDExOTM0MDg4MUZFQjM1NUQwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlclJ1YnkuaCAq
LzsgfTsKKyAJCTExOTM0MDk3MUZFRDcxNTUwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckZv
cm1Db250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTE5MzQwOTUxRkVENzE1NTAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRy
b2xzLmggKi87IH07CisgCQkxMTkzNDBBMzFGRUUwMjQwMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1
aWxkZXJCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTE5MzQwQTExRkVFMDI0MDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyQmxvY2suaCAq
LzsgfTsKKysJCTExQzBDNzlFMjA2OTRBRTEwMEJFM0E4NCAvKiBJbmxpbmVUZXh0UnVuSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExQzBD
Nzk5MjA2OTRBREUwMEJFM0E4NCAvKiBJbmxpbmVUZXh0UnVuSXRlcmF0b3IuaCAqLzsgfTsKKysJ
CTExQzBDN0EwMjA2OTRBRTEwMEJFM0E4NCAvKiBJbmxpbmVUZXh0QnJlYWtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFDMEM3OUMyMDY5NEFFMDAw
QkUzQTg0IC8qIElubGluZVRleHRCcmVha2VyLmggKi87IH07CisrCQkxMUMwQzdBNTIwNjk0QjBB
MDBCRTNBODQgLyogSW5saW5lVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTFDMEM3QTMyMDY5NEIwOTAwQkUzQTg0IC8qIElubGluZVRleHRS
dW4uaCAqLzsgfTsKKysJCTExQzBDN0E3MjA2OTUzRjcwMEJFM0E4NCAvKiBKU0lubGluZVRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFD
MEM3QTYyMDY5NTNGNjAwQkUzQTg0IC8qIEpTSW5saW5lVGV4dFJ1bi5jcHAgKi87IH07CisgCQkx
MUNCMjc4OTIwM0JBNTcwMDA0QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUNCMjc4NzIw
M0JBNTcwMDA0QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmggKi87IH07Cisg
CQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUUwNjdFRDFF
NjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKyAJCTE0MDBEN0E4MTcxMzZFQTcw
MDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2Ny
aXB0V3JhcHBhYmxlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CitAQCAtNTcwNCw2ICs1NzA4LDEzIEBACisgCQkxMTkzNDA5NTFGRUQ3MTU1
MDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKyAJCTExOTM0MEEwMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckJs
b2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworIAkJMTE5MzQwQTExRkVFMDI0MDAwOTM1RjFFIC8q
IFJlbmRlclRyZWVCdWlsZGVyQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJlZUJ1aWxk
ZXJCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworKwkJMTFDMEM3OTkyMDY5NEFE
RTAwQkUzQTg0IC8qIElubGluZVRleHRSdW5JdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0UnVuSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKysJCTExQzBDNzlCMjA2OTRBREYwMEJFM0E4NCAvKiBJbmxpbmVUZXh0QnJlYWtl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0QnJl
YWtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisrCQkxMUMwQzc5QzIwNjk0QUUw
MDBCRTNBODQgLyogSW5saW5lVGV4dEJyZWFrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5saW5lVGV4dEJyZWFrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KysJCTExQzBDNzlEMjA2OTRBRTAwMEJFM0E4NCAvKiBJbmxpbmVUZXh0UnVuSXRlcmF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dFJ1bkl0ZXJh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKysJCTExQzBDN0EyMjA2OTRCMDgw
MEJFM0E4NCAvKiBJbmxpbmVUZXh0UnVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbmxp
bmVUZXh0UnVuLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKysJCTExQzBDN0EzMjA2
OTRCMDkwMEJFM0E4NCAvKiBJbmxpbmVUZXh0UnVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElubGluZVRleHRSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKysJ
CTExQzBDN0E2MjA2OTUzRjYwMEJFM0E4NCAvKiBKU0lubGluZVRleHRSdW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNJbmxpbmVUZXh0UnVuLmNwcDsgcGF0aCA9
IEpTSW5saW5lVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisgCQkxMUM1
RjExNjIwMDNFNzc1MDAwMUFFNjAgLyogUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworIAkJMTFDNUYxMTgyMDAzRTc3NjAwMDFB
RTYwIC8qIFJlbmRlclRyZWVCdWlsZGVySW5saW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVySW5saW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisgCQkxMUM1RjExRDIwMDNGNjlFMDAwMUFFNjAgLyogUmVuZGVyVHJlZUJ1aWxkZXJC
bG9ja0Zsb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJlZUJ1
aWxkZXJCbG9ja0Zsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0BAIC0yMjEzMCw2
ICsyMjE0MSw3IEBACisgCQlBODNCNzkxMDBDQ0IwMDFCMDAwQjA4MjUgLyogQ29yZSAqLyA9IHsK
KyAJCQlpc2EgPSBQQlhHcm91cDsKKyAJCQljaGlsZHJlbiA9ICgKKysJCQkJMTFDMEM3QTYyMDY5
NTNGNjAwQkUzQTg0IC8qIEpTSW5saW5lVGV4dFJ1bi5jcHAgKi8sCisgCQkJCTdDMzBEOTdFMUY4
MTVBQzAwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5jcHAgKi8sCisgCQkJCTdDMzBEOTgw
MUY4MTVBQzEwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oICovLAorIAkJCQk3QzMwRDk4
MjFGODE1QUMyMDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5jcHAgKi8sCitAQCAtMjU0NjEsNiAr
MjU0NzMsMTAgQEAKKyAJCUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJpbmcgKi8g
PSB7CisgCQkJaXNhID0gUEJYR3JvdXA7CisgCQkJY2hpbGRyZW4gPSAoCisrCQkJCTExQzBDNzlC
MjA2OTRBREYwMEJFM0E4NCAvKiBJbmxpbmVUZXh0QnJlYWtlci5jcHAgKi8sCisrCQkJCTExQzBD
NzlDMjA2OTRBRTAwMEJFM0E4NCAvKiBJbmxpbmVUZXh0QnJlYWtlci5oICovLAorKwkJCQkxMUMw
Qzc5RDIwNjk0QUUwMDBCRTNBODQgLyogSW5saW5lVGV4dFJ1bkl0ZXJhdG9yLmNwcCAqLywKKysJ
CQkJMTFDMEM3OTkyMDY5NEFERTAwQkUzQTg0IC8qIElubGluZVRleHRSdW5JdGVyYXRvci5oICov
LAorIAkJCQlGRkI2OThDODE4MzJGMTBCMDAxNThBMzEgLyogbGluZSAqLywKKyAJCQkJNDM5MDQ2
QzIxMkRBMjVDRTAwQUY4MEEyIC8qIG1hdGhtbCAqLywKKyAJCQkJRkQwOEE4NzkxNzVEMzkyNjAw
MkNEMzYwIC8qIHNoYXBlcyAqLywKK0BAIC0yNTc1NSw2ICsyNTc3MSw4IEBACisgCQlGNTIzRDMy
NDAyREU0NDc4MDE4NjM1Q0EgLyogZG9tICovID0geworIAkJCWlzYSA9IFBCWEdyb3VwOworIAkJ
CWNoaWxkcmVuID0gKAorKwkJCQkxMUMwQzdBMzIwNjk0QjA5MDBCRTNBODQgLyogSW5saW5lVGV4
dFJ1bi5oICovLAorKwkJCQkxMUMwQzdBMjIwNjk0QjA4MDBCRTNBODQgLyogSW5saW5lVGV4dFJ1
bi5pZGwgKi8sCisgCQkJCUNFMjYxNkE0MTg3RTY1QzEwMDc5NTVGMyAvKiBpb3MgKi8sCisgCQkJ
CTJENTAzNjY2MUJDREREQzQwMEUyMEJCMyAvKiBtYWMgKi8sCisgCQkJCTUxRUNDM0U0MjAwNTgz
MUYwMDQ4M0VBRSAvKiBtZXNzYWdlcG9ydHMgKi8sCitAQCAtMjY3NDksNiArMjY3NjcsNyBAQAor
IAkJCQkzMURDRDI5RDFBQjRGQkRFMDA3MkU4MTcgLyogQW5pbWF0aW9uVHJpZ2dlci5oIGluIEhl
YWRlcnMgKi8sCisgCQkJCTBGNTgwRkFGMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAorIAkJCQk5MzMwOURENzA5OUU2NDkyMDA1NkU1ODEgLyog
QXBwZW5kTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorKwkJCQkxMUMwQzdBNTIwNjk0QjBB
MDBCRTNBODQgLyogSW5saW5lVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCisgCQkJCUExREY1QTk0
MUY3RUM0MzIwMDU4QTQ3NyAvKiBBcHBsZVBheUNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8s
CisgCQkJCUExMkM1OUVFMjAzNUZDOUIwMDEyMjM2QiAvKiBBcHBsZVBheUVycm9yLmggaW4gSGVh
ZGVycyAqLywKKyAJCQkJN0M2NTc5RTMxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0
ZW0uaCBpbiBIZWFkZXJzICovLAorQEAgLTMwMzQ1LDYgKzMwMzY0LDcgQEAKKyAJCQkJNDk0NUJG
RDQxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKKyAJ
CQkJRTE3QjQ5MTYxNkE5QjA5NDAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRl
cnMgKi8sCisgCQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAorKwkJCQkxMUMwQzdBMDIwNjk0QUUxMDBCRTNB
ODQgLyogSW5saW5lVGV4dEJyZWFrZXIuaCBpbiBIZWFkZXJzICovLAorIAkJCQk4NTRGRTczNzBB
MjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKKyAJCQkJMzdGRDQy
OTgxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggaW4gSGVhZGVycyAqLywKKyAJ
CQkJMTRENjRCNUQxMzRBNUI2QjAwRTU4RkRBIC8qIFRyZWVTY29wZS5oIGluIEhlYWRlcnMgKi8s
CitAQCAtMzA1NTksNiArMzA1NzksNyBAQAorIAkJCQk5N0FBQkQxRTE0RkEwOUQ1MDA3NDU3QUUg
LyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisgCQkJCTk3QUFCRDFGMTRGQTA5
RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKyAJ
CQkJNEEzOEJGNTExNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBp
biBIZWFkZXJzICovLAorKwkJCQkxMUMwQzc5RTIwNjk0QUUxMDBCRTNBODQgLyogSW5saW5lVGV4
dFJ1bkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKyAJCQkJOTdBQUJEMjExNEZBMDlENTAwNzQ1
N0FFIC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKKyAJCQkJOTdBQUJEMjMx
NEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLAorIAkJCQk0QTVBMkFEQzE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5z
aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKK0BAIC0zMTA0Myw2ICszMTA2NCw3IEBACisgCQkJ
CTA3MTk0MjdGMUQwODhGMjEwMDJBQTUxRCAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1t
IGluIFNvdXJjZXMgKi8sCisgCQkJCTA3MDM2M0U1MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlh
Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAorIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBE
RERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLAorKwkJ
CQkxMUMwQzdBNzIwNjk1M0Y3MDBCRTNBODQgLyogSlNJbmxpbmVUZXh0UnVuLmNwcCBpbiBTb3Vy
Y2VzICovLAorIAkJCQkwNzAzNjNFNzE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0gaW4gU291cmNlcyAqLywKKyAJCQkJN0E0NTAzMkYxOERCNzE3MjAwMzc3QjM0IC8q
IEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJMDc1Mzg2MDIxNDQ4
OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIGRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCi1p
bmRleCAyMDllMjlhYTc0MC4uNDExMzUzZTU4NzEgMTAwNjQ0CitpbmRleCA5MjNhYjU0ZDRmMi4u
MTIwMDRiNWFmYmUgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAogKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKLUBAIC00MTE0LDYgKzQxMTQsMzYgQEAgU3RyaW5nIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQpIGMKK0BAIC00MTEzLDYgKzQxMTMsMzYgQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
IGMKICAgICAgcmV0dXJuIHZhbHVlLT5jc3NUZXh0KCk7CiAgfQogIApAQCAtMTE3LDExICsyMzIs
MTM4IEBAIGluZGV4IDA0MTk2NDA1ZGRmLi41OTk4MTIwNWNhZSAxMDA2NDQKICAgICAgU3RyaW5n
IGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwog
ICAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpIGZpbmFsOwogICAgICBib29sIGlzUHJvcGVydHlJbXBsaWNpdChjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSkgZmluYWw7CitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGlu
ZVRleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVUZXh0UnVuLmgKK25ldyBmaWxl
IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uN2FlNDg2NDlmYmQKKy0tLSAvZGV2L251
bGwKKysrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVUZXh0UnVuLmgKK0BAIC0wLDAgKzEs
NzkgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0
OgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisrICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisr
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNwcmFnbWEgb25j
ZQorKworKyNpbmNsdWRlICJJbmxpbmVUZXh0UnVuSXRlcmF0b3IuaCIKKysjaW5jbHVkZSA8d3Rm
L1JlZi5oPgorKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorKworK25hbWVzcGFjZSBXZWJD
b3JlIHsKKysKKytjbGFzcyBJbmxpbmVUZXh0UnVuIDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5l
VGV4dFJ1bj4geworKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKytwdWJsaWM6CisrICAg
IHN0YXRpYyBSZWY8SW5saW5lVGV4dFJ1bj4gY3JlYXRlKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24s
IHVuc2lnbmVkIGVuZFBvc2l0aW9uLCBkb3VibGUgd2lkdGgsIHVuc2lnbmVkIHR5cGUsIGJvb2wg
aXNDb2xsYXBzZWQsIGJvb2wgaXNDb2xsYXBzaWJsZSkKKysgICAgICAgIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW5saW5lVGV4dFJ1bihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgd2lkdGgs
IHR5cGUsIGlzQ29sbGFwc2VkLCBpc0NvbGxhcHNpYmxlKSk7IH0KKysKKysgICAgc3RhdGljIFJl
ZjxJbmxpbmVUZXh0UnVuPiBjcmVhdGUoY29uc3QgTGF5b3V0UmVsb2FkZWQ6OklubGluZVRleHRS
dW5JdGVyYXRvcjo6UnVuJiBydW4pCisrICAgICAgICB7IHJldHVybiBhZG9wdFJlZigqbmV3IElu
bGluZVRleHRSdW4ocnVuLnN0YXJ0KCksIHJ1bi5lbmQoKSwgcnVuLndpZHRoKCksIHJ1bi50eXBl
KCksIHJ1bi5pc0NvbGxhcHNlZCgpLCBydW4uaXNDb2xsYXBzaWJsZSgpKSk7IH0KKysKKysgICAg
ZW51bSBUeXBlIHsgSW52YWxpZCwgQ29udGVudEVuZCwgU29mdExpbmVCcmVhaywgV2hpdGVzcGFj
ZSwgTm9uV2hpdGVzcGFjZSwgTWl4ZWQgfTsKKysgICAgdm9pZCBzZXRTdGFydFBvc2l0aW9uKHVu
c2lnbmVkIHBvc2l0aW9uKSB7IG1fc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CisrICAgIHZv
aWQgc2V0RW5kUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24pIHsgbV9lbmRQb3NpdGlvbiA9IHBv
c2l0aW9uOyB9CisrICAgIHZvaWQgc2V0V2lkdGgoZG91YmxlIHdpZHRoKSB7IG1fd2lkdGggPSB3
aWR0aDsgfQorKyAgICB2b2lkIHNldFR5cGVNaXhlZCgpIHsgbV90eXBlID0gSW5saW5lVGV4dFJ1
bjo6TWl4ZWQ7IH0KKysgICAgdm9pZCBzZXRJc0NvbGxhcHNlZCgpIHsgbV9pc0NvbGxhcHNlZCA9
IHRydWU7IH0KKysKKysgICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnRQb3NpdGlvbjsgfQorKyAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kUG9zaXRpb247IH0KKysgICAgZG91YmxlIHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aDsgfQorKyAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CisrICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGVuZFBvc2l0aW9uKCkg
LSBzdGFydFBvc2l0aW9uKCk7IH0KKysgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNDb2xsYXBzZWQ7IH0KKysgICAgYm9vbCBpc0NvbGxhcHNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NvbGxhcHNpYmxlOyB9CisrCisrcHJvdGVjdGVkOgorKyAgICBJbmxpbmVUZXh0
UnVuKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uLCBkb3VibGUg
d2lkdGgsIHVuc2lnbmVkIHR5cGUsIGJvb2wgaXNDb2xsYXBzZWQsIGJvb2wgaXNDb2xsYXBzaWJs
ZSkKKysgICAgICAgIDogbV9zdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pCisrICAgICAgICAs
IG1fZW5kUG9zaXRpb24oZW5kUG9zaXRpb24pCisrICAgICAgICAsIG1fd2lkdGgod2lkdGgpCisr
ICAgICAgICAsIG1fdHlwZSh0eXBlKQorKyAgICAgICAgLCBtX2lzQ29sbGFwc2VkKGlzQ29sbGFw
c2VkKQorKyAgICAgICAgLCBtX2lzQ29sbGFwc2libGUoaXNDb2xsYXBzaWJsZSkKKysgICAgewor
KyAgICB9CisrCisrICAgIElubGluZVRleHRSdW4oKSA9IGRlZmF1bHQ7CisrCisrICAgIHVuc2ln
bmVkIG1fc3RhcnRQb3NpdGlvbiB7IDAgfTsKKysgICAgdW5zaWduZWQgbV9lbmRQb3NpdGlvbiB7
IDAgfTsKKysgICAgZG91YmxlIG1fd2lkdGggeyAwIH07CisrICAgIHVuc2lnbmVkIG1fdHlwZSB7
IDAgfTsKKysgICAgYm9vbCBtX2lzQ29sbGFwc2VkIHsgZmFsc2UgfTsKKysgICAgYm9vbCBtX2lz
Q29sbGFwc2libGUgeyBmYWxzZSB9OworK307CisrCisrfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JbmxpbmVUZXh0UnVuLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVU
ZXh0UnVuLmlkbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4yMGMw
MWI4Y2ZmNQorLS0tIC9kZXYvbnVsbAorKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVRl
eHRSdW4uaWRsCitAQCAtMCwwICsxLDM2IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqCisr
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKysgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisrICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKysg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKysgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KysgKi8KKysKKytbCisrICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorKyAgICBJbXBsZW1lbnRhdGlv
bkxhY2tzVlRhYmxlLAorK10gaW50ZXJmYWNlIElubGluZVRleHRSdW4geworKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgbG9uZyBzdGFydFBvc2l0aW9uOworKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBlbmRQb3NpdGlvbjsKKysgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSB3aWR0aDsK
KysgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgdHlwZTsKKysgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gaXNDb2xsYXBzZWQ7CisrICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGlzQ29sbGFwc2libGU7CisrfTsKIGRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKLWluZGV4IDJkODk5ZTc2YjlhLi43
MTc1MWM4NjJhMSAxMDA2NDQKK2luZGV4IDVmYzRjYjE2NjIwLi5kZWYwMThmZGYzZiAxMDA2NDQK
IC0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAogKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCi1AQCAtNTE0LDYgKzUxNCwyNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2Rl
OjpiZWZvcmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCitAQCAt
NTE3LDYgKzUxNywyNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpiZWZvcmUoVmVjdG9yPE5v
ZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiAgICAgIHJldHVybiBwYXJlbnQtPmlu
c2VydEJlZm9yZSgqbm9kZSwgdmlhYmxlUHJldmlvdXNTaWJsaW5nLmdldCgpKTsKICB9CiAgCkBA
IC0xNTAsMTAgKzM5MiwxMCBAQCBpbmRleCAyZDg5OWU3NmI5YS4uNzE3NTFjODYyYTEgMTAwNjQ0
CiAgewogICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwog
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCi1pbmRleCBhY2VlNDg2YTAwZC4uNTE0YjI5MTFkM2YgMTAwNjQ0CitpbmRleCA3
NDg4ZjVkNDdkMi4uY2IwYjA1NDk5N2YgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCiArKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCi1AQCAtMTc4LDcgKzE3OCwx
MSBAQCBwdWJsaWM6CitAQCAtMTc5LDcgKzE3OSwxMSBAQCBwdWJsaWM6CiAgCiAgICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyB0ZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzID0g
ZmFsc2UpIGNvbnN0OwogICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRU
ZXh0Q29udGVudChjb25zdCBTdHJpbmcmKTsKQEAgLTE4Miw3ICs0MjQsNyBAQCBpbmRleCAyNTE3
N2E4Y2Q0My4uMjk0MzA3ZGM4MTUgMTAwNjQ0CiAgICAgIERPTVN0cmluZz8gbG9va3VwTmFtZXNw
YWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKICAgICAgYm9vbGVhbiBpc0RlZmF1bHROYW1lc3Bh
Y2UoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkkpOwogZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAot
aW5kZXggYTYyZTIwMDU1MDUuLmE3MTk0N2NjNTRmIDEwMDY0NAoraW5kZXggMzFmYjk1YzRjNjIu
LjgyZTUzOGZjNjhmIDEwMDY0NAogLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCiArKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKIEBAIC0yOSw2ICsy
OSw3IEBACkBAIC0xOTMsMTUgKzQzNSwzNSBAQCBpbmRleCBhNjJlMjAwNTUwNS4uYTcxOTQ3Y2M1
NGYgMTAwNjQ0CiAgI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogICNp
bmNsdWRlICJDU1NSdWxlLmgiCiAgI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCi1AQCAtNzgsNiAr
NzksNyBAQAorQEAgLTYzLDkgKzY0LDExIEBACisgI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgorICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyAjaW5jbHVkZSAiSGlzdG9yeS5oIgorKyNpbmNsdWRlICJJ
bmxpbmVUZXh0UnVuSXRlcmF0b3IuaCIKKyAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCisgI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorICNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKKysjaW5jbHVkZSAiSW5saW5lVGV4dEJyZWFrZXIuaCIKKyAjaW5j
bHVkZSAiTG9jYXRpb24uaCIKKyAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisgI2luY2x1ZGUgIk1l
ZGlhUXVlcnlMaXN0LmgiCitAQCAtNzgsNiArODEsNyBAQAogICNpbmNsdWRlICJQYWdlQ29uc29s
ZUNsaWVudC5oIgogICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAgI2luY2x1ZGUg
IlBlcmZvcm1hbmNlLmgiCiArI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICAjaW5jbHVkZSAiUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCIKICAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5m
by5oIgotICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLUBAIC0xMTUsNiAr
MTE3LDcgQEAKKyAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKK0BAIC0xMDAsNiAr
MTA0LDcgQEAKKyAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorICNpbmNsdWRlICJTdHlsZVNj
b3BlLmgiCisgI2luY2x1ZGUgIlN1ZGRlblRlcm1pbmF0aW9uLmgiCisrI2luY2x1ZGUgIklubGlu
ZVRleHRSdW4uaCIKKyAjaW5jbHVkZSAiVVJMLmgiCisgI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5k
aWNhdG9yLmgiCisgI2luY2x1ZGUgIlZpc3VhbFZpZXdwb3J0LmgiCitAQCAtMTE2LDYgKzEyMSw3
IEBACiAgI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAgI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC0yMDksOCArNDcxLDggQEAgaW5kZXgg
YTYyZTIwMDU1MDUuLmE3MTk0N2NjNTRmIDEwMDY0NAogICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KICAKICAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLUBAIC0xMzc3
LDYgKzEzODAsMjUgQEAgU3RyaW5nIERPTVdpbmRvdzo6bmFtZSgpIGNvbnN0Ci0gICAgIHJldHVy
biBtX2ZyYW1lLT50cmVlKCkubmFtZSgpOworQEAgLTEzNTcsNiArMTM2Myw0MSBAQCBpbnQgRE9N
V2luZG93OjpzY3JvbGxZKCkgY29uc3QKKyAgICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRU
b0NTU1VuaXRzKHZpZXctPmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKS55KCkpOwogIH0KICAKICtT
dHJpbmcgRE9NV2luZG93OjpzaW1wbGlmaWVkUmVuZGVyVHJlZSgpIGNvbnN0CkBAIC0yMjMsNiAr
NDg1LDIyIEBAIGluZGV4IGE2MmUyMDA1NTA1Li5hNzE5NDdjYzU0ZiAxMDA2NDQKICsgICAgcmV0
dXJuIG1fZnJhbWUtPnZpZXcoKS0+cmVuZGVyVmlldygpLT5yZW5kZXJUcmVlU3RydWN0dXJlKCk7
CiArfQogKworK1ZlY3RvcjxSZWY8SW5saW5lVGV4dFJ1bj4+IERPTVdpbmRvdzo6Y29sbGVjdFRl
eHRSdW5zKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZSYgY29udGFpbmVyLCBmbG9hdCBh
dmFpbGFibGVTcGFjZSkKKyt7CisrICAgIFZlY3RvcjxSZWY8SW5saW5lVGV4dFJ1bj4+IHRleHRS
dW5zOworKyAgICBMYXlvdXRSZWxvYWRlZDo6SW5saW5lVGV4dFJ1bkl0ZXJhdG9yIHRleHRJdGVy
YXRvcih0ZXh0LCBjb250YWluZXIucmVuZGVyZXIoKS0+c3R5bGUoKSk7CisrICAgIHdoaWxlICh0
cnVlKSB7CisrICAgICAgICBhdXRvIHJ1biA9IHRleHRJdGVyYXRvci5uZXh0UnVuKCk7CisrICAg
ICAgICBpZiAocnVuLnR5cGUoKSA9PSBMYXlvdXRSZWxvYWRlZDo6SW5saW5lVGV4dFJ1bkl0ZXJh
dG9yOjpSdW46OkNvbnRlbnRFbmQpCisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB0ZXh0
UnVucy5hcHBlbmQoSW5saW5lVGV4dFJ1bjo6Y3JlYXRlKHJ1bikpOworKyAgICB9CisrICAgIGlm
IChzdGQ6OmlzbmFuKGF2YWlsYWJsZVNwYWNlKSkKKysgICAgICAgIHJldHVybiB0ZXh0UnVuczsK
KysKKysgICAgcmV0dXJuIExheW91dFJlbG9hZGVkOjpJbmxpbmVUZXh0QnJlYWtlcjo6Y29sbGVj
dFJ1bnModGV4dFJ1bnMsIHRleHQsIGF2YWlsYWJsZVNwYWNlLCBjb250YWluZXIucmVuZGVyZXIo
KS0+c3R5bGUoKSk7CisrfQorKwogK2ludCBET01XaW5kb3c6Om5leHRCcmVha2luZ09wcG9ydHVu
aXR5KGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKICt7CiArICAg
IExhenlMaW5lQnJlYWtJdGVyYXRvciBsaW5lQnJlYWtJdGVyYXRvcih0ZXh0LCBtX2ZyYW1lLT52
aWV3KCktPnJlbmRlclZpZXcoKS0+c3R5bGUoKS5sb2NhbGUoKSk7CkBAIC0yMzIsMzUgKzUxMCw1
MyBAQCBpbmRleCBhNjJlMjAwNTUwNS4uYTcxOTQ3Y2M1NGYgMTAwNjQ0CiArICAgIHJldHVybiBu
ZXh0QnJlYWthYmxlUG9zaXRpb25XaXRob3V0U2hvcnRjdXQobGluZUJyZWFrSXRlcmF0b3IsIHN0
YXJ0UG9zaXRpb24pOwogK30KICsKLSB2b2lkIERPTVdpbmRvdzo6c2V0TmFtZShjb25zdCBTdHJp
bmcmIHN0cmluZykKKyBib29sIERPTVdpbmRvdzo6Y2xvc2VkKCkgY29uc3QKICB7Ci0gICAgIGlm
ICghbV9mcmFtZSkKKyAgICAgcmV0dXJuICFtX2ZyYW1lOwogZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
Ci1pbmRleCA2NDIyYTQ4NTE3YS4uZmNjYzdlZjFhOWYgMTAwNjQ0CitpbmRleCA2NDIyYTQ4NTE3
YS4uMzgxNTA0YzRhMmEgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCiArKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCi1AQCAtMTkxLDYgKzE5
MSwxMCBAQCBwdWJsaWM6CitAQCAtNDgsNyArNDgsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgU3Ryb25nOworIH0KKyAKKyBuYW1lc3BhY2UgV2ViQ29yZSB7CistCisgY2xhc3MgQmFyUHJv
cDsKKyBjbGFzcyBDU1NSdWxlTGlzdDsKKyBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOworQEAg
LTc3LDYgKzc2LDcgQEAgY2xhc3MgU2NoZWR1bGVkQWN0aW9uOworIGNsYXNzIFNjcmVlbjsKKyBj
bGFzcyBTdG9yYWdlOworIGNsYXNzIFN0eWxlTWVkaWE7CisrY2xhc3MgSW5saW5lVGV4dFJ1bjsK
KyBjbGFzcyBWaXN1YWxWaWV3cG9ydDsKKyBjbGFzcyBXZWJLaXROYW1lc3BhY2U7CisgY2xhc3Mg
V2ViS2l0UG9pbnQ7CitAQCAtMTkxLDYgKzE5MSwxMSBAQCBwdWJsaWM6CiAgICAgIFN0cmluZyBk
ZWZhdWx0U3RhdHVzKCkgY29uc3Q7CiAgICAgIHZvaWQgc2V0RGVmYXVsdFN0YXR1cyhjb25zdCBT
dHJpbmcmKTsKICAKICsgICAgU3RyaW5nIHNpbXBsaWZpZWRSZW5kZXJUcmVlKCkgY29uc3Q7CiAr
ICAgIFN0cmluZyByZW5kZXJUcmVlU3RydWN0dXJlKCkgY29uc3Q7CiArICAgIGludCBuZXh0QnJl
YWtpbmdPcHBvcnR1bml0eShjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRp
b24pOworKyAgICBWZWN0b3I8UmVmPElubGluZVRleHRSdW4+PiBjb2xsZWN0VGV4dFJ1bnMoY29u
c3QgU3RyaW5nJiwgY29uc3QgTm9kZSYsIGZsb2F0IGF2YWlsYWJsZVNwYWNlKTsKICsKICAgICAg
Ly8gU2VsZi1yZWZlcmVudGlhbCBhdHRyaWJ1dGVzCiAgCiAgICAgIERPTVdpbmRvdyogc2VsZigp
IGNvbnN0OwogZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAotaW5kZXggODAxYTBmYjNiYjMuLmQw
MWUxYmY0YTZkIDEwMDY0NAoraW5kZXggODAxYTBmYjNiYjMuLjVmMGVhZTdiMWZlIDEwMDY0NAog
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCiArKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKLUBAIC04Miw2ICs4MiwxMCBAQCB0eXBlZGVmIFVTVlN0
cmluZyBDU1NPTVN0cmluZzsKK0BAIC04Miw2ICs4MiwxMSBAQCB0eXBlZGVmIFVTVlN0cmluZyBD
U1NPTVN0cmluZzsKICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hdmlnYXRvciBuYXZpZ2F0b3I7
CiAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01BcHBsaWNhdGlvbkNhY2hlIGFwcGxpY2F0aW9u
Q2FjaGU7CiAgCiArICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc2ltcGxpZmllZFJl
bmRlclRyZWU7CiArICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcmVuZGVyVHJlZVN0
cnVjdHVyZTsKICsgICAgbG9uZyBuZXh0QnJlYWtpbmdPcHBvcnR1bml0eShET01TdHJpbmcgdGV4
dCwgdW5zaWduZWQgbG9uZyBzdGFydFBvc2l0aW9uKTsKKysgICAgc2VxdWVuY2U8SW5saW5lVGV4
dFJ1bj4gY29sbGVjdFRleHRSdW5zKERPTVN0cmluZyB0ZXh0LCBOb2RlIGNvbnRhaW5lck5vZGUs
IG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IE5hTik7CiArCiAg
ICAgIC8vIFVzZXIgcHJvbXB0cy4KICAgICAgdm9pZCBhbGVydCgpOwpAQCAtMzQzLDYgKzYzOSw3
MjAgQEAgaW5kZXggMGIyNjQ0NDkwM2YuLjU5NTIwM2IyMDFlIDEwMDY0NAogICAgICBjb25zdCBj
aGFyKiBib3hOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgI2VuZGlmCiAgCitkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCcmVha2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0QnJlYWtlci5jcHAKK25ldyBmaWxlIG1vZGUgMTAw
NjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNGFiYmY0MjkxNDkKKy0tLSAvZGV2L251bGwKKysrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0QnJlYWtlci5jcHAKK0BAIC0wLDAg
KzEsMjk0IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJl
IG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KysgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisrICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKysgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KysgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKi8KKysKKysjaW5jbHVk
ZSAiY29uZmlnLmgiCisrI2luY2x1ZGUgIklubGluZVRleHRCcmVha2VyLmgiCisrCisrI2luY2x1
ZGUgIkZvbnRDYXNjYWRlLmgiCisrI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisrCisrbmFtZXNw
YWNlIFdlYkNvcmUgeworK25hbWVzcGFjZSBMYXlvdXRSZWxvYWRlZCB7CisrCisrSW5saW5lVGV4
dEJyZWFrZXI6OlN0eWxlOjpTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCisrICAgIDog
Zm9udChzdHlsZS5mb250Q2FzY2FkZSgpKQorKyAgICAsIGhhc0tlcm5pbmdPckxpZ2F0dXJlcyhm
b250LmVuYWJsZUtlcm5pbmcoKSB8fCBmb250LnJlcXVpcmVzU2hhcGluZygpKQorKyAgICAsIGNv
bGxhcHNlV2hpdGVzcGFjZShzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKKysgICAgLCBwcmVz
ZXJ2ZU5ld2xpbmUoc3R5bGUucHJlc2VydmVOZXdsaW5lKCkpCisrICAgICwgd3JhcExpbmVzKHN0
eWxlLmF1dG9XcmFwKCkpCisrICAgICwgYnJlYWtBbnlXb3JkT25PdmVyZmxvdyhzdHlsZS53b3Jk
QnJlYWsoKSA9PSBCcmVha0FsbFdvcmRCcmVhayAmJiB3cmFwTGluZXMpCisrICAgICwgYnJlYWtG
aXJzdFdvcmRPbk92ZXJmbG93KGJyZWFrQW55V29yZE9uT3ZlcmZsb3cgfHwgKHN0eWxlLmJyZWFr
V29yZHMoKSAmJiAod3JhcExpbmVzIHx8IHByZXNlcnZlTmV3bGluZSkpKQorKyAgICAsIHdvcmRT
cGFjaW5nKGZvbnQud29yZFNwYWNpbmcoKSkKKysgICAgLCB0YWJXaWR0aChjb2xsYXBzZVdoaXRl
c3BhY2UgPyAwIDogc3R5bGUudGFiU2l6ZSgpKQorK3sKKyt9CisrCisrSW5saW5lVGV4dEJyZWFr
ZXI6OkxpbmVTdGF0ZTo6TGluZVN0YXRlKGNvbnN0IElubGluZVRleHRCcmVha2VyJiBsaW5lQnJl
YWtlciwgZmxvYXQgYXZhaWxhYmxlV2lkdGgpCisrICAgIDogbV9saW5lQnJlYWtlcihsaW5lQnJl
YWtlcikKKysgICAgLCBtX2F2YWlsYWJsZVdpZHRoKGF2YWlsYWJsZVdpZHRoKQorK3sKKyt9Cisr
CisrZmxvYXQgSW5saW5lVGV4dEJyZWFrZXI6OkxpbmVTdGF0ZTo6YXZhaWxhYmxlV2lkdGgoKSBj
b25zdAorK3sKKysgICAgcmV0dXJuIG1fYXZhaWxhYmxlV2lkdGg7CisrfQorKworK2Jvb2wgSW5s
aW5lVGV4dEJyZWFrZXI6OkxpbmVTdGF0ZTo6aGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCkgY29uc3QK
Kyt7CisrICAgIHJldHVybiBtX2hhc1RyYWlsaW5nV2hpdGVzcGFjZTsKKyt9CisrCisrYm9vbCBJ
bmxpbmVUZXh0QnJlYWtlcjo6TGluZVN0YXRlOjppc1doaXRlc3BhY2VPbmx5KCkgY29uc3QKKyt7
CisrICAgIGZvciAoYXV0byYgcnVuIDogbV9ydW5zKSB7CisrICAgICAgICBpZiAocnVuLT50eXBl
KCkgIT0gSW5saW5lVGV4dFJ1bjo6V2hpdGVzcGFjZSkKKysgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisrICAgIH0KKysgICAgcmV0dXJuIHRydWU7CisrfQorKworK2Jvb2wgSW5saW5lVGV4dEJy
ZWFrZXI6OkxpbmVTdGF0ZTo6Zml0cyhmbG9hdCBleHRyYSkgY29uc3QKKyt7CisrICAgIHJldHVy
biBtX2F2YWlsYWJsZVdpZHRoID49IHdpZHRoKCkgKyBleHRyYTsKKyt9CisrCisrZmxvYXQgSW5s
aW5lVGV4dEJyZWFrZXI6OkxpbmVTdGF0ZTo6d2lkdGgoKSBjb25zdAorK3sKKysgICAgZmxvYXQg
d2lkdGggPSAwOworKyAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVucykKKysgICAgICAgIHdpZHRo
ICs9IG1fbGluZUJyZWFrZXIudGV4dFdpZHRoKHJ1bi0+c3RhcnRQb3NpdGlvbigpLCBydW4tPmVu
ZFBvc2l0aW9uKCkpOworKyAgICByZXR1cm4gd2lkdGg7CisrfQorKworK2Jvb2wgSW5saW5lVGV4
dEJyZWFrZXI6OkxpbmVTdGF0ZTo6aXNFbXB0eSgpIGNvbnN0CisreworKyAgICByZXR1cm4gIW1f
cnVucy5zaXplKCk7CisrfQorKworK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZW5kUG9zaXRpb25G
b3JDb2xsYXBzZWRSdW4oY29uc3QgSW5saW5lVGV4dFJ1biYgcnVuKQorK3sKKysgICAgaWYgKHJ1
bi5pc0NvbGxhcHNlZCgpKQorKyAgICAgICAgcmV0dXJuIHJ1bi5zdGFydFBvc2l0aW9uKCkgKyAx
OworKyAgICByZXR1cm4gcnVuLmVuZFBvc2l0aW9uKCk7CisrfQorKworK3ZvaWQgSW5saW5lVGV4
dEJyZWFrZXI6OkxpbmVTdGF0ZTo6YXBwZW5kUnVuKGNvbnN0IElubGluZVRleHRSdW4mIHJ1bikK
Kyt7CisrICAgIC8vIEFkanVzdCBlbmQgcG9zaXRpb24gd2hpbGUgY29sbGFwc2luZy4KKysgICAg
dW5zaWduZWQgZW5kUG9zaXRpb24gPSBlbmRQb3NpdGlvbkZvckNvbGxhcHNlZFJ1bihydW4pOwor
KyAgICBpZiAocnVuLnR5cGUoKSA9PSBJbmxpbmVUZXh0UnVuOjpOb25XaGl0ZXNwYWNlKQorKyAg
ICAgICAgbV9sYXN0Tm9uZVdoaXRlc3BhY2VQb3NpdGlvbiA9IGVuZFBvc2l0aW9uOworKyAgICAv
LyBOZXcgbGluZSBuZWVkcyBuZXcgcnVuLgorKyAgICBpZiAoIW1fcnVucy5zaXplKCkpIHsKKysg
ICAgICAgIG1fcnVucy5hcHBlbmQoSW5saW5lVGV4dFJ1bjo6Y3JlYXRlKHJ1bi5zdGFydFBvc2l0
aW9uKCksIGVuZFBvc2l0aW9uLCAwLCBydW4udHlwZSgpLCBydW4uaXNDb2xsYXBzZWQoKSwgcnVu
LmlzQ29sbGFwc2libGUoKSkpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgLy8gQWR2YW5jZSBs
YXN0IGNvbXBsZXRlZCBmcmFnbWVudCB3aGVuIHRoZSBwcmV2aW91cyBmcmFnbWVudCBpcyBhbGwg
c2V0IChpbmNsdWRpbmcgbXVsdGlwbGUgcGFydHMgYWNyb3NzIHJlbmRlcmVycykKKysgICAgICAg
IGlmIChtX3J1bnMubGFzdCgpLT5pc0NvbGxhcHNpYmxlKCkgJiYgcnVuLmlzQ29sbGFwc2libGUo
KSkgeworKyAgICAgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaXMgY29sbGFwc2VkIGNvbXBsZXRl
bHkuIE5vIHJ1biBpcyBuZWVkZWQuCisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQor
KyAgICAgICAgYXV0byYgbGFzdFJ1biA9IG1fcnVucy5sYXN0KCk7CisrICAgICAgICBpZiAobGFz
dFJ1bi0+aXNDb2xsYXBzZWQoKSkKKysgICAgICAgICAgICBtX3J1bnMuYXBwZW5kKElubGluZVRl
eHRSdW46OmNyZWF0ZShydW4uc3RhcnRQb3NpdGlvbigpLCBlbmRQb3NpdGlvbiwgMCwgcnVuLnR5
cGUoKSwgcnVuLmlzQ29sbGFwc2VkKCksIHJ1bi5pc0NvbGxhcHNpYmxlKCkpKTsKKysgICAgICAg
IGVsc2UgeworKyAgICAgICAgICAgIGxhc3RSdW4tPnNldEVuZFBvc2l0aW9uKGVuZFBvc2l0aW9u
KTsKKysgICAgICAgICAgICBsYXN0UnVuLT5zZXRUeXBlTWl4ZWQoKTsKKysgICAgICAgICAgICBp
ZiAocnVuLmlzQ29sbGFwc2VkKCkpCisrICAgICAgICAgICAgICAgIGxhc3RSdW4tPnNldElzQ29s
bGFwc2VkKCk7CisrICAgICAgICB9CisrICAgIH0KKysgICAgbV9oYXNUcmFpbGluZ1doaXRlc3Bh
Y2UgPSBydW4udHlwZSgpID09IElubGluZVRleHRSdW46OldoaXRlc3BhY2U7CisrfQorKworK3Zv
aWQgSW5saW5lVGV4dEJyZWFrZXI6OkxpbmVTdGF0ZTo6cmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNl
KCkKKyt7CisrICAgIGlmICghbV9oYXNUcmFpbGluZ1doaXRlc3BhY2UpCisrICAgICAgICByZXR1
cm47CisrICAgIGlmIChtX3J1bnMubGFzdCgpLT50eXBlKCkgPT0gSW5saW5lVGV4dFJ1bjo6V2hp
dGVzcGFjZSkgeworKyAgICAgICAgbV9ydW5zLnJlbW92ZUxhc3QoKTsKKysgICAgICAgIHJldHVy
bjsKKysgICAgfQorKyAgICBBU1NFUlQobV9ydW5zLmxhc3QoKS0+dHlwZSgpID09IElubGluZVRl
eHRSdW46Ok1peGVkKTsKKysgICAgbV9ydW5zLmxhc3QoKS0+c2V0RW5kUG9zaXRpb24obV9sYXN0
Tm9uZVdoaXRlc3BhY2VQb3NpdGlvbik7CisrfQorKworK1ZlY3RvcjxSZWY8SW5saW5lVGV4dFJ1
bj4+IElubGluZVRleHRCcmVha2VyOjpMaW5lU3RhdGU6OmNvbGxlY3RSdW5zKCkKKyt7CisrICAg
IGZvciAoYXV0byYgcnVuOiBtX3J1bnMpCisrICAgICAgICBydW4tPnNldFdpZHRoKG1fbGluZUJy
ZWFrZXIudGV4dFdpZHRoKHJ1bi0+c3RhcnRQb3NpdGlvbigpLCBydW4tPmVuZFBvc2l0aW9uKCkp
KTsKKysgICAgcmV0dXJuIFdURk1vdmUobV9ydW5zKTsKKyt9CisrCisrSW5saW5lVGV4dEJyZWFr
ZXI6OklubGluZVRleHRCcmVha2VyKFZlY3RvcjxSZWY8SW5saW5lVGV4dFJ1bj4+JiBydW5zLCBj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCisrICAgIDogbV90ZXh0UnVucyhydW5zKQorKyAgICAsIG1fdGV4dCh0ZXh0KQor
KyAgICAsIG1fc3R5bGUoc3R5bGUpCisrICAgICwgbV9saW5lKCp0aGlzLCBhdmFpbGFibGVXaWR0
aCkKKyt7CisrfQorKworK1ZlY3RvcjxSZWY8SW5saW5lVGV4dFJ1bj4+IElubGluZVRleHRCcmVh
a2VyOjpjb2xsZWN0UnVucyhWZWN0b3I8UmVmPElubGluZVRleHRSdW4+PiYgcnVucywgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQorK3sKKysgICAgcmV0dXJuIElubGluZVRleHRCcmVha2VyKHJ1bnMsIHRleHQsIGF2YWls
YWJsZVdpZHRoLCBzdHlsZSkuY3JlYXRlQW5kQ29sbGVjdExpbmVSdW5zKCk7CisrfQorKworK2Jv
b2wgSW5saW5lVGV4dEJyZWFrZXI6OnByZVdyYXAoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1f
c3R5bGUud3JhcExpbmVzICYmICFtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZTsKKyt9CisrCisr
dm9pZCBJbmxpbmVUZXh0QnJlYWtlcjo6cmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKKyt7Cisr
ICAgIGlmICghbV9saW5lLmhhc1RyYWlsaW5nV2hpdGVzcGFjZSgpKQorKyAgICAgICAgcmV0dXJu
OworKyAgICAvLyBSZW1vdmUgY29sbGFwc2VkIHdoaXRlc3BhY2UsIG9yIG5vbi1jb2xsYXBzZWQg
cHJlLXdyYXAgd2hpdGVzcGFjZSwgdW5sZXNzIGl0J3MgdGhlIG9ubHkgY29udGVudCBvbiB0aGUg
bGluZSAtc28gcmVtb3ZpbmcgdGhlIHdoaXRlc2FwY2UKKysgICAgLy8gd291bGQgcHJvZHVjZSBh
biBlbXB0eSBsaW5lLgorKyAgICBib29sIGNvbGxhcHNlV2hpdGVzcGFjZSA9IG1fc3R5bGUuY29s
bGFwc2VXaGl0ZXNwYWNlIHwgcHJlV3JhcCgpOworKyAgICBpZiAoIWNvbGxhcHNlV2hpdGVzcGFj
ZSkKKysgICAgICAgIHJldHVybjsKKysgICAgaWYgKHByZVdyYXAoKSAmJiBtX2xpbmUuaXNXaGl0
ZXNwYWNlT25seSgpKQorKyAgICAgICAgcmV0dXJuOworKyAgICBtX2xpbmUucmVtb3ZlVHJhaWxp
bmdXaGl0ZXNwYWNlKCk7CisrfQorKworK3N0cnVjdCBTcGxpdEZyYWdtZW50RGF0YSB7CisrICAg
IHVuc2lnbmVkIHBvc2l0aW9uOworKyAgICBmbG9hdCB3aWR0aDsKKyt9OworKworK1NwbGl0RnJh
Z21lbnREYXRhIElubGluZVRleHRCcmVha2VyOjpzcGxpdChjb25zdCBJbmxpbmVUZXh0UnVuJiBy
dW4sIGZsb2F0IGF2YWlsYWJsZVdpZHRoKQorK3sKKysgICAgQVNTRVJUKGF2YWlsYWJsZVdpZHRo
ID49IDApOworKyAgICBhdXRvIGxlZnQgPSBydW4uc3RhcnRQb3NpdGlvbigpOworKyAgICAvLyBQ
YXRob2xvZ2ljYWwgY2FzZSBvZiAoZXh0cmVtZWx5KWxvbmcgc3RyaW5nIGFuZCBuYXJyb3cgbGlu
ZXMuCisrICAgIC8vIEFkanVzdCB0aGUgcmFuZ2Ugc28gdGhhdCB3ZSBjYW4gcGljayBhIHJlYXNv
bmFibGUgbWlkcG9pbnQuCisrICAgIGF1dG8gYXZlcmFnZUNoYXJhY3RlcldpZHRoID0gcnVuLndp
ZHRoKCkgLyBydW4ubGVuZ3RoKCk7CisrICAgIGF1dG8gcmlnaHQgPSBzdGQ6Om1pbjx1bnNpZ25l
ZD4obGVmdCArICgyICogYXZhaWxhYmxlV2lkdGggLyBhdmVyYWdlQ2hhcmFjdGVyV2lkdGgpLCBy
dW4uZW5kUG9zaXRpb24oKSAtIDEpOworKyAgICAvLyBQcmVzZXJ2ZSB0aGUgbGVmdCB3aWR0aCBm
b3IgdGhlIGZpbmFsIHNwbGl0IHBvc2l0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byByZW1l
YXN1cmUgdGhlIGxlZnQgc2lkZSBhZ2Fpbi4KKysgICAgZmxvYXQgbGVmdFNpZGVXaWR0aCA9IDA7
CisrICAgIHdoaWxlIChsZWZ0IDwgcmlnaHQpIHsKKysgICAgICAgIGF1dG8gbWlkZGxlID0gKGxl
ZnQgKyByaWdodCkgLyAyOworKyAgICAgICAgYXV0byB3aWR0aCA9IHRleHRXaWR0aChydW4uc3Rh
cnRQb3NpdGlvbigpLCBtaWRkbGUgKyAxKTsKKysgICAgICAgIGlmICh3aWR0aCA8IGF2YWlsYWJs
ZVdpZHRoKSB7CisrICAgICAgICAgICAgbGVmdCA9IG1pZGRsZSArIDE7CisrICAgICAgICAgICAg
bGVmdFNpZGVXaWR0aCA9IHdpZHRoOworKyAgICAgICAgfSBlbHNlIGlmICh3aWR0aCA+IGF2YWls
YWJsZVdpZHRoKQorKyAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOworKyAgICAgICAgZWxzZSB7
CisrICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGUgKyAxOworKyAgICAgICAgICAgIGxlZnRTaWRl
V2lkdGggPSB3aWR0aDsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysgICAgfQor
KyAgICByZXR1cm4geyByaWdodCwgbGVmdFNpZGVXaWR0aCB9OworK30KKysKKyt2b2lkIElubGlu
ZVRleHRCcmVha2VyOjpzcGxpdFJ1blRvRml0TGluZShJbmxpbmVUZXh0UnVuJiBydW5Ub1NwbGl0
KQorK3sKKysgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IG1fbGluZS5hdmFpbGFibGVXaWR0aCgp
IC0gbV9saW5lLndpZHRoKCk7CisrICAgIGF1dG8gc3BsaXRSdW5EYXRhID0gc3BsaXQocnVuVG9T
cGxpdCwgYXZhaWxhYmxlV2lkdGgpOworKyAgICAvLyBEb2VzIGZpcnN0IGNoYXJhY3RlciBmaXQg
dGhpcyBsaW5lPworKyAgICBpZiAoc3BsaXRSdW5EYXRhLnBvc2l0aW9uID09IHJ1blRvU3BsaXQu
c3RhcnRQb3NpdGlvbigpKSB7CisrICAgICAgICAvLyBLZWVwIGF0IGxlYXN0IG9uZSBjaGFyYWN0
ZXIgb24gZW1wdHkgbGluZXMuCisrICAgICAgICBpZiAobV9saW5lLmlzRW1wdHkoKSkKKysgICAg
ICAgICAgICBzcGxpdFJ1bkRhdGEud2lkdGggPSB0ZXh0V2lkdGgocnVuVG9TcGxpdC5zdGFydFBv
c2l0aW9uKCksICsrc3BsaXRSdW5EYXRhLnBvc2l0aW9uKTsKKysgICAgfQorKyAgICBydW5Ub1Nw
bGl0LnNldEVuZFBvc2l0aW9uKHNwbGl0UnVuRGF0YS5wb3NpdGlvbik7CisrICAgIHJ1blRvU3Bs
aXQuc2V0V2lkdGgoc3BsaXRSdW5EYXRhLndpZHRoKTsKKyt9CisrCisrVmVjdG9yPFJlZjxJbmxp
bmVUZXh0UnVuPj4gSW5saW5lVGV4dEJyZWFrZXI6OmNyZWF0ZUFuZENvbGxlY3RMaW5lUnVucygp
CisreworKyAgICBib29sIGxpbmVDYW5CZVdyYXBwZWQgPSBtX3N0eWxlLndyYXBMaW5lcyB8fCBt
X3N0eWxlLmJyZWFrRmlyc3RXb3JkT25PdmVyZmxvdyB8fCBtX3N0eWxlLmJyZWFrQW55V29yZE9u
T3ZlcmZsb3c7CisrICAgIGZvciAoYXV0byYgcnVuIDogbV90ZXh0UnVucykgeworKyAgICAgICAg
Ly8gSGFyZCBhbmQgc29mdCBsaW5lYnJlYWtzLgorKyAgICAgICAgaWYgKHJ1bi0+dHlwZSgpID09
IElubGluZVRleHRSdW46OlNvZnRMaW5lQnJlYWspIHsKKysgICAgICAgICAgICAvLyBBZGQgdGhl
IG5ldyBsaW5lIGZyYWdtZW50IG9ubHkgaWYgdGhlcmUncyBub3RoaW5nIG9uIHRoZSBsaW5lLiAo
b3RoZXJ3aXNlIHRoZSBleHRyYSBuZXcgbGluZSBjaGFyYWN0ZXIgd291bGQgc2hvdyB1cCBhdCB0
aGUgZW5kIG9mIHRoZSBjb250ZW50LikKKysgICAgICAgICAgICBpZiAobV9saW5lLmlzRW1wdHko
KSkKKysgICAgICAgICAgICAgICAgbV9saW5lLmFwcGVuZFJ1bihydW4pOworKyAgICAgICAgICAg
IGJyZWFrOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGxpbmVDYW5CZVdyYXBwZWQgJiYgIW1f
bGluZS5maXRzKHJ1bi0+d2lkdGgoKSkpIHsKKysgICAgICAgICAgICAvLyBPdmVyZmxvdyB3cmFw
cGluZyBiZWhhdmlvdXI6CisrICAgICAgICAgICAgLy8gMS4gV2hpdGVzYXBjZSBjb2xsYXBzZSBv
bjogd2hpdGVzcGFjZSBpcyBza2lwcGVkLiBKdW1wIHRvIG5leHQgbGluZS4KKysgICAgICAgICAg
ICAvLyAyLiBXaGl0ZXNwYWNlIGNvbGxhcHNlIG9mZjogd2hpdGVzcGFjZSBpcyB3cmFwcGVkLgor
KyAgICAgICAgICAgIC8vIDMuIEZpcnN0LCBub24td2hpdGVzcGFjZSBmcmFnbWVudCBpcyBlaXRo
ZXIgd3JhcHBlZCBvciBrZXB0IG9uIHRoZSBsaW5lLiAoZGVwZW5kcyBvbiBvdmVyZmxvdy13cmFw
KQorKyAgICAgICAgICAgIC8vIDUuIE5vbi13aGl0ZXNwYWNlIGZyYWdtZW50IHdoZW4gdGhlcmUn
cyBhbHJlYWR5IGFub3RoZXIgZnJhZ21lbnQgb24gdGhlIGxpbmUgZWl0aGVyIGdldHMgd3JhcHBl
ZCAod29yZC1icmVhazogYnJlYWstYWxsKQorKyAgICAgICAgICAgIC8vIG9yIGdldHMgcHVzaGVk
IHRvIHRoZSBuZXh0IGxpbmUuCisrICAgICAgICAgICAgYm9vbCBlbXB0eUxpbmUgPSBtX2xpbmUu
aXNFbXB0eSgpOworKyAgICAgICAgICAgIC8vIFdoaXRlc3BhY2UgZnJhZ21lbnQuCisrICAgICAg
ICAgICAgaWYgKHJ1bi0+dHlwZSgpID09IElubGluZVRleHRSdW5JdGVyYXRvcjo6UnVuOjpXaGl0
ZXNwYWNlKSB7CisrICAgICAgICAgICAgICAgIGlmIChtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFj
ZSkgeworKyAgICAgICAgICAgICAgICAgICAgLy8gUHVzaCBjb2xsYXBhc2VkIHdoaXRlc3BhY2Ug
dG8gdGhlIG5leHQgbGluZS4KKysgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAg
ICAgICAgICB9CisrICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSB3aGl0ZXNwYWNlOyBsZWZ0
IHBhcnQgc3RheXMgb24gdGhpcyBsaW5lLCByaWdodCBpcyBwdXNoZWQgdG8gbmV4dCBsaW5lLgor
KyAgICAgICAgICAgICAgICBzcGxpdFJ1blRvRml0TGluZShydW4pOworKyAgICAgICAgICAgICAg
ICBtX2xpbmUuYXBwZW5kUnVuKHJ1bik7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAg
ICAgICAgIH0KKysgICAgICAgICAgICAvLyBOb24td2hpdGVzcGFjZSBmcmFnbWVudC4gKCFzdHls
ZS53cmFwTGluZXM6IGJ1ZzEzODEwMihwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvcikKKysgICAg
ICAgICAgICBpZiAoKChlbXB0eUxpbmUgJiYgbV9zdHlsZS5icmVha0ZpcnN0V29yZE9uT3ZlcmZs
b3cpIHx8IG1fc3R5bGUuYnJlYWtBbnlXb3JkT25PdmVyZmxvdykgfHwgIW1fc3R5bGUud3JhcExp
bmVzKSB7CisrICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBmcmFnbWVudDsgKG1vZGlmaWVk
KWZyYWdtZW50IHN0YXlzIG9uIHRoaXMgbGluZSwgb3ZlcmZsb3dlZEZyYWdtZW50IGlzIHB1c2hl
ZCB0byBuZXh0IGxpbmUuCisrICAgICAgICAgICAgICAgIHNwbGl0UnVuVG9GaXRMaW5lKHJ1bik7
CisrICAgICAgICAgICAgICAgIG1fbGluZS5hcHBlbmRSdW4ocnVuKTsKKysgICAgICAgICAgICAg
ICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIEFTU0VSVChydW4tPnR5cGUo
KSA9PSBJbmxpbmVUZXh0UnVuSXRlcmF0b3I6OlJ1bjo6Tm9uV2hpdGVzcGFjZSk7CisrICAgICAg
ICAgICAgLy8gTm9uLWJyZWFrYWJsZSBub24td2hpdGVzcGFjZSBmaXJzdCBmcmFnbWVudC4gQWRk
IGl0IHRvIHRoZSBjdXJyZW50IGxpbmUuIC1pdCBvdmVyZmxvd3MgdGhvdWdoLgorKyAgICAgICAg
ICAgIGlmIChlbXB0eUxpbmUpIHsKKysgICAgICAgICAgICAgICAgbV9saW5lLmFwcGVuZFJ1bihy
dW4pOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAg
ICAgLy8gTm9uLWJyZWFrYWJsZSBub24td2hpdGVzcGFjZSBmcmFnbWVudCB3aGVuIHRoZXJlJ3Mg
YWxyZWFkeSBjb250ZW50IG9uIHRoZSBsaW5lLiBQdXNoIGl0IHRvIHRoZSBuZXh0IGxpbmUuCisr
ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgICAgICBtX2xpbmUuYXBwZW5kUnVu
KHJ1bik7CisrICAgIH0KKysgICAgcmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCk7CisrICAgIHJl
dHVybiBtX2xpbmUuY29sbGVjdFJ1bnMoKTsKKyt9CisrCisrZmxvYXQgSW5saW5lVGV4dEJyZWFr
ZXI6OnRleHRXaWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKKyt7CisrICAg
IGlmICghbV9zdHlsZS5mb250LnNpemUoKSB8fCBmcm9tID09IHRvKQorKyAgICAgICAgcmV0dXJu
IDA7CisrCisrICAgIGJvb2wgbWVhc3VyZVdpdGhFbmRTcGFjZSA9IG1fc3R5bGUuaGFzS2Vybmlu
Z09yTGlnYXR1cmVzICYmIG1fc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlICYmIHRvIDwgbV90ZXh0
Lmxlbmd0aCgpICYmIG1fdGV4dFt0b10gPT0gJyAnOworKyAgICBpZiAobWVhc3VyZVdpdGhFbmRT
cGFjZSkKKysgICAgICAgICsrdG87CisrICAgIGZsb2F0IHdpZHRoID0gMDsKKysgICAgVGV4dFJ1
biBydW4oU3RyaW5nVmlldyhtX3RleHQpLnN1YnN0cmluZyhmcm9tLCB0byAtIGZyb20pLCAwKTsK
KysgICAgaWYgKG1fc3R5bGUudGFiV2lkdGgpCisrICAgICAgICBydW4uc2V0VGFiU2l6ZSh0cnVl
LCBtX3N0eWxlLnRhYldpZHRoKTsKKysgICAgd2lkdGggPSBtX3N0eWxlLmZvbnQud2lkdGgocnVu
KTsKKysgICAgaWYgKG1lYXN1cmVXaXRoRW5kU3BhY2UpCisrICAgICAgICB3aWR0aCAtPSAobV9z
dHlsZS5mb250LnNwYWNlV2lkdGgoKSArIG1fc3R5bGUud29yZFNwYWNpbmcpOworKyAgICByZXR1
cm4gc3RkOjptYXg8ZmxvYXQ+KDAsIHdpZHRoKTsKKyt9CisrCisrfQorK30KK2RpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJyZWFrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0QnJlYWtlci5oCituZXcgZmlsZSBtb2RlIDEwMDY0
NAoraW5kZXggMDAwMDAwMDAwMDAuLmZjMGYwYjI3NzJlCistLS0gL2Rldi9udWxsCisrKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJyZWFrZXIuaAorQEAgLTAsMCArMSw5
NiBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6
CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisrICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisrICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKysg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI3ByYWdtYSBvbmNl
CisrCisrI2luY2x1ZGUgIklubGluZVRleHRSdW4uaCIKKysKKytuYW1lc3BhY2UgV2ViQ29yZSB7
CisrCisrY2xhc3MgRm9udENhc2NhZGU7CisrCisrbmFtZXNwYWNlIExheW91dFJlbG9hZGVkIHsK
KysKKytjbGFzcyBMaW5lU3RhdGU7Cisrc3RydWN0IFNwbGl0RnJhZ21lbnREYXRhOworKworK2Ns
YXNzIElubGluZVRleHRCcmVha2VyIHsKKytwdWJsaWM6CisrICAgIHN0YXRpYyBWZWN0b3I8UmVm
PElubGluZVRleHRSdW4+PiBjb2xsZWN0UnVucyhWZWN0b3I8UmVmPElubGluZVRleHRSdW4+PiYs
IGNvbnN0IFN0cmluZyYsIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBjb25zdCBSZW5kZXJTdHlsZSYp
OworKworK3ByaXZhdGU6CisrICAgIElubGluZVRleHRCcmVha2VyKFZlY3RvcjxSZWY8SW5saW5l
VGV4dFJ1bj4+JiwgY29uc3QgU3RyaW5nJiwgZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGNvbnN0IFJl
bmRlclN0eWxlJik7CisrCisrICAgIFZlY3RvcjxSZWY8SW5saW5lVGV4dFJ1bj4+IGNyZWF0ZUFu
ZENvbGxlY3RMaW5lUnVucygpOworKyAgICBTcGxpdEZyYWdtZW50RGF0YSBzcGxpdChjb25zdCBJ
bmxpbmVUZXh0UnVuJiBydW4sIGZsb2F0IGF2YWlsYWJsZVdpZHRoKTsKKysgICAgdm9pZCBzcGxp
dFJ1blRvRml0TGluZShJbmxpbmVUZXh0UnVuJiBydW5Ub1NwbGl0KTsKKysgICAgdm9pZCByZW1v
dmVUcmFpbGluZ1doaXRlc3BhY2UoKTsKKysgICAgYm9vbCBwcmVXcmFwKCkgY29uc3Q7CisrICAg
IGZsb2F0IHRleHRXaWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CisrCisr
ICAgIHN0cnVjdCBTdHlsZSB7CisrICAgICAgICBleHBsaWNpdCBTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYpOworKworKyAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQ7CisrICAgICAgICBi
b29sIGhhc0tlcm5pbmdPckxpZ2F0dXJlczsKKysgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZXNw
YWNlOworKyAgICAgICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmU7CisrICAgICAgICBib29sIHdyYXBM
aW5lczsKKysgICAgICAgIGJvb2wgYnJlYWtBbnlXb3JkT25PdmVyZmxvdzsKKysgICAgICAgIGJv
b2wgYnJlYWtGaXJzdFdvcmRPbk92ZXJmbG93OworKyAgICAgICAgZmxvYXQgd29yZFNwYWNpbmc7
CisrICAgICAgICB1bnNpZ25lZCB0YWJXaWR0aDsKKysgICAgfTsKKysKKysgICAgY2xhc3MgTGlu
ZVN0YXRlIHsKKysgICAgcHVibGljOgorKyAgICAgICAgTGluZVN0YXRlKGNvbnN0IElubGluZVRl
eHRCcmVha2VyJiBsaW5lQnJlYWtlciwgZmxvYXQgYXZhaWxhYmxlV2lkdGgpOworKworKyAgICAg
ICAgZmxvYXQgYXZhaWxhYmxlV2lkdGgoKSBjb25zdDsKKysgICAgICAgIGJvb2wgaGFzVHJhaWxp
bmdXaGl0ZXNwYWNlKCkgY29uc3Q7CisrICAgICAgICBib29sIGlzV2hpdGVzcGFjZU9ubHkoKSBj
b25zdDsKKysgICAgICAgIGJvb2wgZml0cyhmbG9hdCBleHRyYSkgY29uc3Q7CisrICAgICAgICBm
bG9hdCB3aWR0aCgpIGNvbnN0OworKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisrICAg
ICAgICB2b2lkIGFwcGVuZFJ1bihjb25zdCBJbmxpbmVUZXh0UnVuJik7CisrICAgICAgICB2b2lk
IHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZSgpOworKyAgICAgICAgVmVjdG9yPFJlZjxJbmxpbmVU
ZXh0UnVuPj4gY29sbGVjdFJ1bnMoKTsKKysKKysgICAgcHJpdmF0ZToKKysgICAgICAgIGNvbnN0
IElubGluZVRleHRCcmVha2VyJiBtX2xpbmVCcmVha2VyOworKyAgICAgICAgZmxvYXQgbV9hdmFp
bGFibGVXaWR0aCB7IDAgfTsKKysgICAgICAgIFZlY3RvcjxSZWY8SW5saW5lVGV4dFJ1bj4+IG1f
cnVuczsKKysgICAgICAgIGJvb2wgbV9oYXNUcmFpbGluZ1doaXRlc3BhY2UgeyBmYWxzZSB9Owor
KyAgICAgICAgdW5zaWduZWQgbV9sYXN0Tm9uZVdoaXRlc3BhY2VQb3NpdGlvbiB7IDAgfTsKKysg
ICAgfTsKKysKKysgICAgVmVjdG9yPFJlZjxJbmxpbmVUZXh0UnVuPj4mIG1fdGV4dFJ1bnM7Cisr
ICAgIFN0cmluZyBtX3RleHQ7CisrICAgIGNvbnN0IFN0eWxlIG1fc3R5bGU7CisrICAgIExpbmVT
dGF0ZSBtX2xpbmU7CisrfTsKKysKKyt9CisrfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0UnVuSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRSdW5JdGVyYXRvci5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp
bmRleCAwMDAwMDAwMDAwMC4uYmJlYjczYmI1N2EKKy0tLSAvZGV2L251bGwKKysrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0UnVuSXRlcmF0b3IuY3BwCitAQCAtMCwwICsx
LDE2NyBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBt
ZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisr
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisr
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KysgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI2luY2x1ZGUg
ImNvbmZpZy5oIgorKyNpbmNsdWRlICJJbmxpbmVUZXh0UnVuSXRlcmF0b3IuaCIKKysKKysjaW5j
bHVkZSAiRm9udENhc2NhZGUuaCIKKysKKytuYW1lc3BhY2UgV2ViQ29yZSB7CisrbmFtZXNwYWNl
IExheW91dFJlbG9hZGVkIHsKKysKKytJbmxpbmVUZXh0UnVuSXRlcmF0b3I6OlN0eWxlOjpTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCisrICAgIDogZm9udChzdHlsZS5mb250Q2FzY2Fk
ZSgpKQorKyAgICAsIHRleHRBbGlnbihzdHlsZS50ZXh0QWxpZ24oKSkKKysgICAgLCBoYXNLZXJu
aW5nT3JMaWdhdHVyZXMoZm9udC5lbmFibGVLZXJuaW5nKCkgfHwgZm9udC5yZXF1aXJlc1NoYXBp
bmcoKSkKKysgICAgLCBjb2xsYXBzZVdoaXRlc3BhY2Uoc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNl
KCkpCisrICAgICwgcHJlc2VydmVOZXdsaW5lKHN0eWxlLnByZXNlcnZlTmV3bGluZSgpKQorKyAg
ICAsIHdyYXBMaW5lcyhzdHlsZS5hdXRvV3JhcCgpKQorKyAgICAsIGJyZWFrQW55V29yZE9uT3Zl
cmZsb3coc3R5bGUud29yZEJyZWFrKCkgPT0gQnJlYWtBbGxXb3JkQnJlYWsgJiYgd3JhcExpbmVz
KQorKyAgICAsIGJyZWFrRmlyc3RXb3JkT25PdmVyZmxvdyhicmVha0FueVdvcmRPbk92ZXJmbG93
IHx8IChzdHlsZS5icmVha1dvcmRzKCkgJiYgKHdyYXBMaW5lcyB8fCBwcmVzZXJ2ZU5ld2xpbmUp
KSkKKysgICAgLCBicmVha05CU1Aod3JhcExpbmVzICYmIHN0eWxlLm5ic3BNb2RlKCkgPT0gU1BB
Q0UpCisrICAgICwga2VlcEFsbFdvcmRzRm9yQ0pLKHN0eWxlLndvcmRCcmVhaygpID09IEtlZXBB
bGxXb3JkQnJlYWspCisrICAgICwgd29yZFNwYWNpbmcoZm9udC53b3JkU3BhY2luZygpKQorKyAg
ICAsIHRhYldpZHRoKGNvbGxhcHNlV2hpdGVzcGFjZSA/IDAgOiBzdHlsZS50YWJTaXplKCkpCisr
ICAgICwgbG9jYWxlKHN0eWxlLmxvY2FsZSgpKQorK3sKKyt9CisrCisrSW5saW5lVGV4dFJ1bkl0
ZXJhdG9yOjpJbmxpbmVUZXh0UnVuSXRlcmF0b3IoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCisrICAgIDogbV9saW5lQnJlYWtJdGVyYXRvcih0ZXh0LCBzdHls
ZS5sb2NhbGUoKSkKKysgICAgLCBtX3N0eWxlKHN0eWxlKQorKyAgICAsIG1fdGV4dCh0ZXh0KQor
K3sKKyt9CisrCisrSW5saW5lVGV4dFJ1bkl0ZXJhdG9yOjpSdW4gSW5saW5lVGV4dFJ1bkl0ZXJh
dG9yOjpuZXh0UnVuKCkKKyt7CisrICAgIC8vIEEgZnJhZ21lbnQgY2FuIGVpdGhlciBiZQorKyAg
ICAvLyAxLiBsaW5lIGJyZWFrIHdoZW4gPGJyPiBpcyBwcmVzZW50IG9yIHByZXNlcnZlTmV3bGlu
ZSBpcyBvbiAobm90IGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSkgb3IKKysgICAgLy8gMi4gd2hp
dGVzcGFjZSAoY29sbGFzcGVkLCBub24tY29sbGFwc2VkIG11bHRpIG9yIHNpbmdsZSkgb3IKKysg
ICAgLy8gMy4gbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycy4KKysgICAgLy8gNC4gY29udGVudCBl
bmQuCisrICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBtX3Bvc2l0aW9uOworKyAgICBpZiAo
bV90ZXh0Lmxlbmd0aCgpID09IG1fcG9zaXRpb24pCisrICAgICAgICByZXR1cm4gUnVuKHN0YXJ0
UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24sIDAsIFJ1bjo6Q29udGVudEVuZCwgZmFsc2UsIGZhbHNl
KTsKKysgICAgaWYgKGlzU29mdExpbmVCcmVhaygpKSB7CisrICAgICAgICB1bnNpZ25lZCBlbmRQ
b3NpdGlvbiA9ICsrbV9wb3NpdGlvbjsKKysgICAgICAgIHJldHVybiBSdW4oc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb24sIDAsIFJ1bjo6U29mdExpbmVCcmVhaywgZmFsc2UsIGZhbHNlKTsKKysg
ICAgfQorKyAgICBmbG9hdCB3aWR0aCA9IDA7CisrICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0g
c2tpcFRvTmV4dFBvc2l0aW9uKFBvc2l0aW9uVHlwZTo6Tm9uV2hpdGVzcGFjZSwgc3RhcnRQb3Np
dGlvbiwgd2lkdGgpOworKyAgICBpZiAoc3RhcnRQb3NpdGlvbiA8IGVuZFBvc2l0aW9uKSB7Cisr
ICAgICAgICBib29sIG11bHRpcGxlV2hpdGVzcGFjZSA9IHN0YXJ0UG9zaXRpb24gKyAxIDwgZW5k
UG9zaXRpb247CisrICAgICAgICBib29sIGlzQ29sbGFwc2VkID0gbXVsdGlwbGVXaGl0ZXNwYWNl
ICYmIG1fc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlOworKyAgICAgICAgbV9wb3NpdGlvbiA9IGVu
ZFBvc2l0aW9uOworKyAgICAgICAgcmV0dXJuIFJ1bihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlv
biwgd2lkdGgsIFJ1bjo6V2hpdGVzcGFjZSwgaXNDb2xsYXBzZWQsIG1fc3R5bGUuY29sbGFwc2VX
aGl0ZXNwYWNlKTsKKysgICAgfQorKyAgICBlbmRQb3NpdGlvbiA9IHNraXBUb05leHRQb3NpdGlv
bihQb3NpdGlvblR5cGU6OkJyZWFrYWJsZSwgc3RhcnRQb3NpdGlvbiwgd2lkdGgpOworKyAgICBt
X3Bvc2l0aW9uID0gZW5kUG9zaXRpb247CisrICAgIHJldHVybiBSdW4oc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24sIHdpZHRoLCBSdW46Ok5vbldoaXRlc3BhY2UsIGZhbHNlLCBmYWxzZSk7Cisr
fQorKworK2Jvb2wgSW5saW5lVGV4dFJ1bkl0ZXJhdG9yOjppc1NvZnRMaW5lQnJlYWsoKSBjb25z
dAorK3sKKysgICAgcmV0dXJuIG1fc3R5bGUucHJlc2VydmVOZXdsaW5lICYmIG1fdGV4dFttX3Bv
c2l0aW9uXSA9PSAnXG4nOworK30KKysKKytzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVh
a2FibGVQb3NpdGlvbihMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxpbmVCcmVha0l0ZXJhdG9yLCB1
bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBib29sIGJyZWFrTkJTUCwgYm9vbCBrZWVwQWxsV29yZHNG
b3JDSkspCisreworKyAgICBpZiAoa2VlcEFsbFdvcmRzRm9yQ0pLKSB7CisrICAgICAgICBpZiAo
YnJlYWtOQlNQKQorKyAgICAgICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVw
aW5nQWxsV29yZHMobGluZUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworKyAgICAgICAg
cmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3Jkc0lnbm9yaW5nTkJTUChs
aW5lQnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisrICAgIH0KKysKKysgICAgaWYgKGxp
bmVCcmVha0l0ZXJhdG9yLm1vZGUoKSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1bHQp
IHsKKysgICAgICAgIGlmIChicmVha05CU1ApCisrICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6
Om5leHRCcmVha2FibGVQb3NpdGlvbihsaW5lQnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7
CisrICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQKGxpbmVC
cmVha0l0ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsKKysgICAgfQorKworKyAgICBpZiAoYnJlYWtO
QlNQKQorKyAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbldpdGhvdXRTaG9ydGN1
dChsaW5lQnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisrICAgIHJldHVybiBuZXh0QnJl
YWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BXaXRob3V0U2hvcnRjdXQobGluZUJyZWFrSXRlcmF0
b3IsIHN0YXJ0UG9zaXRpb24pOworK30KKysKKyt1bnNpZ25lZCBJbmxpbmVUZXh0UnVuSXRlcmF0
b3I6Om5leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odW5zaWduZWQgc3RhcnRQb3NpdGlvbikKKyt7
CisrICAgIEFTU0VSVChzdGFydFBvc2l0aW9uIDwgbV90ZXh0Lmxlbmd0aCgpKTsKKysgICAgdW5z
aWduZWQgcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOworKyAgICBmb3IgKDsgcG9zaXRpb24gPCBt
X3RleHQubGVuZ3RoKCkgLSAxOyArK3Bvc2l0aW9uKSB7CisrICAgICAgICBhdXRvIGNoYXJhY3Rl
ciA9IG1fdGV4dFtwb3NpdGlvbl07CisrICAgICAgICBib29sIGlzV2hpdGVzcGFjZSA9IGNoYXJh
Y3RlciA9PSAnICcgfHwgY2hhcmFjdGVyID09ICdcdCcgfHwgKCFtX3N0eWxlLnByZXNlcnZlTmV3
bGluZSAmJiBjaGFyYWN0ZXIgPT0gJ1xuJyk7CisrICAgICAgICBpZiAoIWlzV2hpdGVzcGFjZSkK
KysgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisrICAgIH0KKysgICAgcmV0dXJuIHBvc2l0
aW9uOworK30KKysKKyt1bnNpZ25lZCBJbmxpbmVUZXh0UnVuSXRlcmF0b3I6OnNraXBUb05leHRQ
b3NpdGlvbihQb3NpdGlvblR5cGUgcG9zaXRpb25UeXBlLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9u
LCBmbG9hdCYgd2lkdGgpCisreworKyAgICB1bnNpZ25lZCBjdXJyZW50UG9zaXRpb24gPSBzdGFy
dFBvc2l0aW9uOworKyAgICB1bnNpZ25lZCBuZXh0UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247
CisrICAgIC8vIENvbGxhcHNlZCB3aGl0ZXNwYWNlIGhhcyBjb25zdGFudCB3aWR0aC4gRG8gbm90
IG1lYXN1cmUgaXQuCisrICAgIGlmIChwb3NpdGlvblR5cGUgPT0gTm9uV2hpdGVzcGFjZSkKKysg
ICAgICAgIG5leHRQb3NpdGlvbiA9IG5leHROb25XaGl0ZXNwYWNlUG9zaXRpb24oY3VycmVudFBv
c2l0aW9uKTsKKysgICAgZWxzZSBpZiAocG9zaXRpb25UeXBlID09IEJyZWFrYWJsZSkgeworKyAg
ICAgICAgbmV4dFBvc2l0aW9uID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uKG1fbGluZUJyZWFrSXRl
cmF0b3IsIGN1cnJlbnRQb3NpdGlvbiwgbV9zdHlsZS5icmVha05CU1AsIG1fc3R5bGUua2VlcEFs
bFdvcmRzRm9yQ0pLKTsKKysgICAgICAgIC8vIG5leHRCcmVha2FibGVQb3NpdGlvbiByZXR1cm5z
IHRoZSBzYW1lIHBvc2l0aW9uIGZvciBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyBoeXBoZW5z
LiBDYWxsIG5leHQgYWdhaW4gd2l0aCBtb2RpZmllZCBwb3NpdGlvbi4KKysgICAgICAgIGJvb2wg
c2tpcEN1cnJlbnRQb3NpdGlvbiA9IG5leHRQb3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb247Cisr
ICAgICAgICBpZiAoc2tpcEN1cnJlbnRQb3NpdGlvbikKKysgICAgICAgICAgICBuZXh0UG9zaXRp
b24gPSBuZXh0QnJlYWthYmxlUG9zaXRpb24obV9saW5lQnJlYWtJdGVyYXRvciwgY3VycmVudFBv
c2l0aW9uICsgMSwgbV9zdHlsZS5icmVha05CU1AsIG1fc3R5bGUua2VlcEFsbFdvcmRzRm9yQ0pL
KTsKKysgICAgfQorKyAgICB3aWR0aCA9IDA7CisrICAgIGlmIChuZXh0UG9zaXRpb24gPT0gY3Vy
cmVudFBvc2l0aW9uKQorKyAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKKysgICAgLy8g
Qm90aCBub24tY29sbGFwc2VkIHdoaXRlc3BhY2UgYW5kIG5vbi13aGl0ZXNwYWNlIHJ1bnMgbmVl
ZCB0byBiZSBtZWFzdXJlZC4KKysgICAgYm9vbCBtZWFzdXJlVGV4dCA9IHBvc2l0aW9uVHlwZSAh
PSBOb25XaGl0ZXNwYWNlIHx8ICFtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZTsKKysgICAgaWYg
KG1lYXN1cmVUZXh0KQorKyAgICAgICAgd2lkdGggPSB0aGlzLT50ZXh0V2lkdGgoY3VycmVudFBv
c2l0aW9uLCBuZXh0UG9zaXRpb24pOworKyAgICBlbHNlIGlmIChzdGFydFBvc2l0aW9uIDwgbmV4
dFBvc2l0aW9uKQorKyAgICAgICAgd2lkdGggPSBtX3N0eWxlLmZvbnQuc3BhY2VXaWR0aCgpICsg
bV9zdHlsZS53b3JkU3BhY2luZzsKKysgICAgcmV0dXJuIG5leHRQb3NpdGlvbjsKKyt9CisrCisr
ZmxvYXQgSW5saW5lVGV4dFJ1bkl0ZXJhdG9yOjp0ZXh0V2lkdGgodW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8pIGNvbnN0CisreworKyAgICBpZiAoIW1fc3R5bGUuZm9udC5zaXplKCkgfHwgZnJv
bSA9PSB0bykKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBib29sIG1lYXN1cmVXaXRoRW5k
U3BhY2UgPSBtX3N0eWxlLmhhc0tlcm5pbmdPckxpZ2F0dXJlcyAmJiBtX3N0eWxlLmNvbGxhcHNl
V2hpdGVzcGFjZSAmJiB0byA8IG1fdGV4dC5sZW5ndGgoKSAmJiBtX3RleHRbdG9dID09ICcgJzsK
KysgICAgaWYgKG1lYXN1cmVXaXRoRW5kU3BhY2UpCisrICAgICAgICArK3RvOworKyAgICBmbG9h
dCB3aWR0aCA9IDA7CisrICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcobV90ZXh0KS5zdWJzdHJp
bmcoZnJvbSwgdG8gLSBmcm9tKSwgMCk7CisrICAgIGlmIChtX3N0eWxlLnRhYldpZHRoKQorKyAg
ICAgICAgcnVuLnNldFRhYlNpemUodHJ1ZSwgbV9zdHlsZS50YWJXaWR0aCk7CisrICAgIHdpZHRo
ID0gbV9zdHlsZS5mb250LndpZHRoKHJ1bik7CisrICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNl
KQorKyAgICAgICAgd2lkdGggLT0gKG1fc3R5bGUuZm9udC5zcGFjZVdpZHRoKCkgKyBtX3N0eWxl
LndvcmRTcGFjaW5nKTsKKysgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PigwLCB3aWR0aCk7Cisr
fQorKworK30KKyt9CitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRSdW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRS
dW5JdGVyYXRvci5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjU5
NGY5NWUwMzc4CistLS0gL2Rldi9udWxsCisrKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dFJ1bkl0ZXJhdG9yLmgKK0BAIC0wLDAgKzEsMTIxIEBACisrLyoKKysgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKysgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisrICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKysgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKysgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKysgKi8KKysKKysjcHJhZ21hIG9uY2UKKysKKysjaW5jbHVkZSAiQnJl
YWtMaW5lcy5oIgorKyNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKKysjaW5jbHVkZSAiU2lt
cGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIgorKworK25hbWVzcGFjZSBXZWJDb3JlIHsKKysK
KytjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CisrY2xhc3MgUmVuZGVyU3R5bGU7CisrCisrbmFtZXNw
YWNlIExheW91dFJlbG9hZGVkIHsKKysKKytjbGFzcyBJbmxpbmVUZXh0UnVuSXRlcmF0b3IgIHsK
KytwdWJsaWM6CisrICAgIElubGluZVRleHRSdW5JdGVyYXRvcihjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSk7CisrCisrICAgIGNsYXNzIFJ1biB7CisrICAgIHB1
YmxpYzoKKysgICAgICAgIGVudW0gVHlwZSB7IEludmFsaWQsIENvbnRlbnRFbmQsIFNvZnRMaW5l
QnJlYWssIFdoaXRlc3BhY2UsIE5vbldoaXRlc3BhY2UgfTsKKysgICAgICAgIFJ1bigpID0gZGVm
YXVsdDsKKysgICAgICAgIFJ1bih1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBmbG9hdCB3
aWR0aCwgVHlwZSB0eXBlLCBib29sIGlzQ29sbGFwc2VkLCBib29sIGlzQ29sbGFwc2libGUpCisr
ICAgICAgICAgICAgOiBtX3N0YXJ0KHN0YXJ0KQorKyAgICAgICAgICAgICwgbV9lbmQoZW5kKQor
KyAgICAgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKysgICAgICAgICAgICAsIG1fdHlwZSh0eXBl
KQorKyAgICAgICAgICAgICwgbV9pc0NvbGxhcHNlZChpc0NvbGxhcHNlZCkKKysgICAgICAgICAg
ICAsIG1faXNDb2xsYXBzaWJsZShpc0NvbGxhcHNpYmxlKQorKyAgICAgICAgeworKyAgICAgICAg
fQorKworKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IElu
dmFsaWQ7IH0KKysgICAgICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFy
dDsgfQorKyAgICAgICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKysg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fZW5kID49IG1fc3RhcnQp
OyByZXR1cm4gbV9lbmQgLSBtX3N0YXJ0OyB9CisrICAgICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGg7IH0KKysgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQorKyAgICAgICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBTb2Z0TGluZUJyZWFrOyB9CisrICAgICAgICBib29sIGlzQ29sbGFwc2VkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NvbGxhcHNlZDsgfQorKyAgICAgICAgYm9vbCBpc0NvbGxhcHNpYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbGxhcHNpYmxlOyB9CisrCisrICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFydCgpID09IGVuZCgpICYmICFpc0xpbmVCcmVhaygp
OyB9CisrICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUnVuJiBvdGhlcikgY29uc3QKKysg
ICAgICAgIHsKKysgICAgICAgICAgICByZXR1cm4gbV9zdGFydCA9PSBvdGhlci5tX3N0YXJ0Cisr
ICAgICAgICAgICAgICAgICYmIG1fZW5kID09IG90aGVyLm1fZW5kCisrICAgICAgICAgICAgICAg
ICYmIG1fd2lkdGggPT0gb3RoZXIubV93aWR0aAorKyAgICAgICAgICAgICAgICAmJiBtX3R5cGUg
PT0gb3RoZXIubV90eXBlCisrICAgICAgICAgICAgICAgICYmIG1faXNDb2xsYXBzZWQgPT0gb3Ro
ZXIubV9pc0NvbGxhcHNlZAorKyAgICAgICAgICAgICAgICAmJiBtX2lzQ29sbGFwc2libGUgPT0g
b3RoZXIubV9pc0NvbGxhcHNpYmxlOworKyAgICAgICAgfQorKworKyAgICBwcml2YXRlOgorKyAg
ICAgICAgdW5zaWduZWQgbV9zdGFydCB7IDAgfTsKKysgICAgICAgIHVuc2lnbmVkIG1fZW5kIHsg
MCB9OworKyAgICAgICAgZmxvYXQgbV93aWR0aCB7IDAgfTsKKysgICAgICAgIFR5cGUgbV90eXBl
IHsgSW52YWxpZCB9OworKyAgICAgICAgYm9vbCBtX2lzQ29sbGFwc2VkIHsgZmFsc2UgfTsKKysg
ICAgICAgIGJvb2wgbV9pc0NvbGxhcHNpYmxlIHsgZmFsc2UgfTsKKysgICAgfTsKKysgICAgUnVu
IG5leHRSdW4oKTsKKysgICAgZmxvYXQgdGV4dFdpZHRoKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24s
IHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBjb25zdDsKKysKKysgICAgc3RydWN0IFN0eWxlIHsKKysg
ICAgICAgIGV4cGxpY2l0IFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CisrCisrICAgICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udDsKKysgICAgICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduOwor
KyAgICAgICAgYm9vbCBoYXNLZXJuaW5nT3JMaWdhdHVyZXM7CisrICAgICAgICBib29sIGNvbGxh
cHNlV2hpdGVzcGFjZTsKKysgICAgICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lOworKyAgICAgICAg
Ym9vbCB3cmFwTGluZXM7CisrICAgICAgICBib29sIGJyZWFrQW55V29yZE9uT3ZlcmZsb3c7Cisr
ICAgICAgICBib29sIGJyZWFrRmlyc3RXb3JkT25PdmVyZmxvdzsKKysgICAgICAgIGJvb2wgYnJl
YWtOQlNQOworKyAgICAgICAgYm9vbCBrZWVwQWxsV29yZHNGb3JDSks7CisrICAgICAgICBmbG9h
dCB3b3JkU3BhY2luZzsKKysgICAgICAgIHVuc2lnbmVkIHRhYldpZHRoOworKyAgICAgICAgQXRv
bWljU3RyaW5nIGxvY2FsZTsKKysgICAgfTsKKysgICAgY29uc3QgU3R5bGUmIHN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZTsgfQorKworK3ByaXZhdGU6CisrICAgIGVudW0gUG9zaXRpb25U
eXBlIHsgQnJlYWthYmxlLCBOb25XaGl0ZXNwYWNlIH07CisrICAgIHVuc2lnbmVkIHNraXBUb05l
eHRQb3NpdGlvbihQb3NpdGlvblR5cGUsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIGZsb2F0JiB3
aWR0aCk7CisrICAgIGJvb2wgaXNTb2Z0TGluZUJyZWFrKCkgY29uc3Q7CisrICAgIHVuc2lnbmVk
IG5leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odW5zaWduZWQgc3RhcnRQb3NpdGlvbik7CisrCisr
ICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBtX2xpbmVCcmVha0l0ZXJhdG9yOworKyAgICBjb25z
dCBTdHlsZSBtX3N0eWxlOworKyAgICBTdHJpbmcgbV90ZXh0OworKyAgICB1bnNpZ25lZCBtX3Bv
c2l0aW9uIHsgMCB9OworK307CisrCisrfQorK30KK2RpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAoraW5kZXggMjMyOWIyYzRjN2MuLmVjMTVjZDU0ZmE0IDEwMDY0NAorLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorQEAgLTQwLDYgKzQwLDcgQEAKKyAj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKKyAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgor
ICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKysjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIK
KyAjaW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgorICNpbmNsdWRlICJP
dmVyZmxvd0V2ZW50LmgiCisgI2luY2x1ZGUgIlBhZ2UuaCIKIGRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCiBpbmRleCA4NWYzNDA5MGRlNS4uNTAzZDcxZWI4
OGUgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcApAQCAtMzcyLDggKzEzODIsNDQgQEAgaW5kZXggNTJkYzdkYWQ0YjUuLjY5NmU1YTVlZTVi
IDEwMDY0NAogICNlbmRpZgogIAogICAgICAvLyBSZXR1cm5zIHRoZSBsb2dpY2FsT2Zmc2V0IGF0
IHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZS4gSWYgdGhlIG9mZnNldCBwYXNzZWQgaW4gaXMgYWxy
ZWFkeSBhdCB0aGUgdG9wIG9mIHRoZSBjdXJyZW50IHBhZ2UsCitkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAoraW5k
ZXggZTcxNTIxOWUyNjguLjYxMDhiMDEzNDFkIDEwMDY0NAorLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCitAQCAtMjcs
NiArMjcsNyBAQAorIAorICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorICNpbmNsdWRlICJMYXlv
dXRSZXBhaW50ZXIuaCIKKysjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKKyAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKKyAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgorZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5j
cHAKK2luZGV4IDA2ZDgwNmMwYjYxLi4yYjcwOTBkNDViYSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisrKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAorQEAgLTMyLDYgKzMyLDcgQEAKKyAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisgI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKysjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyAjaW5jbHVkZSA8d3Rm
L1N0YWNrU3RhdHMuaD4KKyAKKyBuYW1lc3BhY2UgV2ViQ29yZSB7CitkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKK2luZGV4IDAyMDk0YTMyN2E1Li42OTViMDIzNTc4MCAx
MDA2NDQKKy0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKK0BAIC00NSw2ICs0
NSw3IEBACisgI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCisgI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKKysjaW5jbHVkZSAiTGF5b3V0U3Rh
dGUuaCIKKyAjaW5jbHVkZSAiUGFnZS5oIgorICNpbmNsdWRlICJQYWludEluZm8uaCIKKyAjaW5j
bHVkZSAiUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCIKIGRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCi1pbmRleCAwNTU1YjFlNzEyZi4uZTFmMTU3OGM5NmEgMTAwNjQ0Citp
bmRleCAwNTU1YjFlNzEyZi4uOGM3ODQ3NTFhNjIgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAogKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKIEBAIC0xMDgsNyArMTA4LDcgQEAgc3RydWN0IFNhbWVTaXpl
QXNSZW5kZXJPYmplY3QgewpAQCAtMzk0LDcgKzE0NDAsMjEgQEAgaW5kZXggMDU1NWIxZTcxMmYu
LmUxZjE1NzhjOTZhIDEwMDY0NAogICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG5v
ZGUuZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCiAgICAgICAgICByZW5kZXJWaWV3LT5kaWRDcmVh
dGVSZW5kZXJlcigpOwogICNpZm5kZWYgTkRFQlVHCi1AQCAtMTE5NywxNCArMTE5OSw4MCBAQCB2
b2lkIFJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwg
Ym9vbCBtYXJrLCBpbnQgZGVwdGgpCitAQCAtMTAxMiw2ICsxMDE0LDEzIEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpzaG93UmVuZGVyVHJlZUZvclRoaXMoKSBjb25zdAorICAgICBXVEZMb2dBbHdheXMo
IiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKKyB9CisgCisrdm9pZCBSZW5k
ZXJPYmplY3Q6Om91dHB1dFJlbmRlclN1YlRyZWVBbmRNYXJrKFRleHRTdHJlYW0mIHN0cmVhbSwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBtYXJrZWRPYmplY3QsIGludCBkZXB0aCkgY29uc3QKKyt7Cisr
ICAgIG91dHB1dFJlbmRlck9iamVjdChzdHJlYW0sIG1hcmtlZE9iamVjdCA9PSB0aGlzLCBkZXB0
aCk7CisrICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzKSkKKysgICAgICAgIGRvd25j
YXN0PFJlbmRlckJsb2NrRmxvdz4oKnRoaXMpLm91dHB1dExpbmVUcmVlQW5kTWFyayhzdHJlYW0s
IG51bGxwdHIsIGRlcHRoICsgMSk7CisrfQorKworIHZvaWQgUmVuZGVyT2JqZWN0OjpzaG93TGlu
ZVRyZWVGb3JUaGlzKCkgY29uc3QKKyB7CisgICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93Pigq
dGhpcykpCitAQCAtMTE5NywxNCArMTIwNiw4MCBAQCB2b2lkIFJlbmRlck9iamVjdDo6b3V0cHV0
UmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpCiAg
ICAgIHN0cmVhbS5uZXh0TGluZSgpOwogIH0KICAKQEAgLTQwOSw3ICsxNDY5LDcgQEAgaW5kZXgg
MDU1NWIxZTcxMmYuLmUxZjE1NzhjOTZhIDEwMDY0NAogKyAgICBmb3IgKGF1dG8qIGNoaWxkID0g
Zmlyc3RDaGlsZFNsb3coKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAr
ICAgICAgICBjaGlsZC0+cmVuZGVyU3VidHJlZVN0cnVjdHVyZShzdHJlYW0pOwogK30KLSsKKyAK
ICsvLyAxKClSZW5kZXJWaWV3fDIoMSlSZW5kZXJCbG9ja3wzKDIpUmVuZGVyQm9keXw0KDMpUmVu
ZGVyQmxvY2t8NSgzKUFub255bW91c1JlbmRlckJsb2NrfAogK3ZvaWQgUmVuZGVyT2JqZWN0Ojpv
dXRwdXRSZW5kZXJPYmplY3RTdHJ1Y3R1cmUoV1RGOjpUZXh0U3RyZWFtJiBzdHJlYW0pIGNvbnN0
CiArewpAQCAtNDE4LDcgKzE0NzgsNyBAQCBpbmRleCAwNTU1YjFlNzEyZi4uZTFmMTU3OGM5NmEg
MTAwNjQ0CiArICAgICAgICBzdHJlYW0gPDwgIigiIDw8IHBhcmVudCgpLT5yZW5kZXJJZCgpIDw8
ICIpIjsKICsgICAgZWxzZQogKyAgICAgICAgc3RyZWFtIDw8ICIoKSI7Ci0gCisrCiArICAgIFN0
cmluZyBuYW1lID0gcmVuZGVyTmFtZSgpOwogKyAgICAvLyBGSVhNRTogUmVuZGVyZXIncyBuYW1l
IHNob3VsZCBub3QgaW5jbHVkZSBwcm9wZXJ0eSB2YWx1ZSBsaXN0aW5nLgogKyAgICBpbnQgcG9z
ID0gbmFtZS5maW5kKCcoJyk7CkBAIC01MjAsNyArMTU4MCw3IEBAIGluZGV4IDNjNGYxNWFhNGYx
Li4zODNiYjQ2Yjg3NiAxMDA2NDQKICAgICAgUmVuZGVyRWxlbWVudCogbV9wYXJlbnQ7CiAgICAg
IFJlbmRlck9iamVjdCogbV9wcmV2aW91czsKIGRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKLWluZGV4IDZhZTA0N2M0NjlmLi4zYTlmNDgzOTM1MiAxMDA2NDQKK2luZGV4IGU1
NWJlMWU2YWQ4Li5lOTk3OTBkMWM4MyAxMDA2NDQKIC0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAogKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCiBAQCAtMjI4LDYgKzIyOCwxMSBAQCBUZXh0KiBSZW5kZXJUZXh0Ojp0ZXh0Tm9k
ZSgpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>