<?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>171987</bug_id>
          
          <creation_ts>2017-05-11 14:12:52 -0700</creation_ts>
          <short_desc>Interacting with WKHTTPCookieStores before creating WKWebViews and WKProcessPools should affect cookies used</short_desc>
          <delta_ts>2017-05-24 15:59:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>172558</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307455</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-11 14:12:52 -0700</bug_when>
    <thetext>Interacting with WKHTTPCookieStores before creating WKWebViews and WKProcessPools should effect cookies used</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307456</commentid>
    <comment_count>1</comment_count>
      <attachid>309781</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-11 14:13:05 -0700</bug_when>
    <thetext>Created attachment 309781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307457</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-11 14:14:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/32141505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307458</commentid>
    <comment_count>3</comment_count>
      <attachid>309781</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-11 14:14:42 -0700</bug_when>
    <thetext>Comment on attachment 309781
Patch

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

Did you mean to include a patch too, or is that in another bug?

&gt; Tools/ChangeLog:3
&gt; +        Interacting with WKHTTPCookieStores before creating WKWebViews and WKProcessPools should effect cookies used

effect =&gt; affect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307460</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-11 14:16:13 -0700</bug_when>
    <thetext>I haven&apos;t written the patch yet.  This is just the failing test.  I just needed to file the radar before I&apos;ve finished the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309400</commentid>
    <comment_count>5</comment_count>
      <attachid>310325</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-16 17:20:34 -0700</bug_when>
    <thetext>Created attachment 310325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309469</commentid>
    <comment_count>6</comment_count>
      <attachid>310349</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-16 22:14:51 -0700</bug_when>
    <thetext>Created attachment 310349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309651</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-17 09:52:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/r216977</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309885</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-17 16:11:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/r217010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312429</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-05-24 15:59:47 -0700</bug_when>
    <thetext>This caused leaks in TestWebKitAPI:

Bug 172558: REGRESSION (r216977): 4 leaks introduced in new WebKit2_WKHTTPCookieStoreWithoutProcessPool_Test
&lt;https://bugs.webkit.org/show_bug.cgi?id=172558&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309781</attachid>
            <date>2017-05-11 14:13:05 -0700</date>
            <delta_ts>2017-05-16 17:20:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171987-20170511141309.patch</filename>
            <type>text/plain</type>
            <size>2839</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNjY5NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE3LTA1LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgSW50ZXJhY3Rpbmcgd2l0aCBXS0hUVFBDb29raWVTdG9yZXMg
YmVmb3JlIGNyZWF0aW5nIFdLV2ViVmlld3MgYW5kIFdLUHJvY2Vzc1Bvb2xzIHNob3VsZCBlZmZl
Y3QgY29va2llcyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzE5ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMTctMDUtMTEgIENhcmxvcyBBbGJlcnRvIExv
cGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIFdQRSByZWxlYXNl
IGJvdHMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRU
UENvb2tpZVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCShyZXZpc2lvbiAyMTY1NTcpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDQgKzE2NywzOCBAQCBURVNUKFdlYktpdDIsIFdLSFRU
UENvb2tpZVN0b3JlKQogICAgIFtnbG9iYWxDb29raWVTdG9yZSByZW1vdmVPYnNlcnZlcjpvYnNl
cnZlcjIuZ2V0KCldOwogfQogCitURVNUKFdlYktpdDIsIFdLSFRUUENvb2tpZVN0b3JlV2l0aG91
dFByb2Nlc3NQb29sKQoreworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAg
IE5TSFRUUENvb2tpZSAqY29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGll
czpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6QCIxMjcuMC4wLjEi
LCBOU0hUVFBDb29raWVEb21haW4sIEAiLyIsIE5TSFRUUENvb2tpZVBhdGgsIEAiY29va2llbmFt
ZSIsIE5TSFRUUENvb2tpZU5hbWUsIEAiY29va2lldmFsdWUzIiwgTlNIVFRQQ29va2llVmFsdWUs
IFtOU0RhdGUgZGlzdGFudEZ1dHVyZV0sIE5TSFRUUENvb2tpZUV4cGlyZXMsIG5pbF1dOworICAg
IAorICAgIFdLSFRUUENvb2tpZVN0b3JlICplcGhlbWVyYWxTdG9yZTEgPSBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXSBodHRwQ29va2llU3RvcmVdOworICAgIFtl
cGhlbWVyYWxTdG9yZTEgc2V0Q29va2llOmNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAg
ICAgICAgV0tIVFRQQ29va2llU3RvcmUgKmVwaGVtZXJhbFN0b3JlMiA9IFtbV0tXZWJzaXRlRGF0
YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdIGh0dHBDb29raWVTdG9yZV07CisgICAgICAg
IFtlcGhlbWVyYWxTdG9yZTIgZ2V0QWxsQ29va2llczpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICpjb29raWVzKSB7CisgICAgICAgICAgICBpZiAoY29va2llcy5jb3VudCkKKyAgICAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIkZBSUxFRCIpOworICAgICAgICAgICAgLy8gQVNTRVJUX0VRKGNv
b2tpZXMuY291bnQsIDB1KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRklYTUU6IExv
YWQgYSBkb2N1bWVudCBhbmQgbWFrZSBzdXJlIHRoZSBjb29raWUgaXMgYWNjZXNzaWJsZSBmcm9t
IGRvY3VtZW50LmNvb2tpZS4KKyAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAg
fV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cisg
ICAgCisgICAgV0tIVFRQQ29va2llU3RvcmUgKmRlZmF1bHRTdG9yZSA9IFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGh0dHBDb29raWVTdG9yZV07CisgICAgW2RlZmF1bHRT
dG9yZSBzZXRDb29raWU6Y29va2llIGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBbZGVm
YXVsdFN0b3JlIGdldEFsbENvb2tpZXM6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2ll
cykgeworICAgICAgICAgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDF1KTsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBMb2FkIGEgZG9jdW1lbnQgYW5kIG1ha2Ugc3VyZSB0aGUgY29va2llIGlz
IGFjY2Vzc2libGUgZnJvbSBkb2N1bWVudC5jb29raWUuCisgICAgICAgICAgICBbZGVmYXVsdFN0
b3JlIGRlbGV0ZUNvb2tpZTpjb29raWUgY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgICAg
ICAgICAgW2RlZmF1bHRTdG9yZSBnZXRBbGxDb29raWVzOl4oTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKmNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291
bnQsIDB1KTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH1dOworICAgICAgICAgICAgfV07CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310325</attachid>
            <date>2017-05-16 17:20:34 -0700</date>
            <delta_ts>2017-05-16 22:14:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171987-20170516172039.patch</filename>
            <type>text/plain</type>
            <size>32672</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA1LTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50ZXJhY3Rp
bmcgd2l0aCBXS0hUVFBDb29raWVTdG9yZXMgYmVmb3JlIGNyZWF0aW5nIFdLV2ViVmlld3MgYW5k
IFdLUHJvY2Vzc1Bvb2xzIHNob3VsZCBhZmZlY3QgY29va2llcyB1c2VkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5ODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVz
dHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29r
aWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6Q29va2llKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZTo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUhhc2g6Omhhc2gp
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSGFzaDo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYkNvcmU6OkNvb2tpZT46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYkNvcmU6OkNvb2tpZT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Q29va2llPjo6aXNEZWxldGVkVmFsdWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ29va2llLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpo
YXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpvcGVyYXRvciBOU0hUVFBDb29raWUgKik6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llOjpoYXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgVXNlIE5TSFRUUENvb2tpZSdzIGhhc2ggYW5kIGVx
dWFsaXR5IGNvbXBhcmlzb24gdG8gbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBOU0hUVFBDb29raWUg
YmVoYXZpb3IuCisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBJbXBsZW1lbnQgU3VicmVzb3VyY2UgSW50ZWdyaXR5IChTUkkpIFtQYXJ0IDIgLSBG
ZXRjaF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjQyMiw2ICsyNDIy
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKyAgICBwbGF0Zm9ybS9u
ZXR3b3JrL0Nvb2tpZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db29raWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29r
aWUuaAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA5IEpvc2VwaCBQZWNvcmFyby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IENvb2tpZSB7CiAgICAgQ29va2llKCkgeyB9CisgICAgCisgICAgQ29va2llKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBuYW1lKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQorICAgIHsgfQogCiAgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
cGF0aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNl
c3Npb24sIGNvbnN0IFN0cmluZyYgY29tbWVudCwgY29uc3QgVVJMJiBjb21tZW50VVJMLCBjb25z
dCBWZWN0b3I8dWludDE2X3Q+IHBvcnRzKQogICAgICAgICA6IG5hbWUobmFtZSkKQEAgLTU2LDM2
ICs2MSw1MyBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBDb29raWUmKTsKIAorICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb29raWUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKICNpZmRlZiBfX09CSkNfXwogICAgIFdFQkNP
UkVfRVhQT1JUIENvb2tpZShOU0hUVFBDb29raWUgKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgb3Bl
cmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRpZgogCisgICAgYm9vbCBpc051bGwo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkKKyAgICAgICAgJiYg
dmFsdWUuaXNOdWxsKCkKKyAgICAgICAgJiYgZG9tYWluLmlzTnVsbCgpCisgICAgICAgICYmIHBh
dGguaXNOdWxsKCkKKyAgICAgICAgJiYgZXhwaXJlcyA9PSAwCisgICAgICAgICYmICFodHRwT25s
eQorICAgICAgICAmJiAhc2VjdXJlCisgICAgICAgICYmICFzZXNzaW9uCisgICAgICAgICYmIGNv
bW1lbnQuaXNOdWxsKCkKKyAgICAgICAgJiYgY29tbWVudFVSTC5pc051bGwoKTsKKyAgICB9Cisg
ICAgCiAgICAgU3RyaW5nIG5hbWU7CiAgICAgU3RyaW5nIHZhbHVlOwogICAgIFN0cmluZyBkb21h
aW47CiAgICAgU3RyaW5nIHBhdGg7CiAgICAgLy8gRXhwaXJhdGlvbiBkYXRlLCBleHByZXNzZWQg
YXMgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgotICAgIGRvdWJsZSBleHBpcmVz
OwotICAgIGJvb2wgaHR0cE9ubHk7Ci0gICAgYm9vbCBzZWN1cmU7Ci0gICAgYm9vbCBzZXNzaW9u
OworICAgIGRvdWJsZSBleHBpcmVzIHsgMCB9OworICAgIGJvb2wgaHR0cE9ubHkgeyBmYWxzZSB9
OworICAgIGJvb2wgc2VjdXJlIHsgZmFsc2UgfTsKKyAgICBib29sIHNlc3Npb24geyBmYWxzZSB9
OwogICAgIFN0cmluZyBjb21tZW50OwogICAgIFVSTCBjb21tZW50VVJMOwogICAgIFZlY3Rvcjx1
aW50MTZfdD4gcG9ydHM7Ci0KIH07CiAKIHN0cnVjdCBDb29raWVIYXNoIHsKICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBDb29raWUmIGtleSkKLSAgICB7IAotICAgICAgICByZXR1cm4g
U3RyaW5nSGFzaDo6aGFzaChrZXkubmFtZSkgKyBTdHJpbmdIYXNoOjpoYXNoKGtleS5kb21haW4p
ICsgU3RyaW5nSGFzaDo6aGFzaChrZXkucGF0aCkgKyBrZXkuc2VjdXJlOworICAgIHsKKyAgICAg
ICAgcmV0dXJuIGtleS5oYXNoKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgQ29va2llJiBhLCBjb25zdCBDb29raWUmIGIpCiAgICAgewotICAgICAgICByZXR1cm4gYS5u
YW1lID09IGIubmFtZSAmJiBhLmRvbWFpbiA9PSBiLmRvbWFpbiAmJiBhLnBhdGggPT0gYi5wYXRo
ICYmIGEuc2VjdXJlID09IGIuc2VjdXJlOworICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgIH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTEzMCw0ICsxNTIsOSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3Jl
OjpDb29raWU+IHsKICAgICAgICAgdHlwZWRlZiBXZWJDb3JlOjpDb29raWVIYXNoIEhhc2g7CiAg
ICAgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNvb2tpZT4g
OiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpDb29raWU+IHsKKyAgICAgICAgc3RhdGljIFdl
YkNvcmU6OkNvb2tpZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisgICAgICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDb29raWUmIHNsb3QpIHsgc2xv
dCA9IFdlYkNvcmU6OkNvb2tpZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICAg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBzbG90
KSB7IHJldHVybiBzbG90Lm5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
b2tpZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisjaWYgIVBMQVRGT1JNKENPQ09B
KQorYm9vbCBDb29raWU6Om9wZXJhdG9yPT0oY29uc3QgQ29va2llJiBvdGhlcikgY29uc3QKK3sK
KyAgICByZXR1cm4gbmFtZSA9PSBvdGhlci5uYW1lCisgICAgICAgICYmIGRvbWFpbiA9PSBvdGhl
ci5kb21haW4KKyAgICAgICAgJiYgcGF0aCA9PSBvdGhlci5wYXRoCisgICAgICAgICYmIHNlY3Vy
ZSA9PSBvdGhlci5zZWN1cmU7Cit9CisgICAgCit1bnNpZ25lZCBDb29raWU6Omhhc2goKSBjb25z
dAoreworICAgIHJldHVybiBTdHJpbmdIYXNoOjpoYXNoKG5hbWUpICsgU3RyaW5nSGFzaDo6aGFz
aChkb21haW4pICsgU3RyaW5nSGFzaDo6aGFzaChwYXRoKSArIHNlY3VyZTsKK30KKyNlbmRpZgor
ICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0JKHJldmlzaW9uIDIx
NjU1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgQ29va2llOjpDb29raWUoTlNI
VFRQQ29va2llICpjb29raWUpCiAKIENvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBj
b25zdAogeworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIC8v
IEZJWE1FOiBleGlzdGluZyBBUElzIGRvIG5vdCBwcm92aWRlIGEgd2F5IHRvIHNldCBodHRwT25s
eSB3aXRob3V0IHBhcnNpbmcgaGVhZGVycyBmcm9tIHNjcmF0Y2guCiAKICAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpwcm9wZXJ0aWVzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhDYXBhY2l0eToxMV07CkBAIC0xMDUsNSArMTA4LDI1IEBAIENvb2tpZTo6b3BlcmF0b3IgTlNI
VFRQQ29va2llICooKSBjb25zdAogCiAgICAgcmV0dXJuIFtOU0hUVFBDb29raWUgY29va2llV2l0
aFByb3BlcnRpZXM6cHJvcGVydGllc107CiB9CisgICAgCitib29sIENvb2tpZTo6b3BlcmF0b3I9
PShjb25zdCBDb29raWUmIG90aGVyKSBjb25zdAoreworICAgIEFTU0VSVCghbmFtZS5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpKTsKKyAgICBib29sIHRoaXNOdWxsID0gaXNOdWxsKCk7CisgICAg
Ym9vbCBvdGhlck51bGwgPSBvdGhlci5pc051bGwoKTsKKyAgICBpZiAodGhpc051bGwgfHwgb3Ro
ZXJOdWxsKQorICAgICAgICByZXR1cm4gdGhpc051bGwgPT0gb3RoZXJOdWxsOworICAgIAorICAg
IE5TSFRUUENvb2tpZSAqbnNDb29raWUoKnRoaXMpOworICAgIHJldHVybiBbbnNDb29raWUgaXNF
cXVhbDpvdGhlcl07Cit9CisgICAgCit1bnNpZ25lZCBDb29raWU6Omhhc2goKSBjb25zdAorewor
ICAgIEFTU0VSVCghbmFtZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKKyAgICBBU1NFUlQo
IWlzTnVsbCgpKTsKKyAgICBOU0hUVFBDb29raWUgKm5zQ29va2llKCp0aGlzKTsKKyAgICByZXR1
cm4gbnNDb29raWUuaGFzaDsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyMTY1NTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY28KIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBuc0Nvb2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6Y29va2llcy5zaXplKCldKTsKLSAgICBmb3IgKGF1dG8gY29va2llIDogY29va2ll
cykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCiAgICAgICAgIFtuc0Nv
b2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUgKiljb29raWVdOwogCiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2NjE2KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAK
KzIwMTctMDUtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBJbnRlcmFjdGluZyB3aXRoIFdLSFRUUENvb2tpZVN0b3JlcyBiZWZvcmUgY3Jl
YXRpbmcgV0tXZWJWaWV3cyBhbmQgV0tQcm9jZXNzUG9vbHMgc2hvdWxkIGFmZmVjdCBjb29raWVz
IHVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gcHV0dGluZyBjb29raWVzIGluIGEgV0tIVFRQQ29va2llU3RvcmUgdGhhdCBoYXNuJ3QgYmVl
biBhc3NvY2lhdGVkIHdpdGggYSBXS1Byb2Nlc3NQb29sIHlldCwgdGhlcmUgaXMgbm8KKyAgICAg
ICAgTmV0d29ya1Byb2Nlc3MgaW50byB3aGljaCB0byBwdXQgdGhlIGNvb2tpZXMuICBJbiBzdWNo
IGEgY2FzZSwgd2Ugc2hvdWxkIHN0b3JlIHRoZXNlIGNvb2tpZXMgaW4gdGhlIFdlYnNpdGVEYXRh
U3RvcmUKKyAgICAgICAgdW50aWwgdGhlcmUgaXMgYSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxlZ2Fj
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6On5XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5j
cHA6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6Y29va2llcyk6CisgICAgICAgIChB
UEk6OkhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cGFnZUFkZGVkVG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBl
bmRpbmdDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWRkUGVu
ZGluZ0Nvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZVBl
bmRpbmdDb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisKIDIwMTctMDUtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBJbmNsdWRlIGhlYWRlcnMgaW4gV2ViS2l0LmgKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QaW5nSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNv
b2tpZUphci5oPgpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldEMKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5z
dXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCkpOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHtTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSwgeyB9LCB7IH0sIHsgfX0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5oPgpAQCAtMjM1LDcgKzIzNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHIKIAogICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoaXMgaGVy
ZSwgYSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IGxhdGVyIChzY2FsZXMgdG8gbXVsdGlwbGUgc2Vz
c2lvbnMpCiAgICAgaWYgKHBhcmFtZXRlcnMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAg
ICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOworICAgICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7U2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH19KTsKIAogICAgIGlmIChwYXJh
bWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CkBAIC0yODYsOSArMjg3
LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aQogI2VuZGlmCiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewot
ICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKTsKIAotICAg
IHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwor
ICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmKTsKIAogICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQ
cm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAyMTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAKICAgICBDbGVhckNhY2hlZENy
ZWRlbnRpYWxzKCkKIAotICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHN0
cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzKQogICAgIEFkZFdlYnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwogICAgIERl
c3Ryb3lTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Np
b25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
V2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogICAgIHN0YXRpYyB2b2lk
IGVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYpOwogCiAgICAgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAy
MTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTgwLDExICs4MCwxMSBAQCBSZXNvdXJj
ZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpiCiAgICAgcmV0dXJuIFdlYktpdDo6Ymxv
Y2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICBBU1NFUlQoc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKTsKIAotICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJp
bmcgYmFzZTsKQEAgLTkzLDExICs5MywxNSBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2CiAgICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1i
ZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklELCBiYXNlICsg
Jy4nICsgU3RyaW5nOjpudW1iZXIocGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsK
KworICAgIGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6
IHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpCisgICAgICAgIHNlc3Npb24tPnNldENvb2tpZShj
b29raWUpOwogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBhdXRvIG5ldHdvcmtTZXNz
aW9uID0gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShzZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5zdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7Ci0g
ICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBXVEZNb3ZlKG5ldHdvcmtT
ZXNzaW9uKSk7CisgICAgYXV0byBuZXR3b3JrU2Vzc2lvbiA9IE5ldHdvcmtTZXNzaW9uOjpjcmVh
dGUocGFyYW1ldGVycy5zZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7CisgICAgU2Vzc2lvblRyYWNr
ZXI6OnNldFNlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUobmV0d29ya1Nlc3Np
b24pKTsKICNlbmRpZgogfQogCkBAIC0xMjIsNiArMTI2LDEwIEBAIHZvaWQgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVdlYnMKIAogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCwgYmFzZSArICcuJyArIFN0cmluZzo6bnVt
YmVyKHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKSwgV1RGTW92ZSh1aVByb2Nlc3ND
b29raWVTdG9yYWdlKSk7CiAKKyAgICBhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CisgICAgZm9yIChjb25z
dCBhdXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKQorICAgICAgICBzZXNz
aW9uLT5zZXRDb29raWUoY29va2llKTsKKwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
YXV0byBuZXR3b3JrU2Vzc2lvbiA9IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUocGFyYW1ldGVycy5z
ZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7CiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24o
cGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUobmV0d29ya1Nlc3Npb24pKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmNwcAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsNyBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotCi1XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoKQorV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6On5X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycygpCiB7CiB9CiAKQEAgLTQwLDYgKzM5LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKAogICAgIGVuY29kZXIgPDwgc2Vz
c2lvbklEOwogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7
CiAgICAgZW5jb2RlciA8PCBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKKyAgICBl
bmNvZGVyIDw8IHBlbmRpbmdDb29raWVzOwogfQogCiBib29sIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTUzLDYgKzUzLDkgQEAgYm9vbCBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczo6ZGVjb2RlKAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wZW5kaW5nQ29va2llcykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zOCwxNCAr
MzksMTcgQEAgY2xhc3MgRW5jb2RlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewotICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KCk7Ci0KKyAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycygpID0gZGVmYXVsdDsKKyAgICBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKSA9
IGRlZmF1bHQ7CisgICAgfldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKCk7CisgICAgCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7CiAKICAgICBXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIFZlY3Rvcjx1aW50OF90PiB1aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcjsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY29v
a2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGU7CisgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gcGVuZGluZ0Nvb2tpZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjE2
NTU3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFu
eVBhZ2VHcm91cE1pZ2gKIAogICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlm
IChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKKyAgICAgICAgICAg
IG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKHtTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSwgeyB9LCB7IH0sIHsgfX0pLCAwKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV0d29y
a1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9u
KFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7CiAgICAgfQpAQCAtOTM3
LDcgKzkzNyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VBZGRlZFRvUHJvY2VzcygKIAog
ICAgIGF1dG8gc2Vzc2lvbklEID0gcGFnZS5zZXNzaW9uSUQoKTsKICAgICBpZiAoc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25J
RCkpOworICAgICAgICAvLyBGSVhNRTogTWVyZ2UgTmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3Jl
IGludG8gb25lIG1lc3NhZ2UgdHlwZS4KKyAgICAgICAgLy8gVGhleSBkbyBiYXNpY2FsbHkgdGhl
IHNhbWUgdGhpbmcuCisgICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKICAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9u
SUQpLCAwKTsKICAgICB9IGVsc2UgaWYgKHNlc3Npb25JRCAhPSBTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSkgewogICAgICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUocGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkucGFyYW1ldGVycygpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDEzICs1Nyw5IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpjb29raWVzKEZ1
bmN0aW9uPHYKICAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgYXV0byogcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAgICAgaWYgKCFwb29sKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgcmlnaHQgc3RvcmFnZSBzZXNzaW9uLCBi
dXQgaXQncyBjdXJyZW50bHkKLSAgICAgICAgLy8gdGhlIGJlc3Qgd2UgY2FuIGRvIGluIHRoZSBh
YnNlbmNlIG9mIGEgcHJvY2VzcyBwb29sLgotICAgICAgICBhdXRvIGFsbENvb2tpZXMgPSBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldEFs
bENvb2tpZXMoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYWxsQ29va2llcyA9IFdURk1vdmUoYWxsQ29v
a2llcyldKCkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhbGxDb29raWVzID0gZGF0YVN0b3JlLnBlbmRp
bmdDb29raWVzKCldKCkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsQ29va2ll
cyk7CiAgICAgICAgIH0pOwotCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc4LDEzICs3
NCwxMCBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llKGNvbnN0IFdlCiAgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwogICAg
IGF1dG8qIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0
aW9ucygpOwogICAgIGlmICghcG9vbCkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3Qg
bmVjZXNzYXJpbHkgdGhlIHJpZ2h0IHN0b3JhZ2Ugc2Vzc2lvbiwgYnV0IGl0J3MgY3VycmVudGx5
Ci0gICAgICAgIC8vIHRoZSBiZXN0IHdlIGNhbiBkbyBpbiB0aGUgYWJzZW5jZSBvZiBhIHByb2Nl
c3MgcG9vbC4KLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKKyAgICAgICAgZGF0YVN0b3JlLmFk
ZFBlbmRpbmdDb29raWUoY29va2llKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsKLQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05OSwxMyArOTIsMTAgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OmRlbGV0ZUNv
b2tpZShjb25zdAogICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNp
dGVEYXRhU3RvcmUoKTsKICAgICBhdXRvKiBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9y
Q29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKICAgICBpZiAoIXBvb2wpIHsKLSAgICAgICAgLy8g
RklYTUU6IFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSByaWdodCBzdG9yYWdlIHNlc3Npb24s
IGJ1dCBpdCdzIGN1cnJlbnRseQotICAgICAgICAvLyB0aGUgYmVzdCB3ZSBjYW4gZG8gaW4gdGhl
IGFic2VuY2Ugb2YgYSBwcm9jZXNzIHBvb2wuCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2llKGNvb2tpZSk7
CisgICAgICAgIGRhdGFTdG9yZS5yZW1vdmVQZW5kaW5nQ29va2llKGNvb2tpZSk7CiAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAg
fSk7Ci0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCShyZXZpc2lvbiAyMTY1NTcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWUuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJl
dmlzaW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2Myw2ICsxMjYzLDIzIEBA
IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBXZWJzaXQKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKIH0KIAorVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gV2Vic2l0ZURhdGFTdG9yZTo6
cGVuZGluZ0Nvb2tpZXMoKSBjb25zdAoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNv
b2tpZXM7CisgICAgY29weVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tpZXMsIGNvb2tpZXMpOworICAg
IHJldHVybiBjb29raWVzOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFkZFBlbmRpbmdD
b29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUpCit7CisgICAgbV9wZW5kaW5nQ29v
a2llcy5hZGQoY29va2llKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVQZW5k
aW5nQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYgY29va2llKQoreworICAgIG1fcGVuZGlu
Z0Nvb2tpZXMucmVtb3ZlKGNvb2tpZSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC0xMTgsNiAr
MTE5LDEwIEBAIHB1YmxpYzoKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0
ZXJzKCk7CiAgICAgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIGRhdGFiYXNlUHJv
Y2Vzc1BhcmFtZXRlcnMoKTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHBlbmRpbmdD
b29raWVzKCkgY29uc3Q7CisgICAgdm9pZCBhZGRQZW5kaW5nQ29va2llKGNvbnN0IFdlYkNvcmU6
OkNvb2tpZSYpOworICAgIHZvaWQgcmVtb3ZlUGVuZGluZ0Nvb2tpZShjb25zdCBXZWJDb3JlOjpD
b29raWUmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFdlYkNv
cmU6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0
aW9uLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwpAQCAtMTYwLDYgKzE2NSw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAg
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IG1fY2ZDb29raWVTdG9yYWdlOwog
I2VuZGlmCisgICAgSGFzaFNldDxXZWJDb3JlOjpDb29raWU+IG1fcGVuZGluZ0Nvb2tpZXM7CiB9
OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlz
aW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDgg
QEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgIHBhcmFtZXRl
cnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIgPSBtX3VpUHJvY2Vzc0Nvb2tpZVN0
b3JhZ2VJZGVudGlmaWVyOwogI2VuZGlmCiAKKyAgICBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29v
a2llcywgcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyk7CisKICAgICBpZiAoIWNvb2tpZUZpbGUu
aXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1l
dGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjk1OSkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTA1LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgSW50ZXJhY3Rpbmcgd2l0aCBXS0hUVFBDb29raWVTdG9yZXMgYmVmb3JlIGNyZWF0aW5n
IFdLV2ViVmlld3MgYW5kIFdLUHJvY2Vzc1Bvb2xzIHNob3VsZCBhZmZlY3QgY29va2llcyB1c2Vk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAg
ICAoLVtDb29raWVVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRo
TWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
VEVTVCk6CisKIDIwMTctMDUtMTYgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29t
PgogCiAgICAgICAgIHdlYmtpdHB5OiBTdGFydCBzZXJ2ZXJzIGJlZm9yZSBzZXR0aW5nLXVwIGZv
ciB0ZXN0aW5nCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9X
S0hUVFBDb29raWVTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQkocmV2aXNpb24gMjE2NTU3KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3Rv
cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw0ICsxNjcsNjQgQEAgVEVTVChXZWJLaXQyLCBX
S0hUVFBDb29raWVTdG9yZSkKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgcmVtb3ZlT2JzZXJ2ZXI6
b2JzZXJ2ZXIyLmdldCgpXTsKIH0KIAorc3RhdGljIGJvb2wgZmluaXNoZWQ7CisKK0BpbnRlcmZh
Y2UgQ29va2llVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBDb29raWVVSURlbGVnYXRlCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcg
KiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgRVhQRUNU
X1NUUkVRKCJjb29raWU6Y29va2llbmFtZT1jb29raWV2YWx1ZSIsIG1lc3NhZ2UuVVRGOFN0cmlu
Zyk7CisgICAgZmluaXNoZWQgPSB0cnVlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CitA
ZW5kCisKK1RFU1QoV2ViS2l0MiwgV0tIVFRQQ29va2llU3RvcmVXaXRob3V0UHJvY2Vzc1Bvb2wp
Cit7CisgICAgTlNIVFRQQ29va2llICpjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQ
cm9wZXJ0aWVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpAIjEy
Ny4wLjAuMSIsIE5TSFRUUENvb2tpZURvbWFpbiwgQCIvIiwgTlNIVFRQQ29va2llUGF0aCwgQCJj
b29raWVuYW1lIiwgTlNIVFRQQ29va2llTmFtZSwgQCJjb29raWV2YWx1ZSIsIE5TSFRUUENvb2tp
ZVZhbHVlLCBbTlNEYXRlIGRpc3RhbnRGdXR1cmVdLCBOU0hUVFBDb29raWVFeHBpcmVzLCBuaWxd
XTsKKyAgICBOU1N0cmluZyAqYWxlcnRDb29raWVIVE1MID0gQCI8c2NyaXB0PmFsZXJ0KCdjb29r
aWU6Jytkb2N1bWVudC5jb29raWUpOzwvc2NyaXB0PiI7CisgICAgCisgICAgZmluaXNoZWQgPSBm
YWxzZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmVwaGVtZXJhbFN0b3JlV2l0aENvb2tpZXMg
PSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOworICAgIFtlcGhl
bWVyYWxTdG9yZVdpdGhDb29raWVzLmh0dHBDb29raWVTdG9yZSBzZXRDb29raWU6Y29va2llIGNv
bXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmVwaGVtZXJh
bFN0b3JlV2l0aEluZGVwZW5kZW50Q29va2llU3RvcmFnZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUg
bm9uUGVyc2lzdGVudERhdGFTdG9yZV07CisgICAgICAgIFtlcGhlbWVyYWxTdG9yZVdpdGhJbmRl
cGVuZGVudENvb2tpZVN0b3JhZ2UuaHR0cENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6XihOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcykgeworICAgICAgICAgICAgQVNTRVJUX0VRKGNv
b2tpZXMuY291bnQsIDB1KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF07CisgICAgICAgICAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBl
cGhlbWVyYWxTdG9yZVdpdGhDb29raWVzOworICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3ID0g
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKKyAgICAgICAgICAgIHZpZXcuVUlEZWxl
Z2F0ZSA9IFtbQ29va2llVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisKKyAgICAgICAgICAgIFt2
aWV3IGxvYWRIVE1MU3RyaW5nOmFsZXJ0Q29va2llSFRNTCBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovLzEyNy4wLjAuMS8iXV07CisgICAgICAgIH1dOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIAorICAgIGZpbmlzaGVk
ID0gZmFsc2U7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkZWZhdWx0U3RvcmUgPSBbV0tXZWJz
aXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworICAgIFtkZWZhdWx0U3RvcmUuaHR0cENv
b2tpZVN0b3JlIHNldENvb2tpZTpjb29raWUgY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAg
IFtkZWZhdWx0U3RvcmUuaHR0cENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6XihOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqY29va2llcykgeworICAgICAgICAgICAgQVNTRVJUX0VRKGNvb2tpZXMu
Y291bnQsIDF1KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF07CisgICAgICAgICAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBkZWZhdWx0
U3RvcmU7CisgICAgICAgICAgICBXS1dlYlZpZXcgKnZpZXcgPSBbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dOworICAgICAgICAgICAgdmlldy5VSURlbGVnYXRlID0gW1tDb29raWVVSURl
bGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgW3ZpZXcgbG9h
ZEhUTUxTdHJpbmc6YWxlcnRDb29raWVIVE1MIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vMTI3LjAuMC4xLyJdXTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgCisgICAgW2RlZmF1bHRTdG9yZS5o
dHRwQ29va2llU3RvcmUgZGVsZXRlQ29va2llOmNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjpeIHsK
KyAgICAgICAgW2RlZmF1bHRTdG9yZS5odHRwQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpeKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzKSB7CisgICAgICAgICAgICBBU1NFUlRfRVEo
Y29va2llcy5jb3VudCwgMHUpOworICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgICAg
ICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsK
K30KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310349</attachid>
            <date>2017-05-16 22:14:51 -0700</date>
            <delta_ts>2017-05-17 09:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171987-20170516221457.patch</filename>
            <type>text/plain</type>
            <size>34009</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA1LTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50ZXJhY3Rp
bmcgd2l0aCBXS0hUVFBDb29raWVTdG9yZXMgYmVmb3JlIGNyZWF0aW5nIFdLV2ViVmlld3MgYW5k
IFdLUHJvY2Vzc1Bvb2xzIHNob3VsZCBhZmZlY3QgY29va2llcyB1c2VkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5ODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVz
dHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29r
aWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6Q29va2llKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZTo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUhhc2g6Omhhc2gp
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSGFzaDo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYkNvcmU6OkNvb2tpZT46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYkNvcmU6OkNvb2tpZT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Q29va2llPjo6aXNEZWxldGVkVmFsdWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ29va2llLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpo
YXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpvcGVyYXRvciBOU0hUVFBDb29raWUgKik6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llOjpoYXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgVXNlIE5TSFRUUENvb2tpZSdzIGhhc2ggYW5kIGVx
dWFsaXR5IGNvbXBhcmlzb24gdG8gbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBOU0hUVFBDb29raWUg
YmVoYXZpb3IuCisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBJbXBsZW1lbnQgU3VicmVzb3VyY2UgSW50ZWdyaXR5IChTUkkpIFtQYXJ0IDIgLSBG
ZXRjaF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjQyMiw2ICsyNDIy
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKyAgICBwbGF0Zm9ybS9u
ZXR3b3JrL0Nvb2tpZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db29raWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29r
aWUuaAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA5IEpvc2VwaCBQZWNvcmFyby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IENvb2tpZSB7CiAgICAgQ29va2llKCkgeyB9CisgICAgCisgICAgQ29va2llKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBuYW1lKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQorICAgIHsgfQogCiAgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
cGF0aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNl
c3Npb24sIGNvbnN0IFN0cmluZyYgY29tbWVudCwgY29uc3QgVVJMJiBjb21tZW50VVJMLCBjb25z
dCBWZWN0b3I8dWludDE2X3Q+IHBvcnRzKQogICAgICAgICA6IG5hbWUobmFtZSkKQEAgLTU2LDM2
ICs2MSw1MyBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBDb29raWUmKTsKIAorICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb29raWUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKICNpZmRlZiBfX09CSkNfXwogICAgIFdFQkNP
UkVfRVhQT1JUIENvb2tpZShOU0hUVFBDb29raWUgKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgb3Bl
cmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRpZgogCisgICAgYm9vbCBpc051bGwo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkKKyAgICAgICAgJiYg
dmFsdWUuaXNOdWxsKCkKKyAgICAgICAgJiYgZG9tYWluLmlzTnVsbCgpCisgICAgICAgICYmIHBh
dGguaXNOdWxsKCkKKyAgICAgICAgJiYgZXhwaXJlcyA9PSAwCisgICAgICAgICYmICFodHRwT25s
eQorICAgICAgICAmJiAhc2VjdXJlCisgICAgICAgICYmICFzZXNzaW9uCisgICAgICAgICYmIGNv
bW1lbnQuaXNOdWxsKCkKKyAgICAgICAgJiYgY29tbWVudFVSTC5pc051bGwoKTsKKyAgICB9Cisg
ICAgCiAgICAgU3RyaW5nIG5hbWU7CiAgICAgU3RyaW5nIHZhbHVlOwogICAgIFN0cmluZyBkb21h
aW47CiAgICAgU3RyaW5nIHBhdGg7CiAgICAgLy8gRXhwaXJhdGlvbiBkYXRlLCBleHByZXNzZWQg
YXMgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgotICAgIGRvdWJsZSBleHBpcmVz
OwotICAgIGJvb2wgaHR0cE9ubHk7Ci0gICAgYm9vbCBzZWN1cmU7Ci0gICAgYm9vbCBzZXNzaW9u
OworICAgIGRvdWJsZSBleHBpcmVzIHsgMCB9OworICAgIGJvb2wgaHR0cE9ubHkgeyBmYWxzZSB9
OworICAgIGJvb2wgc2VjdXJlIHsgZmFsc2UgfTsKKyAgICBib29sIHNlc3Npb24geyBmYWxzZSB9
OwogICAgIFN0cmluZyBjb21tZW50OwogICAgIFVSTCBjb21tZW50VVJMOwogICAgIFZlY3Rvcjx1
aW50MTZfdD4gcG9ydHM7Ci0KIH07CiAKIHN0cnVjdCBDb29raWVIYXNoIHsKICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBDb29raWUmIGtleSkKLSAgICB7IAotICAgICAgICByZXR1cm4g
U3RyaW5nSGFzaDo6aGFzaChrZXkubmFtZSkgKyBTdHJpbmdIYXNoOjpoYXNoKGtleS5kb21haW4p
ICsgU3RyaW5nSGFzaDo6aGFzaChrZXkucGF0aCkgKyBrZXkuc2VjdXJlOworICAgIHsKKyAgICAg
ICAgcmV0dXJuIGtleS5oYXNoKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgQ29va2llJiBhLCBjb25zdCBDb29raWUmIGIpCiAgICAgewotICAgICAgICByZXR1cm4gYS5u
YW1lID09IGIubmFtZSAmJiBhLmRvbWFpbiA9PSBiLmRvbWFpbiAmJiBhLnBhdGggPT0gYi5wYXRo
ICYmIGEuc2VjdXJlID09IGIuc2VjdXJlOworICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgIH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTEzMCw0ICsxNTIsOSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3Jl
OjpDb29raWU+IHsKICAgICAgICAgdHlwZWRlZiBXZWJDb3JlOjpDb29raWVIYXNoIEhhc2g7CiAg
ICAgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNvb2tpZT4g
OiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpDb29raWU+IHsKKyAgICAgICAgc3RhdGljIFdl
YkNvcmU6OkNvb2tpZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisgICAgICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDb29raWUmIHNsb3QpIHsgc2xv
dCA9IFdlYkNvcmU6OkNvb2tpZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICAg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBzbG90
KSB7IHJldHVybiBzbG90Lm5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
b2tpZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisjaWYgIVBMQVRGT1JNKENPQ09B
KQorYm9vbCBDb29raWU6Om9wZXJhdG9yPT0oY29uc3QgQ29va2llJiBvdGhlcikgY29uc3QKK3sK
KyAgICByZXR1cm4gbmFtZSA9PSBvdGhlci5uYW1lCisgICAgICAgICYmIGRvbWFpbiA9PSBvdGhl
ci5kb21haW4KKyAgICAgICAgJiYgcGF0aCA9PSBvdGhlci5wYXRoCisgICAgICAgICYmIHNlY3Vy
ZSA9PSBvdGhlci5zZWN1cmU7Cit9CisgICAgCit1bnNpZ25lZCBDb29raWU6Omhhc2goKSBjb25z
dAoreworICAgIHJldHVybiBTdHJpbmdIYXNoOjpoYXNoKG5hbWUpICsgU3RyaW5nSGFzaDo6aGFz
aChkb21haW4pICsgU3RyaW5nSGFzaDo6aGFzaChwYXRoKSArIHNlY3VyZTsKK30KKyNlbmRpZgor
ICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0JKHJldmlzaW9uIDIx
NjU1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgQ29va2llOjpDb29raWUoTlNI
VFRQQ29va2llICpjb29raWUpCiAKIENvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBj
b25zdAogeworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIC8v
IEZJWE1FOiBleGlzdGluZyBBUElzIGRvIG5vdCBwcm92aWRlIGEgd2F5IHRvIHNldCBodHRwT25s
eSB3aXRob3V0IHBhcnNpbmcgaGVhZGVycyBmcm9tIHNjcmF0Y2guCiAKICAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpwcm9wZXJ0aWVzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhDYXBhY2l0eToxMV07CkBAIC0xMDUsNSArMTA4LDI1IEBAIENvb2tpZTo6b3BlcmF0b3IgTlNI
VFRQQ29va2llICooKSBjb25zdAogCiAgICAgcmV0dXJuIFtOU0hUVFBDb29raWUgY29va2llV2l0
aFByb3BlcnRpZXM6cHJvcGVydGllc107CiB9CisgICAgCitib29sIENvb2tpZTo6b3BlcmF0b3I9
PShjb25zdCBDb29raWUmIG90aGVyKSBjb25zdAoreworICAgIEFTU0VSVCghbmFtZS5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpKTsKKyAgICBib29sIHRoaXNOdWxsID0gaXNOdWxsKCk7CisgICAg
Ym9vbCBvdGhlck51bGwgPSBvdGhlci5pc051bGwoKTsKKyAgICBpZiAodGhpc051bGwgfHwgb3Ro
ZXJOdWxsKQorICAgICAgICByZXR1cm4gdGhpc051bGwgPT0gb3RoZXJOdWxsOworICAgIAorICAg
IE5TSFRUUENvb2tpZSAqbnNDb29raWUoKnRoaXMpOworICAgIHJldHVybiBbbnNDb29raWUgaXNF
cXVhbDpvdGhlcl07Cit9CisgICAgCit1bnNpZ25lZCBDb29raWU6Omhhc2goKSBjb25zdAorewor
ICAgIEFTU0VSVCghbmFtZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKKyAgICBBU1NFUlQo
IWlzTnVsbCgpKTsKKyAgICBOU0hUVFBDb29raWUgKm5zQ29va2llKCp0aGlzKTsKKyAgICByZXR1
cm4gbnNDb29raWUuaGFzaDsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyMTY1NTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY28KIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBuc0Nvb2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6Y29va2llcy5zaXplKCldKTsKLSAgICBmb3IgKGF1dG8gY29va2llIDogY29va2ll
cykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCiAgICAgICAgIFtuc0Nv
b2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUgKiljb29raWVdOwogCiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2NjE2KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAK
KzIwMTctMDUtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBJbnRlcmFjdGluZyB3aXRoIFdLSFRUUENvb2tpZVN0b3JlcyBiZWZvcmUgY3Jl
YXRpbmcgV0tXZWJWaWV3cyBhbmQgV0tQcm9jZXNzUG9vbHMgc2hvdWxkIGFmZmVjdCBjb29raWVz
IHVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gcHV0dGluZyBjb29raWVzIGluIGEgV0tIVFRQQ29va2llU3RvcmUgdGhhdCBoYXNuJ3QgYmVl
biBhc3NvY2lhdGVkIHdpdGggYSBXS1Byb2Nlc3NQb29sIHlldCwgdGhlcmUgaXMgbm8KKyAgICAg
ICAgTmV0d29ya1Byb2Nlc3MgaW50byB3aGljaCB0byBwdXQgdGhlIGNvb2tpZXMuICBJbiBzdWNo
IGEgY2FzZSwgd2Ugc2hvdWxkIHN0b3JlIHRoZXNlIGNvb2tpZXMgaW4gdGhlIFdlYnNpdGVEYXRh
U3RvcmUKKyAgICAgICAgdW50aWwgdGhlcmUgaXMgYSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxlZ2Fj
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6On5XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5j
cHA6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6Y29va2llcyk6CisgICAgICAgIChB
UEk6OkhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cGFnZUFkZGVkVG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBl
bmRpbmdDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWRkUGVu
ZGluZ0Nvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZVBl
bmRpbmdDb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisKIDIwMTctMDUtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBJbmNsdWRlIGhlYWRlcnMgaW4gV2ViS2l0LmgKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QaW5nSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNv
b2tpZUphci5oPgpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldEMKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5z
dXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCkpOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHtTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSwgeyB9LCB7IH0sIHsgfX0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5oPgpAQCAtMjM1LDcgKzIzNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHIKIAogICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoaXMgaGVy
ZSwgYSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IGxhdGVyIChzY2FsZXMgdG8gbXVsdGlwbGUgc2Vz
c2lvbnMpCiAgICAgaWYgKHBhcmFtZXRlcnMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAg
ICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOworICAgICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7U2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH19KTsKIAogICAgIGlmIChwYXJh
bWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CkBAIC0yODYsOSArMjg3
LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aQogI2VuZGlmCiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewot
ICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKTsKIAotICAg
IHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwor
ICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmKTsKIAogICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQ
cm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAyMTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAKICAgICBDbGVhckNhY2hlZENy
ZWRlbnRpYWxzKCkKIAotICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHN0
cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzKQogICAgIEFkZFdlYnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwogICAgIERl
c3Ryb3lTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Np
b25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
V2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogICAgIHN0YXRpYyB2b2lk
IGVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYpOwogCiAgICAgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAy
MTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTgwLDExICs4MCwxMSBAQCBSZXNvdXJj
ZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpiCiAgICAgcmV0dXJuIFdlYktpdDo6Ymxv
Y2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICBBU1NFUlQoc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKTsKIAotICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJp
bmcgYmFzZTsKQEAgLTkzLDExICs5MywxNSBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2CiAgICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1i
ZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklELCBiYXNlICsg
Jy4nICsgU3RyaW5nOjpudW1iZXIocGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsK
KworICAgIGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6
IHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpCisgICAgICAgIHNlc3Npb24tPnNldENvb2tpZShj
b29raWUpOwogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBhdXRvIG5ldHdvcmtTZXNz
aW9uID0gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShzZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5zdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7Ci0g
ICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBXVEZNb3ZlKG5ldHdvcmtT
ZXNzaW9uKSk7CisgICAgYXV0byBuZXR3b3JrU2Vzc2lvbiA9IE5ldHdvcmtTZXNzaW9uOjpjcmVh
dGUocGFyYW1ldGVycy5zZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7CisgICAgU2Vzc2lvblRyYWNr
ZXI6OnNldFNlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUobmV0d29ya1Nlc3Np
b24pKTsKICNlbmRpZgogfQogCkBAIC0xMjIsNiArMTI2LDEwIEBAIHZvaWQgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVdlYnMKIAogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCwgYmFzZSArICcuJyArIFN0cmluZzo6bnVt
YmVyKHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKSwgV1RGTW92ZSh1aVByb2Nlc3ND
b29raWVTdG9yYWdlKSk7CiAKKyAgICBhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CisgICAgZm9yIChjb25z
dCBhdXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKQorICAgICAgICBzZXNz
aW9uLT5zZXRDb29raWUoY29va2llKTsKKwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
YXV0byBuZXR3b3JrU2Vzc2lvbiA9IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUocGFyYW1ldGVycy5z
ZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7CiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24o
cGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUobmV0d29ya1Nlc3Npb24pKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRT
b3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAJKHJldmlzaW9uIDIxNjU1NykKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRT
b3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTUgKzQ4LDE1IEBAIGJvb2wgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmlzVmFsaWQoKSAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKyAgICBBU1NFUlQo
cGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAKLSAgICBpZiAoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Np
b25JRCgpKSk7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3
b3JrU2Vzc2lvbjo6Y3JlYXRlKHNlc3Npb25JRCkpOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCwgU3Ry
aW5nOjpudW1iZXIocGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKKyAgICBTZXNz
aW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCwgTmV0d29ya1Nlc3Np
b246OmNyZWF0ZShwYXJhbWV0ZXJzLnNlc3Npb25JRCkpOwogfQogCiB2b2lkIFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyYmKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw4ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0KLVdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycygpCitXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6fldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKCkKIHsK
IH0KIApAQCAtNDAsNiArMzksNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpl
bmNvZGUoCiAgICAgZW5jb2RlciA8PCBzZXNzaW9uSUQ7CiAgICAgZW5jb2RlciA8PCB1aVByb2Nl
c3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IGNvb2tpZVN0b3JhZ2VQ
YXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgcGVuZGluZ0Nvb2tpZXM7CiB9CiAK
IGJvb2wgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNTMsNiAr
NTMsOSBAQCBib29sIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM4LDE0ICszOSwxNyBAQCBjbGFzcyBFbmNvZGVyOwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7Ci0gICAg
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoKTsKLQorICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzKCkgPSBkZWZhdWx0OworICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpID0gZGVmYXVsdDsKKyAgICB+V2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMoKTsKKyAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmKTsKIAogICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQ7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBwZW5kaW5nQ29va2llczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzIsNyArNTcyLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaAogCiAgICAgaWYgKG5ldHdv
cmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAg
ICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSksIDApOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oe1Nlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9fSksIDApOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6RGVzdHJveVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpLCAwKTsKICAgICB9CkBAIC05MzcsNyArOTM3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGFnZUFkZGVkVG9Qcm9jZXNzKAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYWdlLnNlc3Np
b25JRCgpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBzZW5k
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKSk7CisgICAgICAgIC8vIEZJWE1FOiBNZXJnZSBO
ZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiBhbmQgTmV0d29ya1By
b2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUgaW50byBvbmUgbWVzc2FnZSB0eXBlLgorICAgICAg
ICAvLyBUaGV5IGRvIGJhc2ljYWxseSB0aGUgc2FtZSB0aGluZy4KKyAgICAgICAgc2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSkpOwogICAg
ICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCksIDApOwogICAgIH0gZWxzZSBpZiAoc2Vzc2lv
bklEICE9IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7CiAgICAgICAgIHNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFT
dG9yZShwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAJ
KHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRU
UENvb2tpZVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3LDkgQEAgdm9pZCBI
VFRQQ29va2llU3RvcmU6OmNvb2tpZXMoRnVuY3Rpb248dgogICAgIGF1dG8mIGRhdGFTdG9yZSA9
IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICBhdXRvKiBwb29sID0g
ZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKICAgICBp
ZiAoIXBvb2wpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRo
ZSByaWdodCBzdG9yYWdlIHNlc3Npb24sIGJ1dCBpdCdzIGN1cnJlbnRseQotICAgICAgICAvLyB0
aGUgYmVzdCB3ZSBjYW4gZG8gaW4gdGhlIGFic2VuY2Ugb2YgYSBwcm9jZXNzIHBvb2wuCi0gICAg
ICAgIGF1dG8gYWxsQ29va2llcyA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0QWxsQ29va2llcygpOwotICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBh
bGxDb29raWVzID0gV1RGTW92ZShhbGxDb29raWVzKV0oKSB7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGFs
bENvb2tpZXMgPSBkYXRhU3RvcmUucGVuZGluZ0Nvb2tpZXMoKV0oKSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhbGxDb29raWVzKTsKICAgICAgICAgfSk7Ci0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzgsMTMgKzc0LDEwIEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpz
ZXRDb29raWUoY29uc3QgV2UKICAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9y
ZS53ZWJzaXRlRGF0YVN0b3JlKCk7CiAgICAgYXV0byogcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNz
UG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAgICAgaWYgKCFwb29sKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgcmlnaHQgc3RvcmFnZSBz
ZXNzaW9uLCBidXQgaXQncyBjdXJyZW50bHkKLSAgICAgICAgLy8gdGhlIGJlc3Qgd2UgY2FuIGRv
IGluIHRoZSBhYnNlbmNlIG9mIGEgcHJvY2VzcyBwb29sLgotICAgICAgICBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29r
aWUpOworICAgICAgICBkYXRhU3RvcmUuYWRkUGVuZGluZ0Nvb2tpZShjb29raWUpOwogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAg
IH0pOwotCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk5LDEzICs5MiwxMCBAQCB2b2lk
IEhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQ29va2llKGNvbnN0CiAgICAgYXV0byYgZGF0YVN0b3Jl
ID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwogICAgIGF1dG8qIHBvb2wg
PSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwogICAg
IGlmICghcG9vbCkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkg
dGhlIHJpZ2h0IHN0b3JhZ2Ugc2Vzc2lvbiwgYnV0IGl0J3MgY3VycmVudGx5Ci0gICAgICAgIC8v
IHRoZSBiZXN0IHdlIGNhbiBkbyBpbiB0aGUgYWJzZW5jZSBvZiBhIHByb2Nlc3MgcG9vbC4KLSAg
ICAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5kZWxldGVDb29raWUoY29va2llKTsKKyAgICAgICAgZGF0YVN0b3JlLnJlbW92ZVBlbmRp
bmdDb29raWUoY29va2llKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsKLQogICAgICAgICByZXR1cm47CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmgJKHJldmlzaW9uIDIxNjU1NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkhUVFBDb29raWVBY2NlcHRQb2xp
Y3kuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjYzLDYgKzEyNjMsMjMgQEAgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIFdlYnNpdAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCitWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBXZWJzaXRlRGF0YVN0b3JlOjpwZW5kaW5nQ29va2llcygpIGNvbnN0Cit7CisgICAg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llczsKKyAgICBjb3B5VG9WZWN0b3IobV9wZW5k
aW5nQ29va2llcywgY29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXM7Cit9CisKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6YWRkUGVuZGluZ0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNv
b2tpZSkKK3sKKyAgICBtX3BlbmRpbmdDb29raWVzLmFkZChjb29raWUpOworfQorCit2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZVBlbmRpbmdDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2ll
JiBjb29raWUpCit7CisgICAgbV9wZW5kaW5nQ29va2llcy5yZW1vdmUoY29va2llKTsKK30KKwog
I2lmICFQTEFURk9STShDT0NPQSkKIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAy
MTY1NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIldlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KQEAgLTExOCw2ICsxMTksMTAgQEAgcHVibGljOgogICAgIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMoKTsKICAgICBEYXRhYmFzZVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgZGF0YWJhc2VQcm9jZXNzUGFyYW1ldGVycygpOwogCisgICAgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gcGVuZGluZ0Nvb2tpZXMoKSBjb25zdDsKKyAgICB2b2lkIGFkZFBl
bmRpbmdDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7CisgICAgdm9pZCByZW1vdmVQZW5k
aW5nQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBX
ZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24sIFdlYkNvcmU6OlNlc3Npb25JRCk7CkBAIC0x
NjAsNiArMTY1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdD4gbV91aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gbV9jZkNvb2tpZVN0b3JhZ2U7CiAjZW5kaWYKKyAgICBIYXNoU2V0PFdlYkNvcmU6OkNv
b2tpZT4gbV9wZW5kaW5nQ29va2llczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjE2NTU3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBX
ZWJzaXRlRGF0YVN0CiAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRp
ZmllciA9IG1fdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAjZW5kaWYKIAorICAg
IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzLCBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVz
KTsKKwogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3JlOjpkaXJlY3Rv
cnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjE2OTU5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDUtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRlcmFjdGluZyB3aXRoIFdLSFRUUENv
b2tpZVN0b3JlcyBiZWZvcmUgY3JlYXRpbmcgV0tXZWJWaWV3cyBhbmQgV0tQcm9jZXNzUG9vbHMg
c2hvdWxkIGFmZmVjdCBjb29raWVzIHVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MTk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW06CisgICAgICAgICgtW0Nvb2tpZVVJRGVsZWdhdGUgd2ViVmlldzpy
dW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wNS0xNiAgSm9uYXRoYW4g
QmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IFN0YXJ0IHNl
cnZlcnMgYmVmb3JlIHNldHRpbmctdXAgZm9yIHRlc3RpbmcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tCShyZXZpc2lvbiAyMTY1NTcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDQg
KzE2Nyw2NCBAQCBURVNUKFdlYktpdDIsIFdLSFRUUENvb2tpZVN0b3JlKQogICAgIFtnbG9iYWxD
b29raWVTdG9yZSByZW1vdmVPYnNlcnZlcjpvYnNlcnZlcjIuZ2V0KCldOwogfQogCitzdGF0aWMg
Ym9vbCBmaW5pc2hlZDsKKworQGludGVyZmFjZSBDb29raWVVSURlbGVnYXRlIDogTlNPYmplY3Qg
PFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENvb2tpZVVJRGVsZWdhdGUK
Ky0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tG
cmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfU1RSRVEoImNvb2tpZTpjb29raWVuYW1lPWNvb2tp
ZXZhbHVlIiwgbWVzc2FnZS5VVEY4U3RyaW5nKTsKKyAgICBmaW5pc2hlZCA9IHRydWU7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKK30KK0BlbmQKKworVEVTVChXZWJLaXQyLCBXS0hUVFBDb29r
aWVTdG9yZVdpdGhvdXRQcm9jZXNzUG9vbCkKK3sKKyAgICBOU0hUVFBDb29raWUgKmNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6W05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdHNBbmRLZXlzOkAiMTI3LjAuMC4xIiwgTlNIVFRQQ29va2llRG9tYWluLCBA
Ii8iLCBOU0hUVFBDb29raWVQYXRoLCBAImNvb2tpZW5hbWUiLCBOU0hUVFBDb29raWVOYW1lLCBA
ImNvb2tpZXZhbHVlIiwgTlNIVFRQQ29va2llVmFsdWUsIFtOU0RhdGUgZGlzdGFudEZ1dHVyZV0s
IE5TSFRUUENvb2tpZUV4cGlyZXMsIG5pbF1dOworICAgIE5TU3RyaW5nICphbGVydENvb2tpZUhU
TUwgPSBAIjxzY3JpcHQ+YWxlcnQoJ2Nvb2tpZTonK2RvY3VtZW50LmNvb2tpZSk7PC9zY3JpcHQ+
IjsKKyAgICAKKyAgICBmaW5pc2hlZCA9IGZhbHNlOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAq
ZXBoZW1lcmFsU3RvcmVXaXRoQ29va2llcyA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lz
dGVudERhdGFTdG9yZV07CisgICAgW2VwaGVtZXJhbFN0b3JlV2l0aENvb2tpZXMuaHR0cENvb2tp
ZVN0b3JlIHNldENvb2tpZTpjb29raWUgY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIFdL
V2Vic2l0ZURhdGFTdG9yZSAqZXBoZW1lcmFsU3RvcmVXaXRoSW5kZXBlbmRlbnRDb29raWVTdG9y
YWdlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICAg
ICAgW2VwaGVtZXJhbFN0b3JlV2l0aEluZGVwZW5kZW50Q29va2llU3RvcmFnZS5odHRwQ29va2ll
U3RvcmUgZ2V0QWxsQ29va2llczpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzKSB7
CisgICAgICAgICAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMHUpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IGVwaGVtZXJhbFN0b3JlV2l0aENvb2tpZXM7CisgICAg
ICAgICAgICBXS1dlYlZpZXcgKnZpZXcgPSBbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
OworICAgICAgICAgICAgdmlldy5VSURlbGVnYXRlID0gW1tDb29raWVVSURlbGVnYXRlIGFsbG9j
XSBpbml0XTsKKworICAgICAgICAgICAgW3ZpZXcgbG9hZEhUTUxTdHJpbmc6YWxlcnRDb29raWVI
VE1MIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vMTI3LjAuMC4xLyJdXTsK
KyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5p
c2hlZCk7CisgICAgCisgICAgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBXS1dlYnNpdGVEYXRhU3Rv
cmUgKmRlZmF1bHRTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07
CisgICAgW2RlZmF1bHRTdG9yZS5odHRwQ29va2llU3RvcmUgc2V0Q29va2llOmNvb2tpZSBjb21w
bGV0aW9uSGFuZGxlcjpeIHsKKyAgICAgICAgW2RlZmF1bHRTdG9yZS5odHRwQ29va2llU3RvcmUg
Z2V0QWxsQ29va2llczpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzKSB7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMXUpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSA9IGRlZmF1bHRTdG9yZTsKKyAgICAgICAgICAgIFdLV2ViVmlldyAq
dmlldyA9IFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgICAgICAgICB2aWV3
LlVJRGVsZWdhdGUgPSBbW0Nvb2tpZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBbdmlldyBsb2FkSFRNTFN0cmluZzphbGVydENvb2tpZUhUTUwgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly8xMjcuMC4wLjEvIl1dOworICAgICAg
ICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsK
KyAgICAKKyAgICBbZGVmYXVsdFN0b3JlLmh0dHBDb29raWVTdG9yZSBkZWxldGVDb29raWU6Y29v
a2llIGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBbZGVmYXVsdFN0b3JlLmh0dHBDb29r
aWVTdG9yZSBnZXRBbGxDb29raWVzOl4oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tpZXMp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7CisgICAgICAgICAg
ICBmaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworfQogI2VuZGlmCg==
</data>
<flag name="review"
          id="331430"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>