<?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>145748</bug_id>
          
          <creation_ts>2015-06-07 17:42:19 -0700</creation_ts>
          <short_desc>WebContent crash in WebCore::Page::sessionID() const + 0 (Page.cpp:1660)</short_desc>
          <delta_ts>2015-06-24 16:59:07 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=145422</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=146299</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1100264</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-07 17:42:19 -0700</bug_when>
    <thetext>WebContent crash in WebCore::Page::sessionID() const + 0 (Page.cpp:1660):
0   WebCore                       	0x0000000101a9d368 WebCore::Page::sessionID() const + 0
1   WebCore                       	0x00000001010b2d18 WebCore::DocumentLoader::stopLoading() + 452
2   WebCore                       	0x00000001010c26b8 WebCore::DocumentLoader::detachFromFrame() + 60
3   WebCore                       	0x0000000101149948 WebCore::FrameLoader::detachViewsAndDocumentLoader() + 84
4   WebCore                       	0x0000000101142e0c WebCore::CachedFrame::destroy() + 56
5   WebCore                       	0x0000000101142e3c WebCore::CachedFrame::destroy() + 104
6   WebCore                       	0x0000000101142da4 WebCore::CachedPage::~CachedPage() + 24
7   WebCore                       	0x0000000101a9e478 WebCore::PageCache::prune(WebCore::PruningReason) + 72
8   WebCore                       	0x0000000101a9e41c WebCore::PageCache::pruneToSizeNow(unsigned int, WebCore::PruningReason) + 28

This happens because we are not supposed to exercise this code path when destroying a PageCache entry. Pages in the PageCache are not supposed to have DocumentLoaders that are loading. r185017 made sure we don&apos;t insert into the PageCache pages that are still loading. However, nothing currently prevents content from starting new loads in their &apos;pagehide&apos; event handlers, *after* being inserted in the PageCache.

Radar: &lt;rdar://problem/21226577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100306</commentid>
    <comment_count>1</comment_count>
      <attachid>254474</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-07 21:58:27 -0700</bug_when>
    <thetext>Created attachment 254474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100452</commentid>
    <comment_count>2</comment_count>
      <attachid>254474</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-06-08 14:21:02 -0700</bug_when>
    <thetext>Comment on attachment 254474
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        We would sometimes crash when pruning the PageCache because it was
&gt; +        possible for frames to still be loading while in the PageCache and
&gt; +        we would try to stop the load when the CachedFrame. This code path

when the CachedFrame... what? Is constructed?

&gt; Source/WebCore/page/Page.h:160
&gt; +    enum DismissalType {
&gt; +        NoDismissal,
&gt; +        BeforeUnloadDismissal,
&gt; +        PageHideDismissal,
&gt; +        UnloadDismissal
&gt; +    };

enum class, please!  With updated names:

enum class DismissalType {
  None,
  BeforeUnload,
  PageHide,
  Unload
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100488</commentid>
    <comment_count>3</comment_count>
      <attachid>254518</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-08 15:56:39 -0700</bug_when>
    <thetext>Created attachment 254518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100505</commentid>
    <comment_count>4</comment_count>
      <attachid>254518</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-08 16:45:00 -0700</bug_when>
    <thetext>Comment on attachment 254518
Patch

Clearing flags on attachment: 254518

Committed r185337: &lt;http://trac.webkit.org/changeset/185337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100506</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-08 16:45:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254474</attachid>
            <date>2015-06-07 21:58:27 -0700</date>
            <delta_ts>2015-06-08 15:56:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145748-20150607215802.patch</filename>
            <type>text/plain</type>
            <size>32300</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmNmRhNzNjNTU3N2Nk
ZGQxYzQyNGEzMWNkNGMwYjZlYjMxNDdkMC4uM2Y2ZjM5OWU1MGI5MjcwY2Q3YmZhZTBiZWFkOTg4
Nzk0NDE3OTIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE1LTA2LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29udGVudCBjcmFzaCBp
biBXZWJDb3JlOjpQYWdlOjpzZXNzaW9uSUQoKSBjb25zdCArIDAgKFBhZ2UuY3BwOjE2NjApCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NDgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIxMjI2NTc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdvdWxkIHNvbWV0aW1lcyBjcmFzaCB3aGVuIHBy
dW5pbmcgdGhlIFBhZ2VDYWNoZSBiZWNhdXNlIGl0IHdhcworICAgICAgICBwb3NzaWJsZSBmb3Ig
ZnJhbWVzIHRvIHN0aWxsIGJlIGxvYWRpbmcgd2hpbGUgaW4gdGhlIFBhZ2VDYWNoZSBhbmQKKyAg
ICAgICAgd2Ugd291bGQgdHJ5IHRvIHN0b3AgdGhlIGxvYWQgd2hlbiB0aGUgQ2FjaGVkRnJhbWUu
IFRoaXMgY29kZSBwYXRoCisgICAgICAgIHdhcyBub3Qgc3VwcG9zZWQgdG8gYmUgZXhlcmNpc2Vk
IGFzIHdlIHdlcmUgbm90IHN1cHBvc2VkIHRvIGhhdmUKKyAgICAgICAgcGFnZXMgc3RpbGwgbG9h
ZGluZyBpbnNpZGUgdGhlIFBhZ2VDYWNoZS4KKworICAgICAgICByMTg1MDE3IG1hZGUgc3VyZSB3
ZSBkb24ndCBpbnNlcnQgaW50byB0aGUgUGFnZUNhY2hlIHBhZ2VzIHRoYXQgYXJlCisgICAgICAg
IHN0aWxsIGxvYWRpbmcuIEhvd2V2ZXIsIG5vdGhpbmcgd2FzIHByZXZlbnRpbmcgY29udGVudCBm
cm9tIHN0YXJ0aW5nCisgICAgICAgIG5ldyBsb2FkcyBpbiB0aGVpciAncGFnZWhpZGUnIGV2ZW50
IGhhbmRsZXJzLCAqYWZ0ZXIqIHRoZSBkZWNpc2lvbgorICAgICAgICB0byBwdXQgdGhlIHBhZ2Ug
aW4gdGhlIFBhZ2VDYWNoZSB3YXMgbWFkZS4KKworICAgICAgICBUaGlzIHBhdGNoIHByZXZlbnRz
IGNvbnRlbnQgZnJvbSBzdGFydGluZyBsb2FkcyBmcm9tIGEgJ3BhZ2VoaWRlJworICAgICAgICBl
dmVudCBoYW5kbGVyIHNvIHRoYXQgd2UgY2FuIG5vIGxvbmdlciBoYXZlIGNvbnRlbnQgdGhhdCBp
cyBsb2FkaW5nCisgICAgICAgIGluc2lkZSB0aGUgUGFnZUNhY2hlLiAncGluZycgaW1hZ2UgbG9h
ZHMgc3RpbGwgZ28gdGhyb3VnaCB0aG91Z2ggYXMKKyAgICAgICAgdGhlc2UgYXJlIHNwZWNpYWxs
eSBoYW5kbGVkIGFuZCB1c2UgUGluZ0xvYWRlcnMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVz
dHMvbmF2aWdhdGlvbi9pbWFnZS1sb2FkLWluLXBhZ2VoaWRlLWhhbmRsZXIuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBhZ2VoaWRlLWhhbmRsZXIt
c3RhcnRzLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1
YmZyYW1lLXBhZ2VoaWRlLWhhbmRsZXItc3RhcnRzLWxvYWQyLmh0bWwKKworICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJh
bWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6aGFuZGxlQmVmb3JlVW5sb2FkRXZlbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnBhZ2VEaXNtaXNzYWxF
dmVudEJlaW5nRGlzcGF0Y2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UGFn
ZURpc21pc3NhbEV2ZW50VHlwZTo6UGFnZURpc21pc3NhbEV2ZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6UGFnZURpc21pc3NhbEV2ZW50VHlwZTo6b3BlcmF0b3IgUGFn
ZTo6RGlzbWlzc2FsVHlwZSk6CisKKyAgICAgICAgQWRkIHdyYXBwZXIgY2xhc3MgZm9yIG1fcGFn
ZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkIG1lbWJlciB0eXBlLgorICAgICAgICBUaGUg
d3JhcHBlciB0YWtlcyBjYXJlIG9mIHVwZGF0aW5nIHRoZSBtX2Rpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkCisgICAgICAgIG1lbWJlciBvbiB0aGUgUGFnZSBldmVyeSB0aW1lIHRoZSBtZW1i
ZXIgb24gRnJhbWVMb2FkZXIgaXMgdXBkYXRlZC4gV2UKKyAgICAgICAgbm93IGNhY2hlIHRoaXMg
aW5mb3JtYXRpb24gb24gdGhlIFBhZ2Ugc28gdGhhdCBjbGllbnRzIGNhbiBjaGVhcGx5CisgICAg
ICAgIHF1ZXJ5IGlmIGEgZGlzbWlzc2FsIGV2ZW50IGlzIGJlaW5nIGRpc3BhdGNoZWQgaW4gYW55
IG9mIHRoZSBQYWdlJ3MKKyAgICAgICAgZnJhbWUsIHdpdGhvdXQgaGF2aW5nIHRvIHRyYXZlcnNl
IHRoZSBmcmFtZSB0cmVlLgorCisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhZ2VJc0JlaW5nRGlzbWlzc2VkKToKKworICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6bG9hZCk6CisKKyAgICAgICAgQWJvcnQgdGhlIGxvYWQgZWFybHkgaWYgd2UgYXJlIGN1
cnJlbnRseSBkaXNwYXRjaGluZyBhICdwYWdlaGlkZScKKyAgICAgICAgZXZlbnQuIFdlIGRvbid0
IGFsbG93IG5ldyBsb2FkcyBhdCBzdWNoIHBvaW50IGJlY2F1c2Ugd2UndmUgYWxyZWFkeQorICAg
ICAgICBtYWRlIHRoZSBkZWNpc2lvbiB0byBhZGQgdGhlIFBhZ2UgdG8gdGhlIFBhZ2VDYWNoZS4K
KworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKworICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuTW9k
YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzZXRUb29sYmFyc1Zpc2li
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp0b29sYmFyc1Zpc2libGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpydW5KYXZhU2NyaXB0Q29uZmly
bSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bkphdmFTY3JpcHRQcm9t
cHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2dOb3cpOgorCisgICAg
ICAgIERyb3AgQ2hyb21lQ2xpZW50OjpzaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VEaXNt
aXNzYWwoKSBhbmQgY29kZQorICAgICAgICB1c2luZyBpdCBhcyBpdCBpcyB1bnVzZWQgYW5kIEkg
ZGlkIG5vdCB0aGluayBpdCB3YXMgd29ydGggdXBkYXRpbmcKKyAgICAgICAgdGhpcyBjb2RlLgor
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkaXNtaXNz
YWxFdmVudEJlaW5nRGlzcGF0Y2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXREaXNt
aXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCk6CisKKyAgICAgICAgQWRkIGEgbV9kaXNtaXNzYWxF
dmVudEJlaW5nRGlzcGF0Y2hlZCBtZW1iZXIgdG8gdGhlIFBhZ2Ugc28gdGhhdCB3ZSBjYW4KKyAg
ICAgICAgZWFzaWx5IHF1ZXJ5IGlmIGEgZGlzbWlzc2FsIGV2ZW50IGlzIGJlaW5nIGRpc3BhdGNo
ZWQgaW4gYW55IG9mIHRoZQorICAgICAgICBmcmFtZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHRyYXZl
cnNlIHRoZSBmcmFtZSB0cmVlLiBJIHN1c3BlY3QgbW9yZSBjYWxsCisgICAgICAgIHNpdGVzIG9m
IEZyYW1lTG9hZGVyOjpwYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSBtYXkgYWN0
dWFsbHkKKyAgICAgICAgd2FudCB0aGlzIGJ1dCBJIGRpZCBub3QgbWFrZSBzdWNoIGNoYW5nZSBp
biB0aGlzIHBhdGNoLiBJdCBpcyBpbXBvcnRhbnQKKyAgICAgICAgdG8gY2hlY2sgYWxsIHRoZSBm
cmFtZXMgYW5kIG5vdCBzaW1wbHkgdGhlIGN1cnJlbnQgb25lIGJlY2F1c2UgYSBmcmFtZSdzCisg
ICAgICAgIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIgbWF5IHRyaWdnZXIgYSBsb2FkIGluIGFub3Ro
ZXIgZnJhbWUuCisKIDIwMTUtMDYtMDUgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFy
aXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9u
LmZyPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVTdHJlYW0gc2hvdWxkIHN0b3Jl
IGNhbGxiYWNrcyBhcyBhIERlcXVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBjOWM1OTEzMzRjYmNkNjQyZjhkYWU4NjZhNjVjYjhiODE2YTQwMmE0Li5hNTQxZmI2NTY4
YzMzYzJiNTRkODRkMGRkOWI3ZDNhZDE1ZTY3Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTg0LDcgKzg0LDYgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZVRo
cm90dGxlci5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKQEAgLTIyNiw3ICsy
MjUsNyBAQCBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUmIGZyYW1lLCBGcmFtZUxvYWRl
ckNsaWVudCYgY2xpZW50KQogICAgICwgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9u
KGZhbHNlKQogICAgICwgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSh0cnVlKQogICAgICwgbV93YXNV
bmxvYWRFdmVudEVtaXR0ZWQoZmFsc2UpCi0gICAgLCBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5n
RGlzcGF0Y2hlZChOb0Rpc21pc3NhbCkKKyAgICAsIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkKGZyYW1lKQogICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQogICAgICwgbV9uZWVk
c0NsZWFyKGZhbHNlKQogICAgICwgbV9jaGVja1RpbWVyKCp0aGlzLCAmRnJhbWVMb2FkZXI6OmNo
ZWNrVGltZXJGaXJlZCkKQEAgLTQyNSw5ICs0MjQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9w
TG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSkKICAgICAgICAgICAg
ICAgICBFbGVtZW50KiBjdXJyZW50Rm9jdXNlZEVsZW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkt
PmZvY3VzZWRFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGb2N1c2VkRWxl
bWVudCAmJiBjdXJyZW50Rm9jdXNlZEVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCkpCiAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRGb2N1c2VkRWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKS0+ZW5k
RWRpdGluZygpOwotICAgICAgICAgICAgICAgIGlmIChtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5n
RGlzcGF0Y2hlZCA9PSBOb0Rpc21pc3NhbCkgeworICAgICAgICAgICAgICAgIGlmIChtX3BhZ2VE
aXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9PSBQYWdlOjpOb0Rpc21pc3NhbCkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAodW5sb2FkRXZlbnRQb2xpY3kgPT0gVW5sb2FkRXZlbnRQb2xp
Y3lVbmxvYWRBbmRQYWdlSGlkZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlRGlz
bWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPSBQYWdlSGlkZURpc21pc3NhbDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFn
ZTo6UGFnZUhpZGVEaXNtaXNzYWw7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkucGFnZWhpZGVFdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLT5p
blBhZ2VDYWNoZSgpKSwgbV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAg
fQogCkBAIC00NDAsNyArNDM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5s
b2FkRXZlbnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3kpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3aGlsZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQsIHNvIHByb3RlY3QgaXQgdG8gcHJldmVu
dCB3cml0aW5nIHRoZSBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWUgaW50byBm
cmVlZCBtZW1vcnkuCiAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGRvY3VtZW50TG9hZGVyID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPSBV
bmxvYWREaXNtaXNzYWw7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VEaXNtaXNzYWxF
dmVudEJlaW5nRGlzcGF0Y2hlZCA9IFBhZ2U6OlVubG9hZERpc21pc3NhbDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRlciAmJiAhZG9jdW1lbnRMb2FkZXItPnRpbWlu
ZygpLnVubG9hZEV2ZW50U3RhcnQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLnVubG9h
ZEV2ZW50RW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudExvYWRU
aW1pbmcmIHRpbWluZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQodGltaW5nLm5hdmlnYXRpb25TdGFydCgpKTsKQEAgLTQ1MSw3
ICs0NTAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGlj
eSB1bmxvYWRFdmVudFBvbGljeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2Zy
YW1lLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0g
Tm9EaXNtaXNzYWw7CisgICAgICAgICAgICAgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rp
c3BhdGNoZWQgPSBQYWdlOjpOb0Rpc21pc3NhbDsKICAgICAgICAgICAgICAgICBpZiAobV9mcmFt
ZS5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgICAgICBtX3dhc1VubG9hZEV2ZW50RW1p
dHRlZCA9IHRydWU7CkBAIC0xMjI3LDcgKzEyMjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
VVJMKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmlu
ZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fcGFnZURpc21pc3NhbEV2ZW50
QmVpbmdEaXNwYXRjaGVkICE9IE5vRGlzbWlzc2FsKQorICAgIGlmIChtX3BhZ2VEaXNtaXNzYWxF
dmVudEJlaW5nRGlzcGF0Y2hlZCAhPSBQYWdlOjpOb0Rpc21pc3NhbCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24ocmVxdWVzdCwgbmV3TG9hZFR5cGUsIGlz
Rm9ybVN1Ym1pc3Npb24sIGV2ZW50LCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSk7CkBAIC0xNDE4LDcgKzE0MTcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5
cGUgdAogCiAgICAgQVNTRVJUKG1fZnJhbWUudmlldygpKTsKIAotICAgIGlmIChtX3BhZ2VEaXNt
aXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCAhPSBOb0Rpc21pc3NhbCkKKyAgICBpZiAobV9wYWdl
RGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgIT0gUGFnZTo6Tm9EaXNtaXNzYWwpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkpCkBAIC0xNTkyLDcgKzE1
OTEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIHZv
aWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5
IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQogewogICAgIEFTU0VSVCghbV9mcmFtZS5kb2N1
bWVudCgpIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpOwotICAgIGlmICht
X3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCAhPSBOb0Rpc21pc3NhbCkKKyAgICBp
ZiAobV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgIT0gUGFnZTo6Tm9EaXNtaXNz
YWwpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBm
cm9tIHdpdGhpbiB0aGlzIG1ldGhvZCwgaW5maW5pdGUgcmVjdXJzaW9uIGNhbiBvY2N1ciAoMzQ0
MjIxOCkuIEF2b2lkIHRoaXMuCkBAIC0yODQ4LDcgKzI4NDcsNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpoYW5kbGVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmIGNocm9tZSwgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBSZWZQdHI8QmVmb3JlVW5s
b2FkRXZlbnQ+IGJlZm9yZVVubG9hZEV2ZW50ID0gQmVmb3JlVW5sb2FkRXZlbnQ6OmNyZWF0ZSgp
OwotICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gQmVmb3JlVW5sb2Fk
RGlzbWlzc2FsOworICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFn
ZTo6QmVmb3JlVW5sb2FkRGlzbWlzc2FsOwogCiAgICAgLy8gV2Ugc3RvcmUgdGhlIGZyYW1lJ3Mg
cGFnZSBpbiBhIGxvY2FsIHZhcmlhYmxlIGJlY2F1c2UgdGhlIGZyYW1lIG1pZ2h0IGdldCBkZXRh
Y2hlZCBpbnNpZGUgZGlzcGF0Y2hFdmVudC4KICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdl
KCk7CkBAIC0yODU2LDcgKzI4NTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpoYW5kbGVCZWZvcmVV
bmxvYWRFdmVudChDaHJvbWUmIGNocm9tZSwgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZAogICAgIGRv
bVdpbmRvdy0+ZGlzcGF0Y2hFdmVudChiZWZvcmVVbmxvYWRFdmVudC5nZXQoKSwgZG9tV2luZG93
LT5kb2N1bWVudCgpKTsKICAgICBwYWdlLT5kZWNyZW1lbnRGcmFtZUhhbmRsaW5nQmVmb3JlVW5s
b2FkRXZlbnRDb3VudCgpOwogCi0gICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNo
ZWQgPSBOb0Rpc21pc3NhbDsKKyAgICBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hl
ZCA9IFBhZ2U6Ok5vRGlzbWlzc2FsOwogCiAgICAgaWYgKCFiZWZvcmVVbmxvYWRFdmVudC0+ZGVm
YXVsdFByZXZlbnRlZCgpKQogICAgICAgICBkb2N1bWVudC0+ZGVmYXVsdEV2ZW50SGFuZGxlcihi
ZWZvcmVVbmxvYWRFdmVudC5nZXQoKSk7CkBAIC0zNTUzLDQgKzM1NTIsMTQgQEAgUmVmUHRyPEZy
YW1lPiBjcmVhdGVXaW5kb3coRnJhbWUmIG9wZW5lckZyYW1lLCBGcmFtZSYgbG9va3VwRnJhbWUs
IGNvbnN0IEZyYW1lTG8KICAgICByZXR1cm4gV1RGOjptb3ZlKGZyYW1lKTsKIH0KIAorYXV0byBG
cmFtZUxvYWRlcjo6UGFnZURpc21pc3NhbEV2ZW50VHlwZTo6b3BlcmF0b3I9KFBhZ2U6OkRpc21p
c3NhbFR5cGUgZGlzbWlzc2FsVHlwZSkgLT4gUGFnZURpc21pc3NhbEV2ZW50VHlwZSYKK3sKKyAg
ICBtX2Rpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gZGlzbWlzc2FsVHlwZTsKKworICAg
IGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnNldERpc21p
c3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKGRpc21pc3NhbFR5cGUpOworCisgICAgcmV0dXJuICp0
aGlzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCmluZGV4IDNlYWIzZjkwOWVlYjZlM2ZmNDBmNmUxNTg2MjU1YTZmNjQxNGNjZTIuLmQ5
YmJlYjc3YTE0YThhNDUzMDM3ZGIzNjc5MTcwNDZhZDU0MzIxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSWNvblVSTC5oIgog
I2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZXMuaCIKICNpbmNsdWRlICJNaXhlZENvbnRlbnRDaGVj
a2VyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90
aWZpZXIuaCIKQEAgLTI3MSwxMyArMjcyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc3Rh
cnRlZCgpOwogCi0gICAgZW51bSBQYWdlRGlzbWlzc2FsVHlwZSB7Ci0gICAgICAgIE5vRGlzbWlz
c2FsID0gMCwKLSAgICAgICAgQmVmb3JlVW5sb2FkRGlzbWlzc2FsID0gMSwKLSAgICAgICAgUGFn
ZUhpZGVEaXNtaXNzYWwgPSAyLAotICAgICAgICBVbmxvYWREaXNtaXNzYWwgPSAzCi0gICAgfTsK
LSAgICBQYWdlRGlzbWlzc2FsVHlwZSBwYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZDsgfQor
ICAgIFBhZ2U6OkRpc21pc3NhbFR5cGUgcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVk
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQ7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4
dCgpIGNvbnN0OwogCkBAIC00MTcsNyArNDEyLDIyIEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
ZGlkQ2FsbEltcGxpY2l0Q2xvc2U7CiAgICAgYm9vbCBtX3dhc1VubG9hZEV2ZW50RW1pdHRlZDsK
LSAgICBQYWdlRGlzbWlzc2FsVHlwZSBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hl
ZDsKKworICAgIGNsYXNzIFBhZ2VEaXNtaXNzYWxFdmVudFR5cGUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgUGFnZURpc21pc3NhbEV2ZW50VHlwZShGcmFtZSYgZnJhbWUpCisgICAgICAgICAgICA6
IG1fZnJhbWUoZnJhbWUpCisgICAgICAgIHsgfQorCisgICAgICAgIFBhZ2VEaXNtaXNzYWxFdmVu
dFR5cGUmIG9wZXJhdG9yPShQYWdlOjpEaXNtaXNzYWxUeXBlKTsKKyAgICAgICAgb3BlcmF0b3Ig
UGFnZTo6RGlzbWlzc2FsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzbWlzc2FsRXZlbnRCZWlu
Z0Rpc3BhdGNoZWQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEZyYW1lJiBtX2ZyYW1lOwor
ICAgICAgICBQYWdlOjpEaXNtaXNzYWxUeXBlIG1fZGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNo
ZWQgeyBQYWdlOjpOb0Rpc21pc3NhbCB9OworICAgIH07CisKKyAgICBQYWdlRGlzbWlzc2FsRXZl
bnRUeXBlIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkOwogICAgIGJvb2wgbV9p
c0NvbXBsZXRlOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wZW5kaW5n
U3RhdGVPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCAxYTQ2
OTcyMjkxZDAxNGEwYTIzMzc1MjI3ZmI3MDBjYzc5MDE3MmRhLi4yMDExMDJjNjQxYWZlZWUyZmZi
YzYwOTU4OThlYWY3NzFkZTJjZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGVycm9yRXZlbnRT
ZW5kZXIoKQogc3RhdGljIGlubGluZSBib29sIHBhZ2VJc0JlaW5nRGlzbWlzc2VkKERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwotICAg
IHJldHVybiBmcmFtZSAmJiBmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkKCkgIT0gRnJhbWVMb2FkZXI6Ok5vRGlzbWlzc2FsOworICAgIHJldHVybiBmcmFt
ZSAmJiBmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkg
IT0gUGFnZTo6Tm9EaXNtaXNzYWw7CiB9CiAKIEltYWdlTG9hZGVyOjpJbWFnZUxvYWRlcihFbGVt
ZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKaW5kZXggODg4ZmZjMGJjYjljNDYxNmEzM2FlZDQzNDBmODdlYjhmMzk3ODRiOS4u
ZDBiN2E1YzNmYmM1ZjYyNjk0MTdjMWMzNTc5MGQwOTk5Y2RhNmI0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0yMTQsNiArMjE0LDEy
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hl
ZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICAvLyBQcmV2ZW50ICdwYWdlaGlkZScgZXZlbnQgaGFuZGxlcnMgZnJvbSBzdGFydGluZyBuZXcg
bG9hZHMgYXMgd2UgYXJlIGluIHRoZSBQYWdlQ2FjaGUuCisgICAgaWYgKGNhY2hlZFJlc291cmNl
TG9hZGVyLmZyYW1lKCktPnBhZ2UoKSAmJiBjYWNoZWRSZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5w
YWdlKCktPmRpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgPT0gUGFnZTo6UGFnZUhpZGVE
aXNtaXNzYWwpIHsKKyAgICAgICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBjYWNoZWRSZXNvdXJj
ZUxvYWRlci5mcmFtZSgpLT5sb2FkZXIoKTsKICAgICBpZiAob3B0aW9ucy5zZWN1cml0eUNoZWNr
KCkgPT0gRG9TZWN1cml0eUNoZWNrICYmIChmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3Rh
dGVQcm92aXNpb25hbCB8fCAhZnJhbWVMb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB8fCBm
cmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpKSB7CiAgICAg
ICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODhlMzlhNzc2OTlhMmEyZmQz
ZDY0NjZiODFkYTA1M2Q0YzhmMzY3ZC4uZTcxNjkzMTc1YWIxYzcwNmQxOTJmMDExMTdjZWFlMjg2
Y2ZjOTBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgU2Vzc2lvbklEIENhY2hlZFJl
c291cmNlTG9hZGVyOjpzZXNzaW9uSUQoKSBjb25zdAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVp
bmdEaXNwYXRjaGVkKCkgIT0gRnJhbWVMb2FkZXI6Ok5vRGlzbWlzc2FsKSB7CisgICAgICAgIGlm
IChmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgIT0g
UGFnZTo6Tm9EaXNtaXNzYWwpIHsKICAgICAgICAgICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0VVJMLmlz
VmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1
ZXN0VVJMLCByZXF1ZXN0Lm9wdGlvbnMoKSwgcmVxdWVzdC5mb3JQcmVsb2FkKCkpKQogICAgICAg
ICAgICAgICAgIFBpbmdMb2FkZXI6OmxvYWRJbWFnZSgqZnJhbWUsIHJlcXVlc3RVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCmluZGV4IDViNTg5NjE1MzJjNDliOWZhZmQxNTMwYzRmNGQ1M2IzNzQw
MGE0OTQuLjBhMTk5MTRjMjRlZDMzYTNkMjE4ODExZDgyNzE1N2MxMGYwZDZlNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKQEAgLTIxMywyMyArMjEzLDYgQEAgYm9vbCBDaHJvbWU6OmNhblJ1bk1v
ZGFsKCkgY29uc3QKICAgICByZXR1cm4gbV9jbGllbnQuY2FuUnVuTW9kYWwoKTsKIH0KIAotc3Rh
dGljIGJvb2wgY2FuUnVuTW9kYWxJZkR1cmluZ1BhZ2VEaXNtaXNzYWwoUGFnZSYgcGFnZSwgQ2hy
b21lQ2xpZW50OjpEaWFsb2dUeXBlIGRpYWxvZywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewot
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgRnJhbWVMb2FkZXI6OlBh
Z2VEaXNtaXNzYWxUeXBlIGRpc21pc3NhbCA9IGZyYW1lLT5sb2FkZXIoKS5wYWdlRGlzbWlzc2Fs
RXZlbnRCZWluZ0Rpc3BhdGNoZWQoKTsKLSAgICAgICAgaWYgKGRpc21pc3NhbCAhPSBGcmFtZUxv
YWRlcjo6Tm9EaXNtaXNzYWwpCi0gICAgICAgICAgICByZXR1cm4gcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5zaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VEaXNtaXNzYWwoZGlhbG9nLCBtZXNz
YWdlLCBkaXNtaXNzYWwpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDaHJv
bWU6OmNhblJ1bk1vZGFsTm93KCkgY29uc3QKLXsKLSAgICAvLyBJZiBsb2FkcyBhcmUgYmxvY2tl
ZCwgd2UgY2FuJ3QgcnVuIG1vZGFsIGJlY2F1c2UgdGhlIGNvbnRlbnRzCi0gICAgLy8gb2YgdGhl
IG1vZGFsIGRpYWxvZyB3aWxsIG5ldmVyIHNob3cgdXAhCi0gICAgcmV0dXJuIGNhblJ1bk1vZGFs
KCkgJiYgY2FuUnVuTW9kYWxJZkR1cmluZ1BhZ2VEaXNtaXNzYWwobV9wYWdlLCBDaHJvbWVDbGll
bnQ6OkhUTUxEaWFsb2csIFN0cmluZygpKTsKLX0KLQogdm9pZCBDaHJvbWU6OnJ1bk1vZGFsKCkg
Y29uc3QKIHsKICAgICAvLyBEZWZlciBjYWxsYmFja3MgaW4gYWxsIHRoZSBvdGhlciBwYWdlcyBp
biB0aGlzIGdyb3VwLCBzbyB3ZSBkb24ndCB0cnkgdG8gcnVuIEphdmFTY3JpcHQKQEAgLTMwOSw5
ICsyOTIsNiBAQCB2b2lkIENocm9tZTo6Y2xvc2VXaW5kb3dTb29uKCkKIAogdm9pZCBDaHJvbWU6
OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBpZiAoIWNhblJ1bk1vZGFsSWZEdXJpbmdQYWdlRGlzbWlzc2FsKG1fcGFnZSwgQ2hy
b21lQ2xpZW50OjpBbGVydERpYWxvZywgbWVzc2FnZSkpCi0gICAgICAgIHJldHVybjsKLQogICAg
IC8vIERlZmVyIGxvYWRzIGluIGNhc2UgdGhlIGNsaWVudCBtZXRob2QgcnVucyBhIG5ldyBldmVu
dCBsb29wIHRoYXQgd291bGQKICAgICAvLyBvdGhlcndpc2UgY2F1c2UgdGhlIGxvYWQgdG8gY29u
dGludWUgd2hpbGUgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBleGVjdXRpbmcgSmF2YVNjcmlwdC4K
ICAgICBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZGVmZXJyZXIobV9wYWdlLCB0cnVlKTsKQEAgLTMy
Nyw5ICszMDcsNiBAQCB2b2lkIENocm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiBib29sIENocm9tZTo6cnVuSmF2YVNjcmlwdENv
bmZpcm0oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFj
YW5SdW5Nb2RhbElmRHVyaW5nUGFnZURpc21pc3NhbChtX3BhZ2UsIENocm9tZUNsaWVudDo6Q29u
ZmlybURpYWxvZywgbWVzc2FnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIC8vIERl
ZmVyIGxvYWRzIGluIGNhc2UgdGhlIGNsaWVudCBtZXRob2QgcnVucyBhIG5ldyBldmVudCBsb29w
IHRoYXQgd291bGQKICAgICAvLyBvdGhlcndpc2UgY2F1c2UgdGhlIGxvYWQgdG8gY29udGludWUg
d2hpbGUgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBleGVjdXRpbmcgSmF2YVNjcmlwdC4KICAgICBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIgZGVmZXJyZXIobV9wYWdlLCB0cnVlKTsKQEAgLTM0Niw5ICsz
MjMsNiBAQCBib29sIENocm9tZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIGJvb2wgQ2hyb21lOjpydW5KYXZhU2NyaXB0UHJvbXB0
KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBwcm9tcHQsIGNvbnN0IFN0cmluZyYgZGVmYXVs
dFZhbHVlLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWNhblJ1bk1vZGFsSWZEdXJpbmdQ
YWdlRGlzbWlzc2FsKG1fcGFnZSwgQ2hyb21lQ2xpZW50OjpQcm9tcHREaWFsb2csIHByb21wdCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIC8vIERlZmVyIGxvYWRzIGluIGNhc2UgdGhl
IGNsaWVudCBtZXRob2QgcnVucyBhIG5ldyBldmVudCBsb29wIHRoYXQgd291bGQKICAgICAvLyBv
dGhlcndpc2UgY2F1c2UgdGhlIGxvYWQgdG8gY29udGludWUgd2hpbGUgd2UncmUgaW4gdGhlIG1p
ZGRsZSBvZiBleGVjdXRpbmcgSmF2YVNjcmlwdC4KICAgICBQYWdlR3JvdXBMb2FkRGVmZXJyZXIg
ZGVmZXJyZXIobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGIxNTcyNjIwZTM1
MzM3MTI3ZDAzYWQzYTA3YzllMDA0Mzc0ZmJhMjcuLjg0MjMxNmU2ZDA4MDBhYmZmMTg3ODViOWIz
NmRlNzIyMzQ2MmRlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTIwLDcgKzEyMCw2IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKSBjb25zdDsKIAogICAgIGJvb2wg
Y2FuUnVuTW9kYWwoKSBjb25zdDsKLSAgICBib29sIGNhblJ1bk1vZGFsTm93KCkgY29uc3Q7CiAg
ICAgdm9pZCBydW5Nb2RhbCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRUb29sYmFyc1Zpc2libGUo
Ym9vbCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBhNTZjZGMyOWFj
MGZhYTdlMDc1OWZmYjBjMjNiNTlmZDAwYzI4NjcxLi44MWE5NjkyZWZiMTNjMmQ2Njc2YTZkNTc2
OGVlNzI3OWVkYjhjNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM4Miwx
NCArMzgyLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXVEY6Ok9wdGlvbmFsPFNjcm9sbGJh
ck92ZXJsYXlTdHlsZT4gcHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgeyByZXR1cm4g
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsgfQogCi0gICAgZW51bSBEaWFsb2dUeXBlIHsK
LSAgICAgICAgQWxlcnREaWFsb2cgPSAwLAotICAgICAgICBDb25maXJtRGlhbG9nID0gMSwKLSAg
ICAgICAgUHJvbXB0RGlhbG9nID0gMiwKLSAgICAgICAgSFRNTERpYWxvZyA9IDMKLSAgICB9Owot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VEaXNtaXNzYWwo
Y29uc3QgRGlhbG9nVHlwZSYsIGNvbnN0IFN0cmluZyYgZGlhbG9nTWVzc2FnZSwgRnJhbWVMb2Fk
ZXI6OlBhZ2VEaXNtaXNzYWxUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShkaWFsb2dNZXNzYWdl
KTsgcmV0dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnND
aGFuZ2VkKGJvb2wgaGFzSGFuZGxlcnMpID0gMDsKICAgICAgICAgCiAgICAgdmlydHVhbCBib29s
IGlzU1ZHSW1hZ2VDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDE3NWQ5NGEzODI2NTc3ZTU2Yjc4OGUwY2QxYWRmMTU0
OGM1NzBkMWQuLjk4MDU5NDYzMDE1YjJjYmMxNTMzMTQ0MGE2OWE2Y2RlZGUyNzdiNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTM4Nyw3ICszODcsNyBAQCBib29sIERPTVdpbmRv
dzo6Y2FuU2hvd01vZGFsRGlhbG9nTm93KGNvbnN0IEZyYW1lKiBmcmFtZSkKICAgICBQYWdlKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkuY2FuUnVuTW9kYWxOb3coKTsKKyAgICByZXR1
cm4gcGFnZS0+Y2hyb21lKCkuY2FuUnVuTW9kYWwoKTsKIH0KIAogRE9NV2luZG93OjpET01XaW5k
b3coRG9jdW1lbnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBjZmJlZjY2ZWYyZWE1NmFm
OWYwY2QzY2FlMjRkZmRhYzI2ZjllMGZiLi4wM2ZiNTMzN2E1MmY2MWEwYTFkNDFjZGQwYWM5Y2Ji
M2MyYWI0ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTUyLDYgKzE1MiwxNSBAQCBwdWJsaWM6CiAg
ICAgTWFpbkZyYW1lJiBtYWluRnJhbWUoKSB7IEFTU0VSVChtX21haW5GcmFtZSk7IHJldHVybiAq
bV9tYWluRnJhbWU7IH0KICAgICBjb25zdCBNYWluRnJhbWUmIG1haW5GcmFtZSgpIGNvbnN0IHsg
QVNTRVJUKG1fbWFpbkZyYW1lKTsgcmV0dXJuICptX21haW5GcmFtZTsgfQogCisgICAgZW51bSBE
aXNtaXNzYWxUeXBlIHsKKyAgICAgICAgTm9EaXNtaXNzYWwsCisgICAgICAgIEJlZm9yZVVubG9h
ZERpc21pc3NhbCwKKyAgICAgICAgUGFnZUhpZGVEaXNtaXNzYWwsCisgICAgICAgIFVubG9hZERp
c21pc3NhbAorICAgIH07CisgICAgRGlzbWlzc2FsVHlwZSBkaXNtaXNzYWxFdmVudEJlaW5nRGlz
cGF0Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQ7
IH0KKyAgICB2b2lkIHNldERpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKERpc21pc3NhbFR5
cGUgZGlzbWlzc2FsVHlwZSkgeyBtX2Rpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gZGlz
bWlzc2FsVHlwZTsgfQorCiAgICAgYm9vbCBvcGVuZWRCeURPTSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0T3BlbmVkQnlET00oKTsKIApAQCAtNjA3LDYgKzYxNiw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzQ2xvc2luZzsKIAogICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX21l
ZGlhU3RhdGUgeyBNZWRpYVByb2R1Y2VyOjpJc05vdFBsYXlpbmcgfTsKKyAgICBEaXNtaXNzYWxU
eXBlIG1fZGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgeyBOb0Rpc21pc3NhbCB9OwogfTsK
IAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5MDBhMmRlNWE0OWFj
YzNjZGYzZTIyMDU4NjQzNzA2ZGZiNjU5YTguLjE4ZWE0MDgyM2JhOTFhZDlhMjhkODBkMTVlOTk3
MjhmZGQwYTZkODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNS0wNi0wNyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkNvbnRlbnQgY3Jhc2ggaW4gV2Vi
Q29yZTo6UGFnZTo6c2Vzc2lvbklEKCkgY29uc3QgKyAwIChQYWdlLmNwcDoxNjYwKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzQ4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yMTIyNjU3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9pbWFnZS1sb2FkLWlu
LXBhZ2VoaWRlLWhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL25hdmlnYXRpb24vaW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvaW1hZ2UtbG9hZC1p
bi1wYWdlaGlkZS1oYW5kbGVyLTIuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGxheW91dCB0
ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHBpbmcgbG9hZHMgaW4gJ3BhZ2VoaWRlJyBoYW5kbGVycyBh
cmUKKyAgICAgICAgc3RpbGwgZ29pbmcgdGhyb3VnaCBhZnRlciB0aGlzIGNoYW5nZS4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtZG8tbG9hZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1l
LXBhZ2VoaWRlLXN0YXJ0cy1sb2FkLWluLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtcGFnZWhpZGUtc3RhcnRzLWxv
YWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1l
LXBhZ2VoaWRlLWhhbmRsZXItc3RhcnRzLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFy
dHMtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3Vi
ZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxl
ci1zdGFydHMtbG9hZDIuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0cyB0
byBtYWtlIHN1cmUgd2UgZG9uJ3QgY3Jhc2ggaWYgYSBmcmFtZSBzdGFydHMgYW4gWEhSIGxvYWQK
KyAgICAgICAgZnJvbSB0aGUgJ3BhZ2VoaWRlJyBldmVudCBoYW5kbGVyLiBPbmUgb2YgdGhlIHRl
c3RzIGNvdmVycyB0aGUgY2FzZSB3aGVyZSBhCisgICAgICAgIGZyYW1lJ3MgcGFnZWhpZGUgaGFu
ZGxlciBzdGFydHMgYSBsb2FkIGluIGEgc3ViZnJhbWUgYXMgdGhpcyBjYXNlIGlzCisgICAgICAg
IHJlcXVpcmVzIGEgYml0IG1vcmUgaGFuZGxpbmcuCisKIDIwMTUtMDYtMDUgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIGZpbmFsbHkgYmxvY2tzIHNob3VsZCBub3Qg
c2V0IHRoZSBleGNlcHRpb24gc3RhY2sgdHJhY2Ugd2hlbiByZS10aHJvd2luZyB0aGUgZXhjZXB0
aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ltYWdl
LWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24vaW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MWM0YjNlN2I1YjcwZWIyNThlYTkwNzhhMjBjNjFlNGVmNGRkYjg3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2lt
YWdlLWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CitQaW5nIHNlbnQgc3VjY2Vzc2Z1bGx5CitIVFRQX1JFRkVSRVI6IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9uYXZpZ2F0aW9uL2ltYWdlLWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci5odG1sCitSRVFV
RVNUX01FVEhPRDogR0VUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vaW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vaW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGFiZTIxMWI4OWVmMmYwZWZlZWQzZDQzOWFiMDE0NTBiOWRiZGMzMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9pbWFnZS1s
b2FkLWluLXBhZ2VoaWRlLWhhbmRsZXIuaHRtbApAQCAtMCwwICsxLDMwIEBACis8aHRtbD48aGVh
ZD4KKzx0aXRsZT5JbWFnZSBsb2FkIGluIHBhZ2VoaWRlIGhhbmRsZXI8L3RpdGxlPgorPHNjcmlw
dD4KKwordmFyIHRlc3RDYWxsZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBp
ZiAoIXRlc3RDYWxsZWQpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEp
OworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKyAg
ICAgICAgdGVzdENhbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbG9j
YXRpb24uYXNzaWduKCJyZXNvdXJjZXMvaW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLTIu
aHRtbCIpOworfQorCitmdW5jdGlvbiBwaW5nKCkgeworICAgIHZhciBpbWcgPSBuZXcgSW1hZ2Uo
MSwgMSk7CisgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvc2F2ZS1QaW5nLnBocCI7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7IiBvbnBhZ2VoaWRlPSJwaW5n
KCk7Ij4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvZGVsZXRlLXBpbmcucGhwIiBvbmxvYWQ9InRlc3Qo
KTsiIG9uZXJyb3I9InRlc3QoKTsiPjwvaW1nPgorPHA+VGVzdHMgdGhhdCBwaW5nIGxvYWRzIGlu
ICdwYWdlaGlkZScgaGFuZGxlcnMgZ28gdGhyb3VnaC48L3A+Cis8L2JvZHk+PC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mcmFt
ZS1kby1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3Vy
Y2VzL2ZyYW1lLWRvLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjY2Y2I1YTY0OTgzZWVkZGVmOTIx
NDdjZWVhMDE3ZGRhOTdiZDNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mcmFtZS1kby1sb2FkLmh0bWwKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGRvTG9hZCgpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHho
ci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Nsb3ctcmVzb3VyY2UucGw/ZGVsYXk9MzAwMCIsIHRy
dWUpOworICAgIHhoci5zZW5kKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJh
bWUtcGFnZWhpZGUtc3RhcnRzLWxvYWQtaW4tc3ViZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtcGFnZWhpZGUtc3RhcnRzLWxvYWQt
aW4tc3ViZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzRmYTE5M2RmNzFiZTMzY2U5NDYzYWYxMGY3
MjY3MGNhZTA5NWM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Jlc291cmNlcy9mcmFtZS1wYWdlaGlkZS1zdGFydHMtbG9hZC1pbi1zdWJmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxpZnJhbWUgc3JjPSJmcmFtZS1kby1sb2FkLmh0bWwiIGlkPSJkb0xvYWRTdWJmcmFtZSI+PC9p
ZnJhbWU+Cis8c2NyaXB0Pgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAvLyBTdGFydCBsb2FkIGluIHN1YmZyYW1lLgorICAgIHZhciBz
dWJmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb0xvYWRTdWJmcmFtZSIpOworICAg
IHN1YmZyYW1lLmNvbnRlbnRXaW5kb3cuZG9Mb2FkKCk7Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtcGFnZWhpZGUtc3RhcnRzLWxvYWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtcGFnZWhpZGUtc3Rh
cnRzLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzAyZTgwODRlZmRjNzZkNzBmZjVhNjI1YzY0Njdj
N2M5ZDQxNzI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9mcmFtZS1wYWdlaGlkZS1zdGFydHMtbG9hZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+Cit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCBmdW5jdGlvbihldmVudCkgeworICAgIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3BlbigiR0VUIiwgInJlc291
cmNlcy9zbG93LXJlc291cmNlLnBsP2RlbGF5PTMwMDAiLCB0cnVlKTsKKyAgICB4aHIuc2VuZCgp
OworfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ltYWdlLWxvYWQtaW4t
cGFnZWhpZGUtaGFuZGxlci0yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcmVzb3VyY2VzL2ltYWdlLWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci0yLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGZiMzM0ZTk4MThhYWU5Y2I1ZWEzMDg5YmUwMGFjY2JkY2ZlMGU3YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvaW1h
Z2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLTIuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3Jp
cHQ+Citsb2NhdGlvbi5ocmVmID0gJ2NoZWNrLXBpbmcucGhwP3Rlc3Q9L25hdmlnYXRpb24vaW1h
Z2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLmh0bWwnOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFu
ZGxlci1zdGFydHMtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzAzODljMjdmZjA1ZjUwYWZiNWE2NjQ0YjY1MWVkZDA1MDlhYzJhMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9zdWJm
cmFtZS1wYWdlaGlkZS1oYW5kbGVyLXN0YXJ0cy1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEzIEBACitUZXN0cyB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gYSBsb2FkIGlzIHN0YXJ0ZWQg
aW4gYSBzdWJmcmFtZSBvbiAncGFnZWhpZGUnIGhhbmRsaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVy
aW5nIGNhY2hlCitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5k
IHdhcyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNhY2hlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBhZ2VoaWRlLWhhbmRsZXItc3RhcnRzLWxvYWQu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9zdWJmcmFtZS1wYWdlaGlk
ZS1oYW5kbGVyLXN0YXJ0cy1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM2ZGYwNjIzYWZjZmVjYTQ2
Yzk5NTA1M2U4YTAxNDA0ZGI5NmI0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9zdWJmcmFtZS1wYWdlaGlkZS1oYW5kbGVyLXN0YXJ0cy1sb2Fk
Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3ZSBkb24ndCBj
cmFzaCB3aGVuIGEgbG9hZCBpcyBzdGFydGVkIGluIGEgc3ViZnJhbWUgb24gJ3BhZ2VoaWRlJyBo
YW5kbGluZyIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIHRvdGFsTG9hZGVk
ID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworCit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZXNob3ciLCBmdW5jdGlvbihldmVudCkgeworICAgIGRl
YnVnKCJwYWdlc2hvdyAtICIgKyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImZy
b20gY2FjaGUiKTsKKworICAgIGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNhY2hl
Iik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30sIGZhbHNlKTsKKword2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1
ZygicGFnZWhpZGUgLSAiICsgKGV2ZW50LnBlcnNpc3RlZCA/ICIiIDogIm5vdCAiKSArICJlbnRl
cmluZyBjYWNoZSIpOworICAgIGlmICghZXZlbnQucGVyc2lzdGVkKSB7CisgICAgICAgIHRlc3RG
YWlsZWQoIlBhZ2UgZGlkIG5vdCBlbnRlciB0aGUgcGFnZSBjYWNoZS4iKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfQorfSwgZmFsc2UpOworCitmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgIHRvdGFsTG9hZGVkKys7CisgICAgaWYgKHRvdGFsTG9hZGVkIDwgMikKKyAgICAgIHJldHVy
bjsKKworICAgIC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGluIGEgc2V0VGltZW91dCBiZWNhdXNl
IGEgbmF2aWdhdGlvbiBpbnNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHdvdWxkCisgICAgLy8gbm90
IGNyZWF0ZSBhIGhpc3RvcnkgZW50cnkuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgIC8vIEZvcmNlIGEgYmFjayBuYXZpZ2F0aW9uIGJhY2sgdG8gdGhpcyBwYWdlLgorICAgICAg
d2luZG93LmxvY2F0aW9uLmhyZWYgPSAicmVzb3VyY2VzL3BhZ2UtY2FjaGUtaGVscGVyLmh0bWwi
OworICAgIH0sIDQwMDApOworfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIg
c3JjPSJyZXNvdXJjZXMvZnJhbWUtcGFnZWhpZGUtc3RhcnRzLWxvYWQuaHRtbCIgb25sb2FkPSJy
dW5UZXN0KCkiPjwvaWZyYW1lPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9zdWJmcmFtZS1wYWdlaGlkZS1oYW5kbGVyLXN0YXJ0cy1s
b2FkMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vc3Vi
ZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMwMzg5YzI3ZmYwNWY1MGFmYjVhNjY0NGI2NTFlZGQwNTA5YWMyYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhp
ZGUtaGFuZGxlci1zdGFydHMtbG9hZDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rl
c3RzIHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBhIGxvYWQgaXMgc3RhcnRlZCBpbiBhIHN1YmZy
YW1lIG9uICdwYWdlaGlkZScgaGFuZGxpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK3BhZ2VzaG93IC0gbm90IGZyb20gY2FjaGUKK3BhZ2VoaWRlIC0gZW50ZXJpbmcgY2FjaGUK
K3BhZ2VzaG93IC0gZnJvbSBjYWNoZQorUEFTUyBQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3Rv
cmVkIGZyb20gdGhlIHBhZ2UgY2FjaGUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDIuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9zdWJmcmFtZS1wYWdlaGlkZS1oYW5kbGVy
LXN0YXJ0cy1sb2FkMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZDVkYzU0NWFkYTY4NTBlM2ViZmUwMDQ2
OTgxMTBhY2FiMzg1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDIuaHRtbApA
QCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdlIGRvbid0IGNyYXNoIHdo
ZW4gYSBsb2FkIGlzIHN0YXJ0ZWQgaW4gYSBzdWJmcmFtZSBvbiAncGFnZWhpZGUnIGhhbmRsaW5n
Iik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgdG90YWxMb2FkZWQgPSAwOwor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoInBh
Z2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZnJvbSBjYWNo
ZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJQ
YWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhlIHBhZ2UgY2FjaGUiKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfSwgZmFsc2UpOworCit3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigicGFnZWhpZGUiLCBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdl
aGlkZSAtICIgKyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImVudGVyaW5nIGNh
Y2hlIik7CisgICAgaWYgKCFldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
UGFnZSBkaWQgbm90IGVudGVyIHRoZSBwYWdlIGNhY2hlLiIpOworICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdG90
YWxMb2FkZWQrKzsKKyAgICBpZiAodG90YWxMb2FkZWQgPCAyKQorICAgICAgcmV0dXJuOworCisg
ICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gaW4gYSBzZXRUaW1lb3V0IGJlY2F1c2UgYSBuYXZp
Z2F0aW9uIGluc2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgd291bGQKKyAgICAvLyBub3QgY3JlYXRl
IGEgaGlzdG9yeSBlbnRyeS4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgLy8g
Rm9yY2UgYSBiYWNrIG5hdmlnYXRpb24gYmFjayB0byB0aGlzIHBhZ2UuCisgICAgICB3aW5kb3cu
bG9jYXRpb24uaHJlZiA9ICJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCI7CisgICAg
fSwgNDAwMCk7Cit9CisKKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJl
c291cmNlcy9mcmFtZS1wYWdlaGlkZS1zdGFydHMtbG9hZC1pbi1zdWJmcmFtZS5odG1sIiBvbmxv
YWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254518</attachid>
            <date>2015-06-08 15:56:39 -0700</date>
            <delta_ts>2015-06-08 16:45:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145748-20150608155613.patch</filename>
            <type>text/plain</type>
            <size>32337</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVhMDc0N2I1YjI1ODcx
MmNlMTkxNTI4ZjUyNGExM2NhZWMxZDNhOS4uMGRlNTc4NjU5MDQyZTQyZTdiNjU0ZmU2NzE0N2Yx
M2QzZTJiZjE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE1LTA2LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29udGVudCBjcmFzaCBp
biBXZWJDb3JlOjpQYWdlOjpzZXNzaW9uSUQoKSBjb25zdCArIDAgKFBhZ2UuY3BwOjE2NjApCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NDgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIxMjI2NTc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJy
YWR5IEVpZHNvbi4KKworICAgICAgICBXZSB3b3VsZCBzb21ldGltZXMgY3Jhc2ggd2hlbiBwcnVu
aW5nIHRoZSBQYWdlQ2FjaGUgYmVjYXVzZSBpdCB3YXMKKyAgICAgICAgcG9zc2libGUgZm9yIGZy
YW1lcyB0byBzdGlsbCBiZSBsb2FkaW5nIHdoaWxlIGluIHRoZSBQYWdlQ2FjaGUgYW5kCisgICAg
ICAgIHdlIHdvdWxkIHRyeSB0byBzdG9wIHRoZSBsb2FkIHdoZW4gdGhlIENhY2hlZEZyYW1lIGlz
IGRlc3Ryb3llZC4gVGhpcworICAgICAgICBjb2RlIHBhdGggd2FzIG5vdCBzdXBwb3NlZCB0byBi
ZSBleGVyY2lzZWQgYXMgd2Ugd2VyZSBub3Qgc3VwcG9zZWQgdG8KKyAgICAgICAgaGF2ZSBwYWdl
cyBzdGlsbCBsb2FkaW5nIGluc2lkZSB0aGUgUGFnZUNhY2hlLgorCisgICAgICAgIHIxODUwMTcg
bWFkZSBzdXJlIHdlIGRvbid0IGluc2VydCBpbnRvIHRoZSBQYWdlQ2FjaGUgcGFnZXMgdGhhdCBh
cmUKKyAgICAgICAgc3RpbGwgbG9hZGluZy4gSG93ZXZlciwgbm90aGluZyB3YXMgcHJldmVudGlu
ZyBjb250ZW50IGZyb20gc3RhcnRpbmcKKyAgICAgICAgbmV3IGxvYWRzIGluIHRoZWlyICdwYWdl
aGlkZScgZXZlbnQgaGFuZGxlcnMsICphZnRlciogdGhlIGRlY2lzaW9uCisgICAgICAgIHRvIHB1
dCB0aGUgcGFnZSBpbiB0aGUgUGFnZUNhY2hlIHdhcyBtYWRlLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggcHJldmVudHMgY29udGVudCBmcm9tIHN0YXJ0aW5nIGxvYWRzIGZyb20gYSAncGFnZWhpZGUn
CisgICAgICAgIGV2ZW50IGhhbmRsZXIgc28gdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIGhhdmUgY29u
dGVudCB0aGF0IGlzIGxvYWRpbmcKKyAgICAgICAgaW5zaWRlIHRoZSBQYWdlQ2FjaGUuICdwaW5n
JyBpbWFnZSBsb2FkcyBzdGlsbCBnbyB0aHJvdWdoIHRob3VnaCBhcworICAgICAgICB0aGVzZSBh
cmUgc3BlY2lhbGx5IGhhbmRsZWQgYW5kIHVzZSBQaW5nTG9hZGVycy4KKworICAgICAgICBUZXN0
czogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ltYWdlLWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhp
ZGUtaGFuZGxlci1zdGFydHMtbG9hZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL25h
dmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDIuaHRtbAorCisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3Rv
cExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpoYW5kbGVCZWZvcmVVbmxvYWRFdmVudCk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cGFn
ZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpQYWdlRGlzbWlzc2FsRXZlbnRUeXBlOjpQYWdlRGlzbWlzc2FsRXZlbnRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsRXZlbnRUeXBlOjpv
cGVyYXRvciBQYWdlOjpEaXNtaXNzYWxUeXBlKToKKworICAgICAgICBBZGQgd3JhcHBlciBjbGFz
cyBmb3IgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgbWVtYmVyIHR5cGUuCisg
ICAgICAgIFRoZSB3cmFwcGVyIHRha2VzIGNhcmUgb2YgdXBkYXRpbmcgdGhlIG1fZGlzbWlzc2Fs
RXZlbnRCZWluZ0Rpc3BhdGNoZWQKKyAgICAgICAgbWVtYmVyIG9uIHRoZSBQYWdlIGV2ZXJ5IHRp
bWUgdGhlIG1lbWJlciBvbiBGcmFtZUxvYWRlciBpcyB1cGRhdGVkLiBXZQorICAgICAgICBub3cg
Y2FjaGUgdGhpcyBpbmZvcm1hdGlvbiBvbiB0aGUgUGFnZSBzbyB0aGF0IGNsaWVudHMgY2FuIGNo
ZWFwbHkKKyAgICAgICAgcXVlcnkgaWYgYSBkaXNtaXNzYWwgZXZlbnQgaXMgYmVpbmcgZGlzcGF0
Y2hlZCBpbiBhbnkgb2YgdGhlIFBhZ2UncworICAgICAgICBmcmFtZSwgd2l0aG91dCBoYXZpbmcg
dG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUuCisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUlzQmVpbmdEaXNtaXNzZWQpOgorCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpsb2FkKToKKworICAgICAgICBBYm9ydCB0aGUgbG9hZCBlYXJseSBp
ZiB3ZSBhcmUgY3VycmVudGx5IGRpc3BhdGNoaW5nIGEgJ3BhZ2VoaWRlJworICAgICAgICBldmVu
dC4gV2UgZG9uJ3QgYWxsb3cgbmV3IGxvYWRzIGF0IHN1Y2ggcG9pbnQgYmVjYXVzZSB3ZSd2ZSBh
bHJlYWR5CisgICAgICAgIG1hZGUgdGhlIGRlY2lzaW9uIHRvIGFkZCB0aGUgUGFnZSB0byB0aGUg
UGFnZUNhY2hlLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1h
Z2UpOgorCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lOjpydW5Nb2RhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnNldFRv
b2xiYXJzVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnRvb2xi
YXJzVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuSmF2
YVNjcmlwdFByb21wdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnNob3Vs
ZEludGVycnVwdEphdmFTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZ05v
dyk6CisKKyAgICAgICAgRHJvcCBDaHJvbWVDbGllbnQ6OnNob3VsZFJ1bk1vZGFsRGlhbG9nRHVy
aW5nUGFnZURpc21pc3NhbCgpIGFuZCBjb2RlCisgICAgICAgIHVzaW5nIGl0IGFzIGl0IGlzIHVu
dXNlZCBhbmQgSSBkaWQgbm90IHRoaW5rIGl0IHdhcyB3b3J0aCB1cGRhdGluZworICAgICAgICB0
aGlzIGNvZGUuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OmRpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnNldERpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKToKKworICAgICAgICBBZGQgYSBt
X2Rpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkIG1lbWJlciB0byB0aGUgUGFnZSBzbyB0aGF0
IHdlIGNhbgorICAgICAgICBlYXNpbHkgcXVlcnkgaWYgYSBkaXNtaXNzYWwgZXZlbnQgaXMgYmVp
bmcgZGlzcGF0Y2hlZCBpbiBhbnkgb2YgdGhlCisgICAgICAgIGZyYW1lcywgd2l0aG91dCBoYXZp
bmcgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUuIEkgc3VzcGVjdCBtb3JlIGNhbGwKKyAgICAg
ICAgc2l0ZXMgb2YgRnJhbWVMb2FkZXI6OnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hl
ZCgpIG1heSBhY3R1YWxseQorICAgICAgICB3YW50IHRoaXMgYnV0IEkgZGlkIG5vdCBtYWtlIHN1
Y2ggY2hhbmdlIGluIHRoaXMgcGF0Y2guIEl0IGlzIGltcG9ydGFudAorICAgICAgICB0byBjaGVj
ayBhbGwgdGhlIGZyYW1lcyBhbmQgbm90IHNpbXBseSB0aGUgY3VycmVudCBvbmUgYmVjYXVzZSBh
IGZyYW1lJ3MKKyAgICAgICAgcGFnZWhpZGUgZXZlbnQgaGFuZGxlciBtYXkgdHJpZ2dlciBhIGxv
YWQgaW4gYW5vdGhlciBmcmFtZS4KKwogMjAxNS0wNi0wOCAgSmF2aWVyIEZlcm5hbmRleiAgPGpm
ZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBTZXR0aW5n
IGhlaWdodCBvbiBhIGdyaWQgaXRlbSBkb2Vzbid0IGhhdmUgYW55IGVmZmVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYzljNTkxMzM0Y2JjZDY0MmY4ZGFlODY2YTY1
Y2I4YjgxNmE0MDJhNC4uNjI4ZTY3ZGVkOWNhMDgzNzY0NWZmZDc4YWY4NDAwMzliZGVkMDg5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC04NCw3ICs4NCw2IEBACiAj
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VD
YWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQYWdlVHJhbnNp
dGlvbkV2ZW50LmgiCkBAIC0yMjYsNyArMjI1LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVy
KEZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCkKICAgICAsIG1faXNFeGVj
dXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbihmYWxzZSkKICAgICAsIG1fZGlkQ2FsbEltcGxpY2l0
Q2xvc2UodHJ1ZSkKICAgICAsIG1fd2FzVW5sb2FkRXZlbnRFbWl0dGVkKGZhbHNlKQotICAgICwg
bV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoTm9EaXNtaXNzYWwpCisgICAgLCBt
X3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZChmcmFtZSkKICAgICAsIG1faXNDb21w
bGV0ZShmYWxzZSkKICAgICAsIG1fbmVlZHNDbGVhcihmYWxzZSkKICAgICAsIG1fY2hlY2tUaW1l
cigqdGhpcywgJkZyYW1lTG9hZGVyOjpjaGVja1RpbWVyRmlyZWQpCkBAIC00MjUsOSArNDI0LDkg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3kgdW5sb2Fk
RXZlbnRQb2xpY3kpCiAgICAgICAgICAgICAgICAgRWxlbWVudCogY3VycmVudEZvY3VzZWRFbGVt
ZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwogICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50Rm9jdXNlZEVsZW1lbnQgJiYgY3VycmVudEZvY3VzZWRFbGVtZW50LT50
b0lucHV0RWxlbWVudCgpKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rm9jdXNlZEVsZW1l
bnQtPnRvSW5wdXRFbGVtZW50KCktPmVuZEVkaXRpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAo
bV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gTm9EaXNtaXNzYWwpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0g
UGFnZTo6RGlzbWlzc2FsVHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodW5s
b2FkRXZlbnRQb2xpY3kgPT0gVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNo
ZWQgPSBQYWdlSGlkZURpc21pc3NhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZTo6RGlzbWlzc2FsVHlwZTo6UGFnZUhp
ZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5kaXNwYXRjaEV2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucGFnZWhpZGVFdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSwgbV9m
cmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogCkBAIC00NDAsNyArNDM5
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3kgdW5s
b2FkRXZlbnRQb2xpY3kpCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGlsZSBkaXNwYXRj
aGluZyB0aGUgZXZlbnQsIHNvIHByb3RlY3QgaXQgdG8gcHJldmVudCB3cml0aW5nIHRoZSBlbmQK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWUgaW50byBmcmVlZCBtZW1vcnkuCiAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVy
ID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPSBVbmxvYWREaXNtaXNzYWw7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hl
ZCA9IFBhZ2U6OkRpc21pc3NhbFR5cGU6OlVubG9hZDsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChkb2N1bWVudExvYWRlciAmJiAhZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLnVubG9hZEV2
ZW50U3RhcnQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLnVubG9hZEV2ZW50RW5kKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcmIHRpbWlu
ZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQodGltaW5nLm5hdmlnYXRpb25TdGFydCgpKTsKQEAgLTQ1MSw3ICs0NTAsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxvYWRFdmVu
dFBvbGljeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50
KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gTm9EaXNtaXNzYWw7
CisgICAgICAgICAgICAgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPSBQ
YWdlOjpEaXNtaXNzYWxUeXBlOjpOb25lOwogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAgICAgICAgIG1fd2FzVW5sb2FkRXZlbnRFbWl0dGVk
ID0gdHJ1ZTsKQEAgLTEyMjcsNyArMTIyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9wYWdlRGlzbWlzc2FsRXZlbnRCZWlu
Z0Rpc3BhdGNoZWQgIT0gTm9EaXNtaXNzYWwpCisgICAgaWYgKG1fcGFnZURpc21pc3NhbEV2ZW50
QmVpbmdEaXNwYXRjaGVkICE9IFBhZ2U6OkRpc21pc3NhbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKHJlcXVlc3QsIG5ld0xvYWRUeXBl
LCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgZnJhbWVMb2FkUmVxdWVzdC5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KCkpOwpAQCAtMTQxOCw3ICsxNDE3LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxv
YWRUeXBlIHQKIAogICAgIEFTU0VSVChtX2ZyYW1lLnZpZXcoKSk7CiAKLSAgICBpZiAobV9wYWdl
RGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgIT0gTm9EaXNtaXNzYWwpCisgICAgaWYgKG1f
cGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkICE9IFBhZ2U6OkRpc21pc3NhbFR5cGU6
Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkpCkBA
IC0xNTkyLDcgKzE1OTEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0Vu
ZFJlbG9hZCkKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9u
YWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQogewogICAgIEFTU0VSVCgh
bV9mcmFtZS5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkp
OwotICAgIGlmIChtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCAhPSBOb0Rpc21p
c3NhbCkKKyAgICBpZiAobV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgIT0gUGFn
ZTo6RGlzbWlzc2FsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgdGhp
cyBtZXRob2QgaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoaXMgbWV0aG9kLCBpbmZpbml0ZSByZWN1
cnNpb24gY2FuIG9jY3VyICgzNDQyMjE4KS4gQXZvaWQgdGhpcy4KQEAgLTI4NDgsNyArMjg0Nyw3
IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmhhbmRsZUJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hy
b21lLCBGcmFtZUxvYWRlciogZnJhbWVMb2FkCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAog
ICAgIFJlZlB0cjxCZWZvcmVVbmxvYWRFdmVudD4gYmVmb3JlVW5sb2FkRXZlbnQgPSBCZWZvcmVV
bmxvYWRFdmVudDo6Y3JlYXRlKCk7Ci0gICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3Bh
dGNoZWQgPSBCZWZvcmVVbmxvYWREaXNtaXNzYWw7CisgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRC
ZWluZ0Rpc3BhdGNoZWQgPSBQYWdlOjpEaXNtaXNzYWxUeXBlOjpCZWZvcmVVbmxvYWQ7CiAKICAg
ICAvLyBXZSBzdG9yZSB0aGUgZnJhbWUncyBwYWdlIGluIGEgbG9jYWwgdmFyaWFibGUgYmVjYXVz
ZSB0aGUgZnJhbWUgbWlnaHQgZ2V0IGRldGFjaGVkIGluc2lkZSBkaXNwYXRjaEV2ZW50LgogICAg
IFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKQEAgLTI4NTYsNyArMjg1NSw3IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OmhhbmRsZUJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFt
ZUxvYWRlciogZnJhbWVMb2FkCiAgICAgZG9tV2luZG93LT5kaXNwYXRjaEV2ZW50KGJlZm9yZVVu
bG9hZEV2ZW50LmdldCgpLCBkb21XaW5kb3ctPmRvY3VtZW50KCkpOwogICAgIHBhZ2UtPmRlY3Jl
bWVudEZyYW1lSGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVudENvdW50KCk7CiAKLSAgICBtX3BhZ2VE
aXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9IE5vRGlzbWlzc2FsOworICAgIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZTo6RGlzbWlzc2FsVHlwZTo6Tm9uZTsK
IAogICAgIGlmICghYmVmb3JlVW5sb2FkRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAg
ICAgZG9jdW1lbnQtPmRlZmF1bHRFdmVudEhhbmRsZXIoYmVmb3JlVW5sb2FkRXZlbnQuZ2V0KCkp
OwpAQCAtMzU1Myw0ICszNTUyLDE0IEBAIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1l
JiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBjb25zdCBGcmFtZUxvCiAgICAgcmV0
dXJuIFdURjo6bW92ZShmcmFtZSk7CiB9CiAKK2F1dG8gRnJhbWVMb2FkZXI6OlBhZ2VEaXNtaXNz
YWxFdmVudFR5cGU6Om9wZXJhdG9yPShQYWdlOjpEaXNtaXNzYWxUeXBlIGRpc21pc3NhbFR5cGUp
IC0+IFBhZ2VEaXNtaXNzYWxFdmVudFR5cGUmCit7CisgICAgbV9kaXNtaXNzYWxFdmVudEJlaW5n
RGlzcGF0Y2hlZCA9IGRpc21pc3NhbFR5cGU7CisKKyAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJh
bWUucGFnZSgpKQorICAgICAgICBwYWdlLT5zZXREaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hl
ZChkaXNtaXNzYWxUeXBlKTsKKworICAgIHJldHVybiAqdGhpczsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCAzZWFiM2Y5MDll
ZWI2ZTNmZjQwZjZlMTU4NjI1NWE2ZjY0MTRjY2UyLi5lN2JmZTE3NWVlZmVkNWExNDU5MWIzOGU5
Y2JkYTg3YWY0Yjg3OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3Rv
bmVzLmgiCiAjaW5jbHVkZSAiTWl4ZWRDb250ZW50Q2hlY2tlci5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVU
eXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE5vdGlmaWVyLmgiCkBAIC0yNzEsMTMgKzI3
Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHN0YXJ0ZWQoKTsKIAotICAgIGVudW0gUGFn
ZURpc21pc3NhbFR5cGUgewotICAgICAgICBOb0Rpc21pc3NhbCA9IDAsCi0gICAgICAgIEJlZm9y
ZVVubG9hZERpc21pc3NhbCA9IDEsCi0gICAgICAgIFBhZ2VIaWRlRGlzbWlzc2FsID0gMiwKLSAg
ICAgICAgVW5sb2FkRGlzbWlzc2FsID0gMwotICAgIH07Ci0gICAgUGFnZURpc21pc3NhbFR5cGUg
cGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
RGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQ7IH0KKyAgICBQYWdlOjpEaXNtaXNzYWxUeXBl
IHBhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBO
ZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQoKSBjb25zdDsKIApAQCAtNDE3LDcg
KzQxMiwyMiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2RpZENhbGxJbXBsaWNpdENsb3NlOwog
ICAgIGJvb2wgbV93YXNVbmxvYWRFdmVudEVtaXR0ZWQ7Ci0gICAgUGFnZURpc21pc3NhbFR5cGUg
bV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQ7CisKKyAgICBjbGFzcyBQYWdlRGlz
bWlzc2FsRXZlbnRUeXBlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBhZ2VEaXNtaXNzYWxFdmVu
dFR5cGUoRnJhbWUmIGZyYW1lKQorICAgICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICAg
ICB7IH0KKworICAgICAgICBQYWdlRGlzbWlzc2FsRXZlbnRUeXBlJiBvcGVyYXRvcj0oUGFnZTo6
RGlzbWlzc2FsVHlwZSk7CisgICAgICAgIG9wZXJhdG9yIFBhZ2U6OkRpc21pc3NhbFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2Rpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBGcmFtZSYgbV9mcmFtZTsKKyAgICAgICAgUGFnZTo6RGlzbWlzc2Fs
VHlwZSBtX2Rpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkIHsgUGFnZTo6RGlzbWlzc2FsVHlw
ZTo6Tm9uZSB9OworICAgIH07CisKKyAgICBQYWdlRGlzbWlzc2FsRXZlbnRUeXBlIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkOwogICAgIGJvb2wgbV9pc0NvbXBsZXRlOwogCiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wZW5kaW5nU3RhdGVPYmplY3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCAxYTQ2OTcyMjkxZDAxNGEwYTIz
Mzc1MjI3ZmI3MDBjYzc5MDE3MmRhLi4yMDM5NGQxMzkzMDg2NTA4NmM1YWI5YzhmYjhlY2RjNTdh
YWNmZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGVycm9yRXZlbnRTZW5kZXIoKQogc3RhdGlj
IGlubGluZSBib29sIHBhZ2VJc0JlaW5nRGlzbWlzc2VkKERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwotICAgIHJldHVybiBmcmFtZSAm
JiBmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgIT0g
RnJhbWVMb2FkZXI6Ok5vRGlzbWlzc2FsOworICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+bG9h
ZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgIT0gUGFnZTo6RGlzbWlz
c2FsVHlwZTo6Tm9uZTsKIH0KIAogSW1hZ2VMb2FkZXI6OkltYWdlTG9hZGVyKEVsZW1lbnQmIGVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCA4ODhmZmMwYmNiOWM0NjE2YTMzYWVkNDM0MGY4N2ViOGYzOTc4NGI5Li41Mzc4ZDli
ODA2OGJjMGVhYjY0OWY2YmVlYjNiNTU4NDc4YmQ2NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTIxNCw2ICsyMTQsMTIgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIsIGNvbnN0IFJlc28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIFBy
ZXZlbnQgJ3BhZ2VoaWRlJyBldmVudCBoYW5kbGVycyBmcm9tIHN0YXJ0aW5nIG5ldyBsb2FkcyBh
cyB3ZSBhcmUgaW4gdGhlIFBhZ2VDYWNoZS4KKyAgICBpZiAoY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKS0+cGFnZSgpICYmIGNhY2hlZFJlc291cmNlTG9hZGVyLmZyYW1lKCktPnBhZ2UoKS0+
ZGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSA9PSBQYWdlOjpEaXNtaXNzYWxUeXBlOjpQ
YWdlSGlkZSkgeworICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IGNhY2hlZFJlc291cmNl
TG9hZGVyLmZyYW1lKCktPmxvYWRlcigpOwogICAgIGlmIChvcHRpb25zLnNlY3VyaXR5Q2hlY2so
KSA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYgKGZyYW1lTG9hZGVyLnN0YXRlKCkgPT0gRnJhbWVTdGF0
ZVByb3Zpc2lvbmFsIHx8ICFmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpIHx8IGZy
YW1lTG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkpIHsKICAgICAg
ICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4OGUzOWE3NzY5OWEyYTJmZDNk
NjQ2NmI4MWRhMDUzZDRjOGYzNjdkLi5lZjRjN2IyOGYyY2I3ZDhhZjc3MGQ4NGNmYWM5M2IyMGMw
NjM5ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBTZXNzaW9uSUQgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnNlc3Npb25JRCgpIGNvbnN0CiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCkpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS5wYWdlRGlzbWlzc2FsRXZlbnRCZWlu
Z0Rpc3BhdGNoZWQoKSAhPSBGcmFtZUxvYWRlcjo6Tm9EaXNtaXNzYWwpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5sb2FkZXIoKS5wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSAhPSBQ
YWdlOjpEaXNtaXNzYWxUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICBVUkwgcmVxdWVzdFVSTCA9
IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgICAgICAgICBpZiAocmVxdWVz
dFVSTC5pc1ZhbGlkKCkgJiYgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJj
ZSwgcmVxdWVzdFVSTCwgcmVxdWVzdC5vcHRpb25zKCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpKSkK
ICAgICAgICAgICAgICAgICBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoKmZyYW1lLCByZXF1ZXN0VVJM
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA1YjU4OTYxNTMyYzQ5YjlmYWZkMTUzMGM0ZjRk
NTNiMzc0MDBhNDk0Li4wYTE5OTE0YzI0ZWQzM2EzZDIxODgxMWQ4MjcxNTdjMTBmMGQ2ZTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0yMTMsMjMgKzIxMyw2IEBAIGJvb2wgQ2hyb21lOjpj
YW5SdW5Nb2RhbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50LmNhblJ1bk1vZGFsKCk7CiB9
CiAKLXN0YXRpYyBib29sIGNhblJ1bk1vZGFsSWZEdXJpbmdQYWdlRGlzbWlzc2FsKFBhZ2UmIHBh
Z2UsIENocm9tZUNsaWVudDo6RGlhbG9nVHlwZSBkaWFsb2csIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKLXsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIEZyYW1lTG9h
ZGVyOjpQYWdlRGlzbWlzc2FsVHlwZSBkaXNtaXNzYWwgPSBmcmFtZS0+bG9hZGVyKCkucGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCk7Ci0gICAgICAgIGlmIChkaXNtaXNzYWwgIT0g
RnJhbWVMb2FkZXI6Ok5vRGlzbWlzc2FsKQotICAgICAgICAgICAgcmV0dXJuIHBhZ2UuY2hyb21l
KCkuY2xpZW50KCkuc2hvdWxkUnVuTW9kYWxEaWFsb2dEdXJpbmdQYWdlRGlzbWlzc2FsKGRpYWxv
ZywgbWVzc2FnZSwgZGlzbWlzc2FsKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgQ2hyb21lOjpjYW5SdW5Nb2RhbE5vdygpIGNvbnN0Ci17Ci0gICAgLy8gSWYgbG9hZHMgYXJl
IGJsb2NrZWQsIHdlIGNhbid0IHJ1biBtb2RhbCBiZWNhdXNlIHRoZSBjb250ZW50cwotICAgIC8v
IG9mIHRoZSBtb2RhbCBkaWFsb2cgd2lsbCBuZXZlciBzaG93IHVwIQotICAgIHJldHVybiBjYW5S
dW5Nb2RhbCgpICYmIGNhblJ1bk1vZGFsSWZEdXJpbmdQYWdlRGlzbWlzc2FsKG1fcGFnZSwgQ2hy
b21lQ2xpZW50OjpIVE1MRGlhbG9nLCBTdHJpbmcoKSk7Ci19Ci0KIHZvaWQgQ2hyb21lOjpydW5N
b2RhbCgpIGNvbnN0CiB7CiAgICAgLy8gRGVmZXIgY2FsbGJhY2tzIGluIGFsbCB0aGUgb3RoZXIg
cGFnZXMgaW4gdGhpcyBncm91cCwgc28gd2UgZG9uJ3QgdHJ5IHRvIHJ1biBKYXZhU2NyaXB0CkBA
IC0zMDksOSArMjkyLDYgQEAgdm9pZCBDaHJvbWU6OmNsb3NlV2luZG93U29vbigpCiAKIHZvaWQg
Q2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgaWYgKCFjYW5SdW5Nb2RhbElmRHVyaW5nUGFnZURpc21pc3NhbChtX3Bh
Z2UsIENocm9tZUNsaWVudDo6QWxlcnREaWFsb2csIG1lc3NhZ2UpKQotICAgICAgICByZXR1cm47
Ci0KICAgICAvLyBEZWZlciBsb2FkcyBpbiBjYXNlIHRoZSBjbGllbnQgbWV0aG9kIHJ1bnMgYSBu
ZXcgZXZlbnQgbG9vcCB0aGF0IHdvdWxkCiAgICAgLy8gb3RoZXJ3aXNlIGNhdXNlIHRoZSBsb2Fk
IHRvIGNvbnRpbnVlIHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIEphdmFT
Y3JpcHQuCiAgICAgUGFnZUdyb3VwTG9hZERlZmVycmVyIGRlZmVycmVyKG1fcGFnZSwgdHJ1ZSk7
CkBAIC0zMjcsOSArMzA3LDYgQEAgdm9pZCBDaHJvbWU6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogYm9vbCBDaHJvbWU6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IGlmICghY2FuUnVuTW9kYWxJZkR1cmluZ1BhZ2VEaXNtaXNzYWwobV9wYWdlLCBDaHJvbWVDbGll
bnQ6OkNvbmZpcm1EaWFsb2csIG1lc3NhZ2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAg
ICAvLyBEZWZlciBsb2FkcyBpbiBjYXNlIHRoZSBjbGllbnQgbWV0aG9kIHJ1bnMgYSBuZXcgZXZl
bnQgbG9vcCB0aGF0IHdvdWxkCiAgICAgLy8gb3RoZXJ3aXNlIGNhdXNlIHRoZSBsb2FkIHRvIGNv
bnRpbnVlIHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQu
CiAgICAgUGFnZUdyb3VwTG9hZERlZmVycmVyIGRlZmVycmVyKG1fcGFnZSwgdHJ1ZSk7CkBAIC0z
NDYsOSArMzIzLDYgQEAgYm9vbCBDaHJvbWU6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiBib29sIENocm9tZTo6cnVuSmF2YVNjcmlw
dFByb21wdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgcHJvbXB0LCBjb25zdCBTdHJpbmcm
IGRlZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFjYW5SdW5Nb2RhbElm
RHVyaW5nUGFnZURpc21pc3NhbChtX3BhZ2UsIENocm9tZUNsaWVudDo6UHJvbXB0RGlhbG9nLCBw
cm9tcHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBEZWZlciBsb2FkcyBpbiBj
YXNlIHRoZSBjbGllbnQgbWV0aG9kIHJ1bnMgYSBuZXcgZXZlbnQgbG9vcCB0aGF0IHdvdWxkCiAg
ICAgLy8gb3RoZXJ3aXNlIGNhdXNlIHRoZSBsb2FkIHRvIGNvbnRpbnVlIHdoaWxlIHdlJ3JlIGlu
IHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQuCiAgICAgUGFnZUdyb3VwTG9hZERl
ZmVycmVyIGRlZmVycmVyKG1fcGFnZSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCBiMTU3
MjYyMGUzNTMzNzEyN2QwM2FkM2EwN2M5ZTAwNDM3NGZiYTI3Li44NDIzMTZlNmQwODAwYWJmZjE4
Nzg1YjliMzZkZTcyMjM0NjJkZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTEyMCw3ICsxMjAs
NiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAg
ICBib29sIGNhblJ1bk1vZGFsKCkgY29uc3Q7Ci0gICAgYm9vbCBjYW5SdW5Nb2RhbE5vdygpIGNv
bnN0OwogICAgIHZvaWQgcnVuTW9kYWwoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VG9vbGJhcnNW
aXNpYmxlKGJvb2wpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYTU2
Y2RjMjlhYzBmYWE3ZTA3NTlmZmIwYzIzYjU5ZmQwMGMyODY3MS4uODFhOTY5MmVmYjEzYzJkNjY3
NmE2ZDU3NjhlZTcyNzllZGI4YzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBA
IC0zODIsMTQgKzM4Miw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV1RGOjpPcHRpb25hbDxT
Y3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsg
cmV0dXJuIFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7IH0KIAotICAgIGVudW0gRGlhbG9n
VHlwZSB7Ci0gICAgICAgIEFsZXJ0RGlhbG9nID0gMCwKLSAgICAgICAgQ29uZmlybURpYWxvZyA9
IDEsCi0gICAgICAgIFByb21wdERpYWxvZyA9IDIsCi0gICAgICAgIEhUTUxEaWFsb2cgPSAzCi0g
ICAgfTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnVuTW9kYWxEaWFsb2dEdXJpbmdQYWdlRGlz
bWlzc2FsKGNvbnN0IERpYWxvZ1R5cGUmLCBjb25zdCBTdHJpbmcmIGRpYWxvZ01lc3NhZ2UsIEZy
YW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlwZSkgY29uc3QgeyBVTlVTRURfUEFSQU0oZGlhbG9n
TWVzc2FnZSk7IHJldHVybiB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudEhh
bmRsZXJzQ2hhbmdlZChib29sIGhhc0hhbmRsZXJzKSA9IDA7CiAgICAgICAgIAogICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxNzVkOTRhMzgyNjU3N2U1NmI3ODhlMGNk
MWFkZjE1NDhjNTcwZDFkLi45ODA1OTQ2MzAxNWIyY2JjMTUzMzE0NDBhNjlhNmNkZWRlMjc3YjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0zODcsNyArMzg3LDcgQEAgYm9vbCBE
T01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZ05vdyhjb25zdCBGcmFtZSogZnJhbWUpCiAgICAg
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNhblJ1bk1vZGFsTm93KCk7Cisg
ICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNhblJ1bk1vZGFsKCk7CiB9CiAKIERPTVdpbmRvdzo6
RE9NV2luZG93KERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggY2ZiZWY2NmVm
MmVhNTZhZjlmMGNkM2NhZTI0ZGZkYWMyNmY5ZTBmYi4uNDQ2ODVmMTNjYzVjN2U2NGI1NjNmYjg3
OTc5Y2VlMWU3MmQ4NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE1Miw2ICsxNTIsMTUgQEAgcHVi
bGljOgogICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lKCkgeyBBU1NFUlQobV9tYWluRnJhbWUpOyBy
ZXR1cm4gKm1fbWFpbkZyYW1lOyB9CiAgICAgY29uc3QgTWFpbkZyYW1lJiBtYWluRnJhbWUoKSBj
b25zdCB7IEFTU0VSVChtX21haW5GcmFtZSk7IHJldHVybiAqbV9tYWluRnJhbWU7IH0KIAorICAg
IGVudW0gY2xhc3MgRGlzbWlzc2FsVHlwZSB7CisgICAgICAgIE5vbmUsCisgICAgICAgIEJlZm9y
ZVVubG9hZCwKKyAgICAgICAgUGFnZUhpZGUsCisgICAgICAgIFVubG9hZAorICAgIH07CisgICAg
RGlzbWlzc2FsVHlwZSBkaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQ7IH0KKyAgICB2b2lkIHNldERpc21p
c3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKERpc21pc3NhbFR5cGUgZGlzbWlzc2FsVHlwZSkgeyBt
X2Rpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gZGlzbWlzc2FsVHlwZTsgfQorCiAgICAg
Ym9vbCBvcGVuZWRCeURPTSgpIGNvbnN0OwogICAgIHZvaWQgc2V0T3BlbmVkQnlET00oKTsKIApA
QCAtNjA3LDYgKzYxNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQ2xvc2luZzsKIAogICAg
IE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX21lZGlhU3RhdGUgeyBNZWRpYVByb2R1
Y2VyOjpJc05vdFBsYXlpbmcgfTsKKyAgICBEaXNtaXNzYWxUeXBlIG1fZGlzbWlzc2FsRXZlbnRC
ZWluZ0Rpc3BhdGNoZWQgeyBEaXNtaXNzYWxUeXBlOjpOb25lIH07CiB9OwogCiBpbmxpbmUgUGFn
ZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTRjNjYxYmE0NzYyMDlhY2U5ODRmYzZjY2Ez
NWZkZWFhYWU1ZjBlYi4uODNkMDYzZTExYmFiZjhkNjQyNTgyZmJkODA3NjUyOTM3ZThkZmE3NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA2LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29udGVudCBjcmFzaCBpbiBXZWJDb3JlOjpQYWdlOjpz
ZXNzaW9uSUQoKSBjb25zdCArIDAgKFBhZ2UuY3BwOjE2NjApCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NDgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIxMjI2NTc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9pbWFnZS1sb2FkLWluLXBhZ2VoaWRlLWhhbmRs
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24v
aW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5kbGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvaW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5k
bGVyLTIuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIG1ha2Ugc3Vy
ZSB0aGF0IHBpbmcgbG9hZHMgaW4gJ3BhZ2VoaWRlJyBoYW5kbGVycyBhcmUKKyAgICAgICAgc3Rp
bGwgZ29pbmcgdGhyb3VnaCBhZnRlciB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtZG8tbG9hZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXBhZ2VoaWRlLXN0YXJ0
cy1sb2FkLWluLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtcGFnZWhpZGUtc3RhcnRzLWxvYWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBhZ2VoaWRlLWhhbmRs
ZXItc3RhcnRzLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUt
aGFuZGxlci1zdGFydHMtbG9hZDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDIu
aHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0cyB0byBtYWtlIHN1cmUgd2Ug
ZG9uJ3QgY3Jhc2ggaWYgYSBmcmFtZSBzdGFydHMgYW4gWEhSIGxvYWQKKyAgICAgICAgZnJvbSB0
aGUgJ3BhZ2VoaWRlJyBldmVudCBoYW5kbGVyLiBPbmUgb2YgdGhlIHRlc3RzIGNvdmVycyB0aGUg
Y2FzZSB3aGVyZSBhCisgICAgICAgIGZyYW1lJ3MgcGFnZWhpZGUgaGFuZGxlciBzdGFydHMgYSBs
b2FkIGluIGEgc3ViZnJhbWUgYXMgdGhpcyBjYXNlIGlzCisgICAgICAgIHJlcXVpcmVzIGEgYml0
IG1vcmUgaGFuZGxpbmcuCisKIDIwMTUtMDYtMDggIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFu
ZGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NTUyBHcmlkIExheW91dF0gU2V0dGluZyBoZWln
aHQgb24gYSBncmlkIGl0ZW0gZG9lc24ndCBoYXZlIGFueSBlZmZlY3QKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9pbWFnZS1sb2FkLWluLXBhZ2VoaWRlLWhh
bmRsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2lt
YWdlLWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFj
NGIzZTdiNWI3MGViMjU4ZWE5MDc4YTIwYzYxZTRlZjRkZGI4NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9pbWFnZS1sb2FkLWluLXBhZ2VoaWRl
LWhhbmRsZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorUGluZyBzZW50IHN1Y2Nlc3Nm
dWxseQorSFRUUF9SRUZFUkVSOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9pbWFn
ZS1sb2FkLWluLXBhZ2VoaWRlLWhhbmRsZXIuaHRtbAorUkVRVUVTVF9NRVRIT0Q6IEdFVApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ltYWdlLWxvYWQtaW4t
cGFnZWhpZGUtaGFuZGxlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L2ltYWdlLWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYmUyMTFi
ODllZjJmMGVmZWVkM2Q0MzlhYjAxNDUwYjlkYmRjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vaW1hZ2UtbG9hZC1pbi1wYWdlaGlkZS1oYW5k
bGVyLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+PGhlYWQ+Cis8dGl0bGU+SW1hZ2UgbG9h
ZCBpbiBwYWdlaGlkZSBoYW5kbGVyPC90aXRsZT4KKzxzY3JpcHQ+CisKK3ZhciB0ZXN0Q2FsbGVk
ID0gZmFsc2U7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgaWYgKCF0ZXN0Q2FsbGVkKSB7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisgICAgICAgIHRlc3RDYWxsZWQgPSB0
cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxvY2F0aW9uLmFzc2lnbigicmVzb3Vy
Y2VzL2ltYWdlLWxvYWQtaW4tcGFnZWhpZGUtaGFuZGxlci0yLmh0bWwiKTsKK30KKworZnVuY3Rp
b24gcGluZygpIHsKKyAgICB2YXIgaW1nID0gbmV3IEltYWdlKDEsIDEpOworICAgIGltZy5zcmMg
PSAicmVzb3VyY2VzL3NhdmUtUGluZy5waHAiOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpOyIgb25wYWdlaGlkZT0icGluZygpOyI+Cis8aW1nIHNyYz0icmVz
b3VyY2VzL2RlbGV0ZS1waW5nLnBocCIgb25sb2FkPSJ0ZXN0KCk7IiBvbmVycm9yPSJ0ZXN0KCk7
Ij48L2ltZz4KKzxwPlRlc3RzIHRoYXQgcGluZyBsb2FkcyBpbiAncGFnZWhpZGUnIGhhbmRsZXJz
IGdvIHRocm91Z2guPC9wPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtZG8tbG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mcmFtZS1kby1sb2FkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDY2NmNiNWE2NDk4M2VlZGRlZjkyMTQ3Y2VlYTAxN2RkYTk3YmQzZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvZnJhbWUtZG8tbG9hZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkb0xvYWQoKQoreworICAgIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3BlbigiR0VUIiwgInJlc291
cmNlcy9zbG93LXJlc291cmNlLnBsP2RlbGF5PTMwMDAiLCB0cnVlKTsKKyAgICB4aHIuc2VuZCgp
OworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXBhZ2VoaWRlLXN0YXJ0cy1s
b2FkLWluLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cmVzb3VyY2VzL2ZyYW1lLXBhZ2VoaWRlLXN0YXJ0cy1sb2FkLWluLXN1YmZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDc0ZmExOTNkZjcxYmUzM2NlOTQ2M2FmMTBmNzI2NzBjYWUwOTVjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMv
ZnJhbWUtcGFnZWhpZGUtc3RhcnRzLWxvYWQtaW4tc3ViZnJhbWUuaHRtbApAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0iZnJhbWUt
ZG8tbG9hZC5odG1sIiBpZD0iZG9Mb2FkU3ViZnJhbWUiPjwvaWZyYW1lPgorPHNjcmlwdD4KK3dp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
Ly8gU3RhcnQgbG9hZCBpbiBzdWJmcmFtZS4KKyAgICB2YXIgc3ViZnJhbWUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZG9Mb2FkU3ViZnJhbWUiKTsKKyAgICBzdWJmcmFtZS5jb250ZW50V2lu
ZG93LmRvTG9hZCgpOworfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2Zy
YW1lLXBhZ2VoaWRlLXN0YXJ0cy1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXBhZ2VoaWRlLXN0YXJ0cy1sb2FkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODMwMmU4MDg0ZWZkYzc2ZDcwZmY1YTYyNWM2NDY3YzdjOWQ0MTcyNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJh
bWUtcGFnZWhpZGUtc3RhcnRzLWxvYWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
InBhZ2VoaWRlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvc2xvdy1yZXNvdXJjZS5w
bD9kZWxheT0zMDAwIiwgdHJ1ZSk7CisgICAgeGhyLnNlbmQoKTsKK30sIGZhbHNlKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9pbWFnZS1sb2FkLWluLXBhZ2VoaWRlLWhhbmRsZXItMi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9pbWFnZS1s
b2FkLWluLXBhZ2VoaWRlLWhhbmRsZXItMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYjMzNGU5ODE4YWFl
OWNiNWVhMzA4OWJlMDBhY2NiZGNmZTBlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ltYWdlLWxvYWQtaW4tcGFnZWhpZGUt
aGFuZGxlci0yLmh0bWwKQEAgLTAsMCArMSwzIEBACis8c2NyaXB0PgorbG9jYXRpb24uaHJlZiA9
ICdjaGVjay1waW5nLnBocD90ZXN0PS9uYXZpZ2F0aW9uL2ltYWdlLWxvYWQtaW4tcGFnZWhpZGUt
aGFuZGxlci5odG1sJzsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBhZ2VoaWRlLWhhbmRsZXItc3RhcnRzLWxvYWQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBh
Z2VoaWRlLWhhbmRsZXItc3RhcnRzLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMzg5
YzI3ZmYwNWY1MGFmYjVhNjY0NGI2NTFlZGQwNTA5YWMyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxl
ci1zdGFydHMtbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgdGhhdCB3
ZSBkb24ndCBjcmFzaCB3aGVuIGEgbG9hZCBpcyBzdGFydGVkIGluIGEgc3ViZnJhbWUgb24gJ3Bh
Z2VoaWRlJyBoYW5kbGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcGFnZXNo
b3cgLSBub3QgZnJvbSBjYWNoZQorcGFnZWhpZGUgLSBlbnRlcmluZyBjYWNoZQorcGFnZXNob3cg
LSBmcm9tIGNhY2hlCitQQVNTIFBhZ2UgZGlkIGVudGVyIGFuZCB3YXMgcmVzdG9yZWQgZnJvbSB0
aGUgcGFnZSBjYWNoZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9z
dWJmcmFtZS1wYWdlaGlkZS1oYW5kbGVyLXN0YXJ0cy1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9h
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQzNmRmMDYyM2FmY2ZlY2E0NmM5OTUwNTNlOGEwMTQwNGRiOTZi
NGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
c3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZC5odG1sCkBAIC0wLDAgKzEsNDcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBhIGxvYWQgaXMg
c3RhcnRlZCBpbiBhIHN1YmZyYW1lIG9uICdwYWdlaGlkZScgaGFuZGxpbmciKTsKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciB0b3RhbExvYWRlZCA9IDA7CisKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNl
c1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
InBhZ2VzaG93IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygicGFnZXNob3cgLSAiICsg
KGV2ZW50LnBlcnNpc3RlZCA/ICIiIDogIm5vdCAiKSArICJmcm9tIGNhY2hlIik7CisKKyAgICBp
ZiAoZXZlbnQucGVyc2lzdGVkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlBhZ2UgZGlkIGVudGVy
IGFuZCB3YXMgcmVzdG9yZWQgZnJvbSB0aGUgcGFnZSBjYWNoZSIpOworICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICB9Cit9LCBmYWxzZSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJw
YWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoInBhZ2VoaWRlIC0gIiArIChl
dmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZW50ZXJpbmcgY2FjaGUiKTsKKyAgICBp
ZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJQYWdlIGRpZCBub3Qg
ZW50ZXIgdGhlIHBhZ2UgY2FjaGUuIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0K
K30sIGZhbHNlKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB0b3RhbExvYWRlZCsrOwor
ICAgIGlmICh0b3RhbExvYWRlZCA8IDIpCisgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIG5l
ZWRzIHRvIGhhcHBlbiBpbiBhIHNldFRpbWVvdXQgYmVjYXVzZSBhIG5hdmlnYXRpb24gaW5zaWRl
IHRoZSBvbmxvYWQgaGFuZGxlciB3b3VsZAorICAgIC8vIG5vdCBjcmVhdGUgYSBoaXN0b3J5IGVu
dHJ5LgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAvLyBGb3JjZSBhIGJhY2sg
bmF2aWdhdGlvbiBiYWNrIHRvIHRoaXMgcGFnZS4KKyAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gInJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIjsKKyAgICB9LCA0MDAwKTsKK30K
KworPC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2ZyYW1l
LXBhZ2VoaWRlLXN0YXJ0cy1sb2FkLmh0bWwiIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBhZ2VoaWRlLWhhbmRs
ZXItc3RhcnRzLWxvYWQyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDM4OWMyN2ZmMDVmNTBh
ZmI1YTY2NDRiNjUxZWRkMDUwOWFjMmEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBhZ2VoaWRlLWhhbmRsZXItc3RhcnRzLWxv
YWQyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyB0aGF0IHdlIGRvbid0IGNy
YXNoIHdoZW4gYSBsb2FkIGlzIHN0YXJ0ZWQgaW4gYSBzdWJmcmFtZSBvbiAncGFnZWhpZGUnIGhh
bmRsaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitwYWdlc2hvdyAtIG5vdCBm
cm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVyaW5nIGNhY2hlCitwYWdlc2hvdyAtIGZyb20gY2Fj
aGUKK1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNh
Y2hlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1lLXBh
Z2VoaWRlLWhhbmRsZXItc3RhcnRzLWxvYWQyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vc3ViZnJhbWUtcGFnZWhpZGUtaGFuZGxlci1zdGFydHMtbG9hZDIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZmQ1ZGM1NDVhZGE2ODUwZTNlYmZlMDA0Njk4MTEwYWNhYjM4NTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1YmZyYW1l
LXBhZ2VoaWRlLWhhbmRsZXItc3RhcnRzLWxvYWQyLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIGEgbG9hZCBpcyBzdGFydGVk
IGluIGEgc3ViZnJhbWUgb24gJ3BhZ2VoaWRlJyBoYW5kbGluZyIpOword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwordmFyIHRvdGFsTG9hZGVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNh
Y2hlUHJlZmVyZW5jZUtleSIsIDEpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZXNo
b3ciLCBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdlc2hvdyAtICIgKyAoZXZlbnQu
cGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImZyb20gY2FjaGUiKTsKKworICAgIGlmIChldmVu
dC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFnZSBkaWQgZW50ZXIgYW5kIHdh
cyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNhY2hlIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0KK30sIGZhbHNlKTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRl
IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygicGFnZWhpZGUgLSAiICsgKGV2ZW50LnBl
cnNpc3RlZCA/ICIiIDogIm5vdCAiKSArICJlbnRlcmluZyBjYWNoZSIpOworICAgIGlmICghZXZl
bnQucGVyc2lzdGVkKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlBhZ2UgZGlkIG5vdCBlbnRlciB0
aGUgcGFnZSBjYWNoZS4iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfSwgZmFs
c2UpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHRvdGFsTG9hZGVkKys7CisgICAgaWYg
KHRvdGFsTG9hZGVkIDwgMikKKyAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgbmVlZHMgdG8g
aGFwcGVuIGluIGEgc2V0VGltZW91dCBiZWNhdXNlIGEgbmF2aWdhdGlvbiBpbnNpZGUgdGhlIG9u
bG9hZCBoYW5kbGVyIHdvdWxkCisgICAgLy8gbm90IGNyZWF0ZSBhIGhpc3RvcnkgZW50cnkuCisg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIC8vIEZvcmNlIGEgYmFjayBuYXZpZ2F0
aW9uIGJhY2sgdG8gdGhpcyBwYWdlLgorICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAicmVz
b3VyY2VzL3BhZ2UtY2FjaGUtaGVscGVyLmh0bWwiOworICAgIH0sIDQwMDApOworfQorCis8L3Nj
cmlwdD4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJyZXNvdXJjZXMvZnJhbWUtcGFnZWhp
ZGUtc3RhcnRzLWxvYWQtaW4tc3ViZnJhbWUuaHRtbCIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZy
YW1lPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>