<?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>205534</bug_id>
          
          <creation_ts>2019-12-20 17:57:47 -0800</creation_ts>
          <short_desc>Add SPI to disable CORS on requests to URLs matching a pattern</short_desc>
          <delta_ts>2020-01-02 13:14:15 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601051</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-20 17:57:47 -0800</bug_when>
    <thetext>Add SPI to disable CORS on requests to URLs matching a pattern</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601059</commentid>
    <comment_count>1</comment_count>
      <attachid>386285</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-20 18:21:00 -0800</bug_when>
    <thetext>Created attachment 386285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601060</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-20 18:21:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/58011337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601077</commentid>
    <comment_count>3</comment_count>
      <attachid>386293</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-21 00:31:17 -0800</bug_when>
    <thetext>Created attachment 386293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601089</commentid>
    <comment_count>4</comment_count>
      <attachid>386296</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-21 07:56:11 -0800</bug_when>
    <thetext>Created attachment 386296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602189</commentid>
    <comment_count>5</comment_count>
      <attachid>386296</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-02 11:57:30 -0800</bug_when>
    <thetext>Comment on attachment 386296
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=386296&amp;action=review

r=me

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:156
&gt; +    bool disableCORS = document.isRunningUserScripts() &amp;&amp; LegacySchemeRegistry::isUserExtensionScheme(request.url().protocol().toStringWithoutCopying());

s/disableCORS/shouldDisableCORS

&gt; Source/WebCore/page/Page.cpp:338
&gt; +    }

Shouldn&apos;t we shrinkToFit() afterwards?

&gt; Source/WebCore/page/Page.cpp:3102
&gt; +    for (const auto&amp; pattern : m_corsDisablingPatterns) {

Could be written using WTF::anyOf()

&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:138
&gt; +    const Vector&lt;WTF::String&gt; corsDisablingPatterns() const { return m_corsDisablingPatterns; }

const Vector&lt;WTF::String&gt;&amp; for return value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602209</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-02 13:14:15 -0800</bug_when>
    <thetext>http://trac.webkit.org/r253978</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386285</attachid>
            <date>2019-12-20 18:21:00 -0800</date>
            <delta_ts>2019-12-21 00:31:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205534-20191220182059.patch</filename>
            <type>text/plain</type>
            <size>17989</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEyLTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkaXNhYmxlIENPUlMgb24gcmVxdWVzdHMgdG8gVVJMcyBtYXRjaGluZyBhIHBhdHRlcm4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTUzNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMTEzMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gcmVtb3ZlIHRo
ZSBsYXllcmluZyB2aW9sYXRpb24gaW4gTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVu
c2lvblNjaGVtZQorICAgICAgICBhbmQgZml4IHRoZSBidWcgaW4gdGhlIHJhZGFyLiAgVGhlIFNQ
SSBpcyBleGVyY2lzZWQgYnkgYSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNob3VsZERpc2FibGVDb3JzRm9yUmVx
dWVzdFRvIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4
dGVuc2lvblNjaGVtZSk6CisKIDIwMTktMTItMjAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIEludmFsaWRhdGUgb25seSBhZmZlY3RlZCBlbGVtZW50cyBhZnRl
ciBtZWRpYSBxdWVyeSBldmFsdWF0aW9uIGNoYW5nZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTM4
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1MywxMSBAQCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OkRvY3VtZW50VGhyZWFkCiAgICAgaWYgKHNob3VsZFNldEhUVFBIZWFkZXJzVG9LZWVw
KCkpCiAgICAgICAgIG1fb3B0aW9ucy5odHRwSGVhZGVyc1RvS2VlcCA9IGh0dHBIZWFkZXJzVG9L
ZWVwRnJvbUNsZWFuaW5nKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIGlmIChk
b2N1bWVudC5pc1J1bm5pbmdVc2VyU2NyaXB0cygpICYmIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpp
c1VzZXJFeHRlbnNpb25TY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSkpIHsKKyAgICBib29sIGRpc2FibGVDT1JTID0gZG9jdW1lbnQuaXNSdW5u
aW5nVXNlclNjcmlwdHMoKSAmJiBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9u
U2NoZW1lKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
OworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICBkaXNhYmxl
Q09SUyB8PSBwYWdlLT5zaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhyZXF1ZXN0LnVybCgp
KTsKKworICAgIGlmIChkaXNhYmxlQ09SUykgewogICAgICAgICBtX29wdGlvbnMubW9kZSA9IEZl
dGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzOwogICAgICAgICBtX29wdGlvbnMuZmlsdGVyaW5nUG9s
aWN5ID0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGU7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
VXNlckNvbnRlbnRQcm92aWRlci5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5o
IgogI2luY2x1ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzI4LDYgKzMy
OSwxMyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBtX2xpYldlYlJUQ1Byb3ZpZGVyLT5zdXBwb3J0c1ZQOChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1ZQOENvZGVjRW5hYmxlZCgp
KTsKICNlbmRpZgorCisgICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8mJiBwYXR0ZXJuIDogV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb3Jz
RGlzYWJsaW5nUGF0dGVybnMpKSB7CisgICAgICAgIFVzZXJDb250ZW50VVJMUGF0dGVybiBwYXJz
ZWRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOworICAgICAgICBpZiAocGFyc2VkUGF0dGVybi5p
c1ZhbGlkKCkpCisgICAgICAgICAgICBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucy51bmNoZWNrZWRB
cHBlbmQoV1RGTW92ZShwYXJzZWRQYXR0ZXJuKSk7CisgICAgfQogfQogCiBQYWdlOjp+UGFnZSgp
CkBAIC0zMDg5LDQgKzMwOTcsMTMgQEAgdm9pZCBQYWdlOjpyZWNvbXB1dGVUZXh0QXV0b1Npemlu
Z0luQWxsRgogfQogI2VuZGlmCiAKK2Jvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1
ZXN0VG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXR0
ZXJuIDogbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpIHsKKyAgICAgICAgaWYgKHBhdHRlcm4ubWF0
Y2hlcyh1cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogY2xhc3MgVXNl
ckNvbnRlbnRQcm92aWRlcjsKK2NsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTcyOCw2ICs3MjksOCBAQCBwdWJsaWM6CiAg
ICAgRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciogZGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlci5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZERpc2FibGVDb3JzRm9yUmVx
dWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0
aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTAwOCw2ICsxMDEx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbWVkaWFCdWZmZXJpbmdJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2luVXBkYXRlUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8VXNlckNv
bnRlbnRVUkxQYXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIH07CiAKIGlubGluZSBQ
YWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25m
aWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyPiBkZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyOwogI2VuZGlmCisgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjUzODIzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzMsNiArNTMzLDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2
aWNlV29yawogCiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9u
Y2UgU2FmYXJpIGhhcyBhZG9wdGVkIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX2NvcnNEaXNhYmxp
bmdQYXR0ZXJucwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoc2NoZW1lID09ICJzYWZhcmkt
ZXh0ZW5zaW9uIikKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjUzODIzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0xMi0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gZGlzYWJsZSBDT1JTIG9uIHJlcXVlc3Rz
IHRvIFVSTHMgbWF0Y2hpbmcgYSBwYXR0ZXJuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDEx
MzM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1
cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246On5QYWdl
Q29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29yc0Rp
c2FibGluZ1BhdHRlcm5zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246
OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF9jb3JzRGlzYWJsaW5nUGF0dGVybnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fb3ZlcnJpZGRlbk1lZGlhVHlwZSk6
CisKIDIwMTktMTItMTkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTG9nIHRlbGVtZXRyeSBmb3IgSU9Vc2VyQ2xpZW50IGxvb2t1cHMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShy
ZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICAgICBlbmNvZGVyIDw8IGJhY2tncm91
bmRDb2xvcjsKICAgICBlbmNvZGVyIDw8IG9sZFBhZ2VJRDsKICAgICBlbmNvZGVyIDw8IG92ZXJy
aWRkZW5NZWRpYVR5cGU7CisgICAgZW5jb2RlciA8PCBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiB9
CiAKIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0zOTcsNiArMzk4LDEy
IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOworICAgIGRlY29kZXIgPj4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOwor
ICAgIGlmICghY29yc0Rpc2FibGluZ1BhdHRlcm5zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29y
c0Rpc2FibGluZ1BhdHRlcm5zKTsKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsNyBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG9sZFBhZ2VJRDsKIAogICAgIFN0cmluZyBvdmVycmlkZGVuTWVkaWFUeXBlOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTQ2LDYgKzc1NDYsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5k
Q29sb3IgPSBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1l
ZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKKyAgICBwYXJhbWV0ZXJzLmNvcnNEaXNh
YmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7
CiAKICAgICBwcm9jZXNzLmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLCBwYXJhbWV0ZXJzKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAy
NTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjZW5kaWYKIAogbmFtZXNw
YWNlIEFQSSB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgp
CkBAIC00OCwxMyArNDcsOCBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0
aW9uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3VyYXRpb24pOwogfQogCi1Q
YWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQotewotfQotCi1QYWdlQ29uZmln
dXJhdGlvbjo6flBhZ2VDb25maWd1cmF0aW9uKCkKLXsKLX0KK1BhZ2VDb25maWd1cmF0aW9uOjpQ
YWdlQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKK1BhZ2VDb25maWd1cmF0aW9uOjp+UGFnZUNv
bmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CiAKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNv
bmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogewpAQCAtODUsNiArNzksNyBAQCBSZWY8UGFnZUNv
bmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uCiAjZW5kaWYKICAgICBmb3IgKGF1dG8mIHBh
aXIgOiB0aGlzLT5tX3VybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOworICAgIGNvcHkt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7
CiAKICAgICByZXR1cm4gY29weTsKIH0KQEAgLTE0MCw3ICsxMzUsNiBAQCB2b2lkIFBhZ2VDb25m
aWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFnZShXCiAgICAgbV9yZWxhdGVkUGFnZSA9IHJlbGF0ZWRQ
YWdlOwogfQogCi0KIFZpc2l0ZWRMaW5rU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVk
TGlua1N0b3JlKCkKIHsKICAgICByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19QUk9UT0NPTChfVUlDbGlja0ludGVyYWN0aW9u
RHJpdmluZyk7CkBAIC0xMzQsNiArMTM1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VVJMU2No
ZW1lSGFuZGxlckZvclVSTFNjaGVtZShSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIGNvbnN0IEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJl
ZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiYgdXJsU2NoZW1lSGFuZGxlcnMoKSB7IHJl
dHVybiBtX3VybFNjaGVtZUhhbmRsZXJzOyB9CiAKKyAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOyB9CisgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFdU
Rjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92
ZShwYXR0ZXJucyk7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nl
c3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMTcwLDYgKzE3NCw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9j
b3JzRGlzYWJsaW5nUGF0dGVybnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtODgzLDYgKzg4MywyNCBAQCAtIChXS1dlYnNpdGVEYXRhU3RvcmUgKilfd2Vic2l0ZURh
dGFTdG9yCiAgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLnBlZWsoKTsKIH0KIAorLSAoTlNB
cnJheTxOU1N0cmluZyAqPiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKK3sKKyAgICBhdXRvJiB2
ZWN0b3IgPSBfcGFnZUNvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAg
IE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTp2ZWN0b3Iuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHBhdHRlcm4gOiB2ZWN0b3IpCisgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6cGF0dGVybl07CisgICAgcmV0dXJuIGFycmF5OworfQorCist
ICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilw
YXR0ZXJucworeworICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShwYXR0ZXJucy5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqcGF0
dGVybiBpbiBwYXR0ZXJucykKKyAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChwYXR0ZXJu
KTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHZlY3RvcikpOworfQorCiAtIChCT09MKV9kcmF3c0JhY2tncm91bmQKIHsKICAgICByZXR1
cm4gX2RyYXdzQmFja2dyb3VuZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
NiArNzcsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLRHJhZ0xpZnRECiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaG91bGREZWZlckFzeW5jaHJvbm91c1Njcmlw
dHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOikgQk9PTCBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNT
Y3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0
KSwgaW9zKDEyLjApKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNp
dGVEYXRhU3RvcmUgKl93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5LCBzZXR0ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eTopIEJPT0wgX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBXS19BUElfQVZBSUxBQkxF
KGlvcyg5XzApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1LDYgKzUxNSw4IEBAIFdl
YlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlcjo6Y3JlYXRlKCp0aGlzKTsKICNlbmRpZgogCisgICAgcGFnZUNvbmZp
Z3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNE
aXNhYmxpbmdQYXR0ZXJucyk7CisKICAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIHVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRl
cnMuc3RvcmUpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjUzODU5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTItMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIGRpc2FibGUgQ09SUyBv
biByZXF1ZXN0cyB0byBVUkxzIG1hdGNoaW5nIGEgcGF0dGVybgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTM0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81ODAxMTMzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW06CisKIDIwMTktMTItMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBQYWludCBoaWdobGlnaHRzIHNwZWNpZmllZCBpbiBDU1MgSGln
aGxpZ2h0IEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCShyZXZpc2lvbiAyNTM4
MjMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQg
ImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgpAQCAtODAzLDMgKzgwNCw1NiBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIENPUlMp
CiAgICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3MpOwogICAgIEVYUEVDVF9GQUxTRShjb3JzZmFp
bHVyZSk7CiB9CisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlMpCit7CisgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvc3VicmVzb3Vy
Y2UiLCB7ICJzdWJyZXNvdXJjZWNvbnRlbnQiIH0gfQorICAgIH0pOworCisgICAgX19ibG9jayBi
b29sIGNvcnNzdWNjZXNzID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGNvcnNmYWlsdXJlID0g
ZmFsc2U7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gaGFuZGxl
ciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworCisgICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJdOwor
CisgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAq
LCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3Qu
VVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CisgICAgICAgICAgICBO
U0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PmZldGNo
KCdodHRwOi8vMTI3LjAuMC4xOiVkL3N1YnJlc291cmNlJykudGhlbihmdW5jdGlvbigpe2ZldGNo
KCcvY29yc3N1Y2Nlc3MnKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3JzZmFpbHVyZScp
fSk8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURh
dGE6ZGF0YV07CisgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgICAgICB9IGVsc2Ug
aWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NvcnNzdWNjZXNz
Il0pIHsKKyAgICAgICAgICAgIGNvcnNzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvbmUg
PSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVh
bFRvU3RyaW5nOkAiL2NvcnNmYWlsdXJlIl0pIHsKKyAgICAgICAgICAgIGNvcnNmYWlsdXJlID0g
dHJ1ZTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH1dOworICAgIAorICAgIHsKKyAgICAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0KKyAgICBFWFBFQ1Rf
RkFMU0UoY29yc3N1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKGNvcnNmYWlsdXJlKTsKKyAgICAK
KyAgICBjb3Jzc3VjY2VzcyA9IGZhbHNlOworICAgIGNvcnNmYWlsdXJlID0gZmFsc2U7CisgICAg
ZG9uZSA9IGZhbHNlOworCisgICAgY29uZmlndXJhdGlvbi5fY29yc0Rpc2FibGluZ1BhdHRlcm5z
ID0gQFtAImh0dHA6Ly8qLyoiXTsKKyAgICB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3MpOwor
ICAgIEVYUEVDVF9GQUxTRShjb3JzZmFpbHVyZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386293</attachid>
            <date>2019-12-21 00:31:17 -0800</date>
            <delta_ts>2019-12-21 07:56:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205534-20191221003116.patch</filename>
            <type>text/plain</type>
            <size>17970</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEyLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkaXNhYmxlIENPUlMgb24gcmVxdWVzdHMgdG8gVVJMcyBtYXRjaGluZyBhIHBhdHRlcm4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTUzNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMTEzMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gcmVtb3ZlIHRo
ZSBsYXllcmluZyB2aW9sYXRpb24gaW4gTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVu
c2lvblNjaGVtZQorICAgICAgICBhbmQgZml4IHRoZSBidWcgaW4gdGhlIHJhZGFyLiAgVGhlIFNQ
SSBpcyBleGVyY2lzZWQgYnkgYSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNob3VsZERpc2FibGVDb3JzRm9yUmVx
dWVzdFRvIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4
dGVuc2lvblNjaGVtZSk6CisKIDIwMTktMTItMjAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIEludmFsaWRhdGUgb25seSBhZmZlY3RlZCBlbGVtZW50cyBhZnRl
ciBtZWRpYSBxdWVyeSBldmFsdWF0aW9uIGNoYW5nZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTM4
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1MywxMSBAQCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OkRvY3VtZW50VGhyZWFkCiAgICAgaWYgKHNob3VsZFNldEhUVFBIZWFkZXJzVG9LZWVw
KCkpCiAgICAgICAgIG1fb3B0aW9ucy5odHRwSGVhZGVyc1RvS2VlcCA9IGh0dHBIZWFkZXJzVG9L
ZWVwRnJvbUNsZWFuaW5nKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIGlmIChk
b2N1bWVudC5pc1J1bm5pbmdVc2VyU2NyaXB0cygpICYmIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpp
c1VzZXJFeHRlbnNpb25TY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSkpIHsKKyAgICBib29sIGRpc2FibGVDT1JTID0gZG9jdW1lbnQuaXNSdW5u
aW5nVXNlclNjcmlwdHMoKSAmJiBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9u
U2NoZW1lKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
OworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICBkaXNhYmxl
Q09SUyB8PSBwYWdlLT5zaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhyZXF1ZXN0LnVybCgp
KTsKKworICAgIGlmIChkaXNhYmxlQ09SUykgewogICAgICAgICBtX29wdGlvbnMubW9kZSA9IEZl
dGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzOwogICAgICAgICBtX29wdGlvbnMuZmlsdGVyaW5nUG9s
aWN5ID0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGU7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
VXNlckNvbnRlbnRQcm92aWRlci5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5o
IgogI2luY2x1ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzI4LDYgKzMy
OSwxMyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBtX2xpYldlYlJUQ1Byb3ZpZGVyLT5zdXBwb3J0c1ZQOChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1ZQOENvZGVjRW5hYmxlZCgp
KTsKICNlbmRpZgorCisgICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8mJiBwYXR0ZXJuIDogV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb3Jz
RGlzYWJsaW5nUGF0dGVybnMpKSB7CisgICAgICAgIFVzZXJDb250ZW50VVJMUGF0dGVybiBwYXJz
ZWRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOworICAgICAgICBpZiAocGFyc2VkUGF0dGVybi5p
c1ZhbGlkKCkpCisgICAgICAgICAgICBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucy51bmNoZWNrZWRB
cHBlbmQoV1RGTW92ZShwYXJzZWRQYXR0ZXJuKSk7CisgICAgfQogfQogCiBQYWdlOjp+UGFnZSgp
CkBAIC0zMDg5LDQgKzMwOTcsMTMgQEAgdm9pZCBQYWdlOjpyZWNvbXB1dGVUZXh0QXV0b1Npemlu
Z0luQWxsRgogfQogI2VuZGlmCiAKK2Jvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1
ZXN0VG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXR0
ZXJuIDogbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpIHsKKyAgICAgICAgaWYgKHBhdHRlcm4ubWF0
Y2hlcyh1cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogY2xhc3MgVXNl
ckNvbnRlbnRQcm92aWRlcjsKK2NsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTcyOCw2ICs3MjksOCBAQCBwdWJsaWM6CiAg
ICAgRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciogZGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlci5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZERpc2FibGVDb3JzRm9yUmVx
dWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0
aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTAwOCw2ICsxMDEx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbWVkaWFCdWZmZXJpbmdJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2luVXBkYXRlUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8VXNlckNv
bnRlbnRVUkxQYXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIH07CiAKIGlubGluZSBQ
YWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25m
aWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyPiBkZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyOwogI2VuZGlmCisgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjUzODIzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzMsNiArNTMzLDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2
aWNlV29yawogCiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9u
Y2UgU2FmYXJpIGhhcyBhZG9wdGVkIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX2NvcnNEaXNhYmxp
bmdQYXR0ZXJucwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoc2NoZW1lID09ICJzYWZhcmkt
ZXh0ZW5zaW9uIikKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjUzODIzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0xMi0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gZGlzYWJsZSBDT1JTIG9uIHJlcXVlc3Rz
IHRvIFVSTHMgbWF0Y2hpbmcgYSBwYXR0ZXJuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDEx
MzM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1
cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246On5QYWdl
Q29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29yc0Rp
c2FibGluZ1BhdHRlcm5zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246
OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF9jb3JzRGlzYWJsaW5nUGF0dGVybnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fb3ZlcnJpZGRlbk1lZGlhVHlwZSk6
CisKIDIwMTktMTItMTkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTG9nIHRlbGVtZXRyeSBmb3IgSU9Vc2VyQ2xpZW50IGxvb2t1cHMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShy
ZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICAgICBlbmNvZGVyIDw8IGJhY2tncm91
bmRDb2xvcjsKICAgICBlbmNvZGVyIDw8IG9sZFBhZ2VJRDsKICAgICBlbmNvZGVyIDw8IG92ZXJy
aWRkZW5NZWRpYVR5cGU7CisgICAgZW5jb2RlciA8PCBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiB9
CiAKIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0zOTcsNiArMzk4LDEy
IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOworICAgIGRlY29kZXIgPj4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOwor
ICAgIGlmICghY29yc0Rpc2FibGluZ1BhdHRlcm5zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29y
c0Rpc2FibGluZ1BhdHRlcm5zKTsKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsNyBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG9sZFBhZ2VJRDsKIAogICAgIFN0cmluZyBvdmVycmlkZGVuTWVkaWFUeXBlOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTQ2LDYgKzc1NDYsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5k
Q29sb3IgPSBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1l
ZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKKyAgICBwYXJhbWV0ZXJzLmNvcnNEaXNh
YmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7
CiAKICAgICBwcm9jZXNzLmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLCBwYXJhbWV0ZXJzKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAy
NTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjZW5kaWYKIAogbmFtZXNw
YWNlIEFQSSB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgp
CkBAIC00OCwxMyArNDcsOCBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0
aW9uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3VyYXRpb24pOwogfQogCi1Q
YWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQotewotfQotCi1QYWdlQ29uZmln
dXJhdGlvbjo6flBhZ2VDb25maWd1cmF0aW9uKCkKLXsKLX0KK1BhZ2VDb25maWd1cmF0aW9uOjpQ
YWdlQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKK1BhZ2VDb25maWd1cmF0aW9uOjp+UGFnZUNv
bmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CiAKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNv
bmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogewpAQCAtODUsNiArNzksNyBAQCBSZWY8UGFnZUNv
bmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uCiAjZW5kaWYKICAgICBmb3IgKGF1dG8mIHBh
aXIgOiB0aGlzLT5tX3VybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOworICAgIGNvcHkt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7
CiAKICAgICByZXR1cm4gY29weTsKIH0KQEAgLTE0MCw3ICsxMzUsNiBAQCB2b2lkIFBhZ2VDb25m
aWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFnZShXCiAgICAgbV9yZWxhdGVkUGFnZSA9IHJlbGF0ZWRQ
YWdlOwogfQogCi0KIFZpc2l0ZWRMaW5rU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVk
TGlua1N0b3JlKCkKIHsKICAgICByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19QUk9UT0NPTChfVUlDbGlja0ludGVyYWN0aW9u
RHJpdmluZyk7CkBAIC0xMzQsNiArMTM1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VVJMU2No
ZW1lSGFuZGxlckZvclVSTFNjaGVtZShSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIGNvbnN0IEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJl
ZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiYgdXJsU2NoZW1lSGFuZGxlcnMoKSB7IHJl
dHVybiBtX3VybFNjaGVtZUhhbmRsZXJzOyB9CiAKKyAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOyB9CisgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFdU
Rjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92
ZShwYXR0ZXJucyk7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nl
c3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMTcwLDYgKzE3NCw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9j
b3JzRGlzYWJsaW5nUGF0dGVybnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtODgzLDYgKzg4MywyNCBAQCAtIChXS1dlYnNpdGVEYXRhU3RvcmUgKilfd2Vic2l0ZURh
dGFTdG9yCiAgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLnBlZWsoKTsKIH0KIAorLSAoTlNB
cnJheTxOU1N0cmluZyAqPiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKK3sKKyAgICBhdXRvJiB2
ZWN0b3IgPSBfcGFnZUNvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAg
IE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTp2ZWN0b3Iuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHBhdHRlcm4gOiB2ZWN0b3IpCisgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6cGF0dGVybl07CisgICAgcmV0dXJuIGFycmF5OworfQorCist
ICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilw
YXR0ZXJucworeworICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShwYXR0ZXJucy5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqcGF0
dGVybiBpbiBwYXR0ZXJucykKKyAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChwYXR0ZXJu
KTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHZlY3RvcikpOworfQorCiAtIChCT09MKV9kcmF3c0JhY2tncm91bmQKIHsKICAgICByZXR1
cm4gX2RyYXdzQmFja2dyb3VuZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
NiArNzcsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLRHJhZ0xpZnRECiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaG91bGREZWZlckFzeW5jaHJvbm91c1Njcmlw
dHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOikgQk9PTCBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNT
Y3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0
KSwgaW9zKDEyLjApKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNp
dGVEYXRhU3RvcmUgKl93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5LCBzZXR0ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eTopIEJPT0wgX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBXS19BUElfQVZBSUxBQkxF
KGlvcyg5XzApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1LDYgKzUxNSw4IEBAIFdl
YlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlcjo6Y3JlYXRlKCp0aGlzKTsKICNlbmRpZgogCisgICAgcGFnZUNvbmZp
Z3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNE
aXNhYmxpbmdQYXR0ZXJucyk7CisKICAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIHVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRl
cnMuc3RvcmUpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjUzODYxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTItMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIGRpc2FibGUgQ09SUyBv
biByZXF1ZXN0cyB0byBVUkxzIG1hdGNoaW5nIGEgcGF0dGVybgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTM0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81ODAxMTMzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW06CisKIDIwMTktMTItMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIgc2hvdWxkIHJlc3BlY3QgbmV3
IHRva2VuIG9yZGVycwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCShyZXZpc2lvbiAy
NTM4MjMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBv
cnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5oIgpAQCAtODAzLDMgKzgwNCw1NiBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIENP
UlMpCiAgICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3MpOwogICAgIEVYUEVDVF9GQUxTRShjb3Jz
ZmFpbHVyZSk7CiB9CisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlMpCit7Cisg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvc3VicmVz
b3VyY2UiLCB7ICJzdWJyZXNvdXJjZWNvbnRlbnQiIH0gfQorICAgIH0pOworCisgICAgYm9vbCBj
b3Jzc3VjY2VzcyA9IGZhbHNlOworICAgIGJvb2wgY29yc2ZhaWx1cmUgPSBmYWxzZTsKKyAgICBi
b29sIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJM
U2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJdOworCisgICAgW2hhbmRsZXIgc2V0U3Rh
cnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgeworICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKKyAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+ZmV0Y2goJ2h0dHA6Ly8xMjcuMC4wLjE6
JWQvc3VicmVzb3VyY2UnKS50aGVuKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3Jzc3VjY2VzcycpfSku
Y2F0Y2goZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNmYWlsdXJlJyl9KTwvc2NyaXB0PiIsIHNlcnZl
ci5wb3J0KCldIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxl
YXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKKyAgICAgICAg
ICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5V
UkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY29yc3N1Y2Nlc3MiXSkgeworICAgICAgICAgICAg
Y29yc3N1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0g
ZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY29yc2Zh
aWx1cmUiXSkgeworICAgICAgICAgICAgY29yc2ZhaWx1cmUgPSB0cnVlOworICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfV07CisgICAgCisgICAgeworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfQorICAgIEVYUEVDVF9GQUxTRShjb3Jzc3VjY2Vzcyk7
CisgICAgRVhQRUNUX1RSVUUoY29yc2ZhaWx1cmUpOworICAgIAorICAgIGNvcnNzdWNjZXNzID0g
ZmFsc2U7CisgICAgY29yc2ZhaWx1cmUgPSBmYWxzZTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAg
ICBjb25maWd1cmF0aW9uLl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBAW0AiaHR0cDovLyovKiJd
OworICAgIHsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9t
YWluLmh0bWwiXV1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIH0KKyAgICBFWFBFQ1RfVFJVRShjb3Jzc3VjY2Vzcyk7CisgICAgRVhQRUNUX0ZBTFNFKGNv
cnNmYWlsdXJlKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386296</attachid>
            <date>2019-12-21 07:56:11 -0800</date>
            <delta_ts>2020-01-02 11:57:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205534-20191221075610.patch</filename>
            <type>text/plain</type>
            <size>18038</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEyLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkaXNhYmxlIENPUlMgb24gcmVxdWVzdHMgdG8gVVJMcyBtYXRjaGluZyBhIHBhdHRlcm4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTUzNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMTEzMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gcmVtb3ZlIHRo
ZSBsYXllcmluZyB2aW9sYXRpb24gaW4gTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVu
c2lvblNjaGVtZQorICAgICAgICBhbmQgZml4IHRoZSBidWcgaW4gdGhlIHJhZGFyLiAgVGhlIFNQ
SSBpcyBleGVyY2lzZWQgYnkgYSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNob3VsZERpc2FibGVDb3JzRm9yUmVx
dWVzdFRvIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4
dGVuc2lvblNjaGVtZSk6CisKIDIwMTktMTItMjAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIEludmFsaWRhdGUgb25seSBhZmZlY3RlZCBlbGVtZW50cyBhZnRl
ciBtZWRpYSBxdWVyeSBldmFsdWF0aW9uIGNoYW5nZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTM4
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1MywxMSBAQCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OkRvY3VtZW50VGhyZWFkCiAgICAgaWYgKHNob3VsZFNldEhUVFBIZWFkZXJzVG9LZWVw
KCkpCiAgICAgICAgIG1fb3B0aW9ucy5odHRwSGVhZGVyc1RvS2VlcCA9IGh0dHBIZWFkZXJzVG9L
ZWVwRnJvbUNsZWFuaW5nKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIGlmIChk
b2N1bWVudC5pc1J1bm5pbmdVc2VyU2NyaXB0cygpICYmIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpp
c1VzZXJFeHRlbnNpb25TY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSkpIHsKKyAgICBib29sIGRpc2FibGVDT1JTID0gZG9jdW1lbnQuaXNSdW5u
aW5nVXNlclNjcmlwdHMoKSAmJiBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9u
U2NoZW1lKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
OworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICBkaXNhYmxl
Q09SUyB8PSBwYWdlLT5zaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhyZXF1ZXN0LnVybCgp
KTsKKworICAgIGlmIChkaXNhYmxlQ09SUykgewogICAgICAgICBtX29wdGlvbnMubW9kZSA9IEZl
dGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzOwogICAgICAgICBtX29wdGlvbnMuZmlsdGVyaW5nUG9s
aWN5ID0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGU7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
VXNlckNvbnRlbnRQcm92aWRlci5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5o
IgogI2luY2x1ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzI4LDYgKzMy
OSwxMyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBtX2xpYldlYlJUQ1Byb3ZpZGVyLT5zdXBwb3J0c1ZQOChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1ZQOENvZGVjRW5hYmxlZCgp
KTsKICNlbmRpZgorCisgICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8mJiBwYXR0ZXJuIDogV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb3Jz
RGlzYWJsaW5nUGF0dGVybnMpKSB7CisgICAgICAgIFVzZXJDb250ZW50VVJMUGF0dGVybiBwYXJz
ZWRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOworICAgICAgICBpZiAocGFyc2VkUGF0dGVybi5p
c1ZhbGlkKCkpCisgICAgICAgICAgICBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucy51bmNoZWNrZWRB
cHBlbmQoV1RGTW92ZShwYXJzZWRQYXR0ZXJuKSk7CisgICAgfQogfQogCiBQYWdlOjp+UGFnZSgp
CkBAIC0zMDg5LDQgKzMwOTcsMTMgQEAgdm9pZCBQYWdlOjpyZWNvbXB1dGVUZXh0QXV0b1Npemlu
Z0luQWxsRgogfQogI2VuZGlmCiAKK2Jvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1
ZXN0VG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXR0
ZXJuIDogbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpIHsKKyAgICAgICAgaWYgKHBhdHRlcm4ubWF0
Y2hlcyh1cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogY2xhc3MgVXNl
ckNvbnRlbnRQcm92aWRlcjsKK2NsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTcyOCw2ICs3MjksOCBAQCBwdWJsaWM6CiAg
ICAgRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciogZGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlci5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZERpc2FibGVDb3JzRm9yUmVx
dWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0
aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTAwOCw2ICsxMDEx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbWVkaWFCdWZmZXJpbmdJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2luVXBkYXRlUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8VXNlckNv
bnRlbnRVUkxQYXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIH07CiAKIGlubGluZSBQ
YWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25m
aWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyPiBkZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyOwogI2VuZGlmCisgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjUzODIzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzMsNiArNTMzLDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2
aWNlV29yawogCiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9u
Y2UgU2FmYXJpIGhhcyBhZG9wdGVkIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX2NvcnNEaXNhYmxp
bmdQYXR0ZXJucwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoc2NoZW1lID09ICJzYWZhcmkt
ZXh0ZW5zaW9uIikKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjUzODIzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0xMi0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gZGlzYWJsZSBDT1JTIG9uIHJlcXVlc3Rz
IHRvIFVSTHMgbWF0Y2hpbmcgYSBwYXR0ZXJuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDEx
MzM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1
cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246On5QYWdl
Q29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29yc0Rp
c2FibGluZ1BhdHRlcm5zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246
OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF9jb3JzRGlzYWJsaW5nUGF0dGVybnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fb3ZlcnJpZGRlbk1lZGlhVHlwZSk6
CisKIDIwMTktMTItMTkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTG9nIHRlbGVtZXRyeSBmb3IgSU9Vc2VyQ2xpZW50IGxvb2t1cHMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShy
ZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICAgICBlbmNvZGVyIDw8IGJhY2tncm91
bmRDb2xvcjsKICAgICBlbmNvZGVyIDw8IG9sZFBhZ2VJRDsKICAgICBlbmNvZGVyIDw8IG92ZXJy
aWRkZW5NZWRpYVR5cGU7CisgICAgZW5jb2RlciA8PCBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiB9
CiAKIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0zOTcsNiArMzk4LDEy
IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOworICAgIGRlY29kZXIgPj4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOwor
ICAgIGlmICghY29yc0Rpc2FibGluZ1BhdHRlcm5zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29y
c0Rpc2FibGluZ1BhdHRlcm5zKTsKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsNyBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG9sZFBhZ2VJRDsKIAogICAgIFN0cmluZyBvdmVycmlkZGVuTWVkaWFUeXBlOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTQ2LDYgKzc1NDYsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5k
Q29sb3IgPSBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1l
ZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKKyAgICBwYXJhbWV0ZXJzLmNvcnNEaXNh
YmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7
CiAKICAgICBwcm9jZXNzLmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLCBwYXJhbWV0ZXJzKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAy
NTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjZW5kaWYKIAogbmFtZXNw
YWNlIEFQSSB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgp
CkBAIC00OCwxMyArNDcsOCBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0
aW9uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3VyYXRpb24pOwogfQogCi1Q
YWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQotewotfQotCi1QYWdlQ29uZmln
dXJhdGlvbjo6flBhZ2VDb25maWd1cmF0aW9uKCkKLXsKLX0KK1BhZ2VDb25maWd1cmF0aW9uOjpQ
YWdlQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKK1BhZ2VDb25maWd1cmF0aW9uOjp+UGFnZUNv
bmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CiAKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNv
bmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogewpAQCAtODUsNiArNzksNyBAQCBSZWY8UGFnZUNv
bmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uCiAjZW5kaWYKICAgICBmb3IgKGF1dG8mIHBh
aXIgOiB0aGlzLT5tX3VybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOworICAgIGNvcHkt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7
CiAKICAgICByZXR1cm4gY29weTsKIH0KQEAgLTE0MCw3ICsxMzUsNiBAQCB2b2lkIFBhZ2VDb25m
aWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFnZShXCiAgICAgbV9yZWxhdGVkUGFnZSA9IHJlbGF0ZWRQ
YWdlOwogfQogCi0KIFZpc2l0ZWRMaW5rU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVk
TGlua1N0b3JlKCkKIHsKICAgICByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19QUk9UT0NPTChfVUlDbGlja0ludGVyYWN0aW9u
RHJpdmluZyk7CkBAIC0xMzQsNiArMTM1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VVJMU2No
ZW1lSGFuZGxlckZvclVSTFNjaGVtZShSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIGNvbnN0IEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJl
ZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiYgdXJsU2NoZW1lSGFuZGxlcnMoKSB7IHJl
dHVybiBtX3VybFNjaGVtZUhhbmRsZXJzOyB9CiAKKyAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOyB9CisgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFdU
Rjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92
ZShwYXR0ZXJucyk7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nl
c3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMTcwLDYgKzE3NCw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9j
b3JzRGlzYWJsaW5nUGF0dGVybnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtODgzLDYgKzg4MywyNCBAQCAtIChXS1dlYnNpdGVEYXRhU3RvcmUgKilfd2Vic2l0ZURh
dGFTdG9yCiAgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLnBlZWsoKTsKIH0KIAorLSAoTlNB
cnJheTxOU1N0cmluZyAqPiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKK3sKKyAgICBhdXRvJiB2
ZWN0b3IgPSBfcGFnZUNvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAg
IE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTp2ZWN0b3Iuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHBhdHRlcm4gOiB2ZWN0b3IpCisgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6cGF0dGVybl07CisgICAgcmV0dXJuIGFycmF5OworfQorCist
ICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilw
YXR0ZXJucworeworICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShwYXR0ZXJucy5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqcGF0
dGVybiBpbiBwYXR0ZXJucykKKyAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChwYXR0ZXJu
KTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHZlY3RvcikpOworfQorCiAtIChCT09MKV9kcmF3c0JhY2tncm91bmQKIHsKICAgICByZXR1
cm4gX2RyYXdzQmFja2dyb3VuZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
NiArNzcsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLRHJhZ0xpZnRECiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaG91bGREZWZlckFzeW5jaHJvbm91c1Njcmlw
dHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOikgQk9PTCBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNT
Y3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0
KSwgaW9zKDEyLjApKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNp
dGVEYXRhU3RvcmUgKl93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5LCBzZXR0ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eTopIEJPT0wgX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBXS19BUElfQVZBSUxBQkxF
KGlvcyg5XzApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1LDYgKzUxNSw4IEBAIFdl
YlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlcjo6Y3JlYXRlKCp0aGlzKTsKICNlbmRpZgogCisgICAgcGFnZUNvbmZp
Z3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNE
aXNhYmxpbmdQYXR0ZXJucyk7CisKICAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIHVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRl
cnMuc3RvcmUpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjUzODYxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTItMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIGRpc2FibGUgQ09SUyBv
biByZXF1ZXN0cyB0byBVUkxzIG1hdGNoaW5nIGEgcGF0dGVybgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTM0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81ODAxMTMzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW06CisKIDIwMTktMTItMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIgc2hvdWxkIHJlc3BlY3QgbmV3
IHRva2VuIG9yZGVycwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCShyZXZpc2lvbiAy
NTM4MjMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBv
cnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5oIgpAQCAtODAzLDMgKzgwNCw2MCBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIENP
UlMpCiAgICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3MpOwogICAgIEVYUEVDVF9GQUxTRShjb3Jz
ZmFpbHVyZSk7CiB9CisKKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCitURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIERpc2FibGVDT1JTKQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiL3N1YnJlc291cmNlIiwgeyAic3VicmVzb3VyY2Vjb250
ZW50IiB9IH0KKyAgICB9KTsKKworICAgIGJvb2wgY29yc3N1Y2Nlc3MgPSBmYWxzZTsKKyAgICBi
b29sIGNvcnNmYWlsdXJlID0gZmFsc2U7CisgICAgYm9vbCBkb25lID0gZmFsc2U7CisKKyAgICBh
dXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpA
ImNvcnMiXTsKKworICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZd
KFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgaWYgKFt0
YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7Cisg
ICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8
c2NyaXB0PmZldGNoKCdodHRwOi8vMTI3LjAuMC4xOiVkL3N1YnJlc291cmNlJykudGhlbihmdW5j
dGlvbigpe2ZldGNoKCcvY29yc3N1Y2Nlc3MnKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmV0Y2goJy9j
b3JzZmFpbHVyZScpfSk8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3Ro
IHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZURhdGE6ZGF0YV07CisgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAg
ICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
L2NvcnNzdWNjZXNzIl0pIHsKKyAgICAgICAgICAgIGNvcnNzdWNjZXNzID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJM
LnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NvcnNmYWlsdXJlIl0pIHsKKyAgICAgICAgICAgIGNv
cnNmYWlsdXJlID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH1dOworICAgIAorICAg
IHsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0
bWwiXV1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0K
KyAgICBFWFBFQ1RfRkFMU0UoY29yc3N1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKGNvcnNmYWls
dXJlKTsKKyAgICAKKyAgICBjb3Jzc3VjY2VzcyA9IGZhbHNlOworICAgIGNvcnNmYWlsdXJlID0g
ZmFsc2U7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgY29uZmlndXJhdGlvbi5fY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zID0gQFtAImh0dHA6Ly8qLyoiXTsKKyAgICB7CisgICAgICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY29y
c3N1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRShjb3JzZmFpbHVyZSk7Cit9CisKKyNlbmRpZiAv
LyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQo=
</data>
<flag name="review"
          id="402116"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="402379"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>