<?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>196934</bug_id>
          
          <creation_ts>2019-04-15 14:29:34 -0700</creation_ts>
          <short_desc>Add prioritization of ad click conversions and cleaning of sent ad click conversions</short_desc>
          <delta_ts>2019-04-17 14:47:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196838</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="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1527404</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-15 14:29:34 -0700</bug_when>
    <thetext>We should clean the Map in WebKit::AdClickAttributionManager from attributions that have already been converted and sent out.

The fix should cover these comments on the patch in https://bugs.webkit.org/show_bug.cgi?id=196838:

Instead of having one big m_adClickAttributionMap map, it might be better to have two maps:
- One for not yet converted ad click attributions
- One for converted ad click attributions that are pending being sent.
Here, we would only iterate over the second one, which would make earliestTimeToSend always available.

Maybe that would call for two structures, one with an earliestTimeToSend and one without.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527415</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-15 14:32:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/49917773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527977</commentid>
    <comment_count>2</comment_count>
      <attachid>367598</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-16 19:24:51 -0700</bug_when>
    <thetext>Created attachment 367598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528144</commentid>
    <comment_count>3</comment_count>
      <attachid>367598</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-17 10:18:29 -0700</bug_when>
    <thetext>Comment on attachment 367598
Patch

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

&gt; Source/WebCore/loader/AdClickAttribution.h:144
&gt; +        : registrableDomain { WTFMove(domain) }

Bad indentation.

&gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.cpp:74
&gt; +    auto didConvertAttribution = false;

bool

&gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.cpp:79
&gt; +        if (sourceIter-&gt;value.contains(destination)) {

You&apos;re doing a double lookup here, first for contains() then for take(). You can avoid this by using find() instead.

&gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.h:74
&gt; +    HashMap&lt;Source, DestinationMap&gt; m_convertedAdClickAttributionMap;

Could these be written as follows?
HashMap&lt;std::pair&lt;Source, Destination&gt;, AdClickAttribution&gt; ?

If possible, it seems like it&apos;d be simpler to use and easier to reason about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528156</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-17 10:47:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 367598 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367598&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/AdClickAttribution.h:144
&gt; &gt; +        : registrableDomain { WTFMove(domain) }
&gt; 
&gt; Bad indentation.

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.cpp:74
&gt; &gt; +    auto didConvertAttribution = false;
&gt; 
&gt; bool

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.cpp:79
&gt; &gt; +        if (sourceIter-&gt;value.contains(destination)) {
&gt; 
&gt; You&apos;re doing a double lookup here, first for contains() then for take(). You
&gt; can avoid this by using find() instead.

Ah. This was a left over from the when I had the problems with the copy of the ref-counted string. Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.h:74
&gt; &gt; +    HashMap&lt;Source, DestinationMap&gt; m_convertedAdClickAttributionMap;
&gt; 
&gt; Could these be written as follows?
&gt; HashMap&lt;std::pair&lt;Source, Destination&gt;, AdClickAttribution&gt; ?
&gt; 
&gt; If possible, it seems like it&apos;d be simpler to use and easier to reason about.

I think so. I discussed moving to a std::pair it with Joe last night. I&apos;ll take a stab at it.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528251</commentid>
    <comment_count>5</comment_count>
      <attachid>367672</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-17 13:40:28 -0700</bug_when>
    <thetext>Created attachment 367672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528252</commentid>
    <comment_count>6</comment_count>
      <attachid>367672</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-17 13:41:21 -0700</bug_when>
    <thetext>Comment on attachment 367672
Patch

Just letting it run on EWS to see that everything is OK before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528277</commentid>
    <comment_count>7</comment_count>
      <attachid>367672</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-17 14:47:10 -0700</bug_when>
    <thetext>Comment on attachment 367672
Patch

Clearing flags on attachment: 367672

Committed r244402: &lt;https://trac.webkit.org/changeset/244402&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528278</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-17 14:47:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367598</attachid>
            <date>2019-04-16 19:24:51 -0700</date>
            <delta_ts>2019-04-17 13:40:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196934-20190416192450.patch</filename>
            <type>text/plain</type>
            <size>49728</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZjMzM1YWM4ZThiYTc2
NzU2MzdiN2I3N2QyMzFjMWU1NzIxYjFiNy4uODk4NzRmYzY1YzkzMGNkOWE1MjYyZWUyMjQzZjk1
MjhhNTlkOWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA0LTE2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwcmlvcml0aXph
dGlvbiBvZiBhZCBjbGljayBjb252ZXJzaW9ucyBhbmQgY2xlYW5pbmcgb2Ygc2VudCBhZCBjbGlj
ayBjb252ZXJzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk2OTM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTkxNzc3Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWhp
Z2hlci1wcmlvcml0eS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93ZXItcHJpb3JpdHku
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25k
LWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1w
cmlvcml0eS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6aGFzTG93ZXJQcmlvcml0eVRo
YW4gY29uc3QpOgorICAgICAgICAgICAgQWRkZWQgdG8gZmFjaWxpdGF0ZSBwcmlvcml0eSBjb21w
YXJpc29uIGJldHdlZW4gdHdvIGF0dHJpYnV0aW9ucy4KKyAgICAgICAgKiBsb2FkZXIvQWRDbGlj
a0F0dHJpYnV0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OkRl
c3RpbmF0aW9uOjpEZXN0aW5hdGlvbik6CisgICAgICAgICAgICBBZGRlZCBhIFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSBjb25zdHJ1Y3RvciBhbmQgYSBtb3ZlIGNvbnN0cnVjdG9yLgor
CiAyMDE5LTA0LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VVJMIHNldCBieSBkb2N1bWVudC5vcGVuKCkgaXMgbm90IGNvbW11bmljYXRlZCB0byB0aGUgVUlQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDFlNmQ3MjNjN2FlMDlmNTI4ZmYwMDU4YTcyNzJiYWQyYWEyYTZj
NzYuLjRmMGQzMWM2MzgwNmEyOWRmM2I4MDBkMGY4M2Q3ODIwMDgyNDFkOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTktMDQtMTYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHByaW9yaXRpemF0aW9uIG9mIGFkIGNsaWNrIGNvbnZlcnNp
b25zIGFuZCBjbGVhbmluZyBvZiBzZW50IGFkIGNsaWNrIGNvbnZlcnNpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY5MzQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ5OTE3NzczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluIHRoaXMgZGVzY3JpcHRpb24sIGJ5ICJwYWlyIiBJIG1lYW4geyBB
ZENsaWNrQXR0cmlidXRpb246OlNvdXJjZSwgQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlv
biB9LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBoYW5kbGluZyBvZiBwcmlvcml0aXphdGlv
biBvZiBjb252ZXJzaW9ucyBhY2NvcmRpbmcgdG8gdGhlc2UgcnVsZXM6CisgICAgICAgIC0gSWYg
d2UgaGF2ZSBhIG1hdGNoaW5nIHVuY29udmVydGVkIGF0dHJpYnV0aW9uLCBjb252ZXJ0IGl0LiBU
aGlzIGNvbnN1bWVzIHRoZSBjb252ZXJzaW9uLgorICAgICAgICAtIElmIHdlIGhhdmUgbm8gcHJl
dmlvdXNseSBjb252ZXJ0ZWQgYXR0cmlidXRpb24gZm9yIHRoaXMgcGFpciwganVzdCBzdG9yZS4K
KyAgICAgICAgLSBJZiB3ZSBoYXZlIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYXR0cmlidXRpb24g
Zm9yIHRoaXMgcGFpciwgc3RvcmUgaWYgdGhlIG5ldyBvbmUgaGFzIGhpZ2hlciBwcmlvcml0eS4K
KyAgICAgICAgLSBJZiB3ZSBoYWQgbm8gbWF0Y2hpbmcgdW5jb252ZXJ0ZWQgYXR0cmlidXRpb24g
YnV0IGRvIGhhdmUgYSBwcmV2aW91c2x5IGNvbnZlcnRlZCBhdHRyaWJ1dGlvbiBmb3IgdGhpcwor
ICAgICAgICBwYWlyLCByZS1jb252ZXJ0IHRoZSBwcmV2aW91c2x5IGNvbnZlcnRlZCBhdHRyaWJ1
dGlvbiB0byBtYWtlIHRoZSBoaWdoZXN0IHByaW9yaXR5IGdldHMgc2V0LgorCisgICAgICAgIFRo
aXMgaXMgaW4gcGFydCBkb25lIGJ5IGRpdmlkaW5nIHRoZSBwcmV2aW91cyBtX2FkQ2xpY2tBdHRy
aWJ1dGlvbk1hcCBpbnRvIAorICAgICAgICBtX3VuY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9u
TWFwIGFuZCBtX2NvbnZlcnRlZEFkQ2xpY2tBdHRyaWJ1dGlvbk1hcC4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gY2hhbmdlcyBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpmaXJlUGVuZGlu
Z0NvbnZlcnNpb25SZXF1ZXN0cygpIHNvIHRoYXQgaXQgbm93CisgICAgICAgIHJlbW92ZXMgYXR0
cmlidXRpb25zIHdoaWNoIGhhdmUgYmVlbiBzZW50IG91dC4KKworICAgICAgICBGaW5hbGx5LCBB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpjbGVhcigpIG5vIGxvbmdlciBjbGVhcnMgbV9jb252
ZXJzaW9uQmFzZVVSTEZvclRlc3RpbmcgYW5kCisgICAgICAgIG1faXNSdW5uaW5nVGVzdCBzaW5j
ZSBkb2luZyBzbyBjYXVzZWQgdGVzdCBmbGFraW5lc3MuIEl0IGlzIG5vdyB1cCB0byB0aGUgdGVz
dCBjYXNlIHRoYXQgc2V0cyB0aGVzZQorICAgICAgICBtZW1iZXJzIHRvIGFsc28gY2xlYXIgdGhl
bSB3aGVuIGRvbmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdl
cjo6c3RvcmVVbmNvbnZlcnRlZCk6CisgICAgICAgIChXZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlv
bk1hbmFnZXI6OnN0b3JlQ29udmVydGVkKToKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlcjo6Y29udmVydCk6CisgICAgICAgIChXZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1
dGlvbk1hbmFnZXI6OmZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzKToKKyAgICAgICAgKFdl
YktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0
OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnNldENvbnZlcnNpb25VUkxGb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6ZW5zdXJl
RGVzdGluYXRpb25NYXBGb3JTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyOjpzdG9yZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6c2V0Q29udmVyc2lvblVS
TEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnN0b3JlQWRDbGlj
a0F0dHJpYnV0aW9uKToKKwogMjAxOS0wNC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0NDE2MikgQ2xlYXJpbmcg
d2Vic2l0ZSBkYXRhIGZyb20gZXBoZW1lcmFsIFdLV2Vic2l0ZURhdGFTdG9yZSBzaG91bGQgZmlu
aXNoIGluc3RlYWQgb2YgYXNzZXJ0aW5nIG9yIGhhbmdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKaW5kZXggZjE2Yzk0YzI2MDI5YmY1MjMxZDczYzU0
OWI5MjUyMGMyMzBkMTdjNy4uNTA5YWQ0OTYwNGI2ZWQ2ZWVlOTFlNDU2OWY2ZDU2YmJjNTQ1YWNi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKQEAg
LTkzLDYgKzkzLDE3IEBAIE9wdGlvbmFsPFNlY29uZHM+IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6Y29u
dmVydEFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChDb252ZXJzaW9uCiAgICAgcmV0dXJuIHNlY29u
ZHM7CiB9CiAKK2Jvb2wgQWRDbGlja0F0dHJpYnV0aW9uOjpoYXNMb3dlclByaW9yaXR5VGhhbihj
b25zdCBBZENsaWNrQXR0cmlidXRpb24mIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXIu
bV9jb252ZXJzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFtX2Nv
bnZlcnNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIG1fY29udmVyc2lv
bi0+cHJpb3JpdHkgPCBvdGhlci5tX2NvbnZlcnNpb24tPnByaW9yaXR5OworfQorCiBVUkwgQWRD
bGlja0F0dHJpYnV0aW9uOjp1cmwoKSBjb25zdAogewogICAgIGlmICghaXNWYWxpZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oCmluZGV4IDBlZjMwZGRhZjZk
MDRiMTkwZjU1NzM1Nzg0ZWQ1NTc2ZTg4NWE2MGIuLjMyNzRmYzQzYzQ0MmMzOWE1YzJlYjUxZGY5
YTZlNTkwYTVmMTdiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNr
QXR0cmlidXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0
aW9uLmgKQEAgLTEzNSwxMSArMTM1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgZXhwbGljaXQgRGVzdGluYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbikKLSAgICAgICAgICAgIDogcmVnaXN0cmFibGVEb21haW4geyBkb21haW4gfQorICAg
ICAgICBleHBsaWNpdCBEZXN0aW5hdGlvbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
CisgICAgICAgICAgICA6IHJlZ2lzdHJhYmxlRG9tYWluIHsgV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWUgfQogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBleHBsaWNpdCBEZXN0aW5h
dGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKKyAgICAgICAgOiByZWdpc3RyYWJsZURv
bWFpbiB7IFdURk1vdmUoZG9tYWluKSB9CisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0aW9uJiBvdGhlcikgY29uc3QK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluID09IG90aGVy
LnJlZ2lzdHJhYmxlRG9tYWluOwpAQCAtMjM2LDYgKzI0MSw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxDb252ZXJzaW9uPiBwYXJzZUNvbnZlcnNpb25S
ZXF1ZXN0KGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFNlY29uZHM+IGNvbnZlcnRBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoQ29udmVyc2lvbiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0xvd2VyUHJpb3JpdHlUaGFuKGNvbnN0IEFk
Q2xpY2tBdHRyaWJ1dGlvbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB1cmwoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdXJsRm9yVGVzdGluZyhjb25zdCBVUkwmIGJh
c2VVUkxGb3JUZXN0aW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVmZXJyZXIo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlj
a0F0dHJpYnV0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Fk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCmluZGV4IGQ3NGIwMDZkN2Q4ODNiODg2ZmFkZjBi
ZDY2ZTRkZWE4Mzk1NmI0Y2MuLjhiMDhkNWZkZDI1YzlhYzM4Zjk5N2YwZTY3MmU3OTY5YTQyMTNl
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcApAQCAtNDMsMTYgKzQzLDE5IEBAIHVzaW5nIERlc3Rp
bmF0aW9uID0gQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbjsKIHVzaW5nIERlc3RpbmF0
aW9uTWFwID0gSGFzaE1hcDxEZXN0aW5hdGlvbiwgQWRDbGlja0F0dHJpYnV0aW9uPjsKIHVzaW5n
IENvbnZlcnNpb24gPSBBZENsaWNrQXR0cmlidXRpb246OkNvbnZlcnNpb247CiAKLURlc3RpbmF0
aW9uTWFwJiBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjplbnN1cmVEZXN0aW5hdGlvbk1hcEZv
clNvdXJjZShjb25zdCBTb3VyY2UmIHNvdXJjZSkKK3ZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlcjo6c3RvcmVVbmNvbnZlcnRlZChBZENsaWNrQXR0cmlidXRpb24mJiBhZENsaWNrQXR0cmli
dXRpb24pCiB7Ci0gICAgcmV0dXJuIG1fYWRDbGlja0F0dHJpYnV0aW9uTWFwLmVuc3VyZShzb3Vy
Y2UsIFtdIHsKKyAgICBhdXRvJiBkZXN0aW5hdGlvbk1hcEZvclNvdXJjZSA9IG1fdW5jb252ZXJ0
ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuZW5zdXJlKGFkQ2xpY2tBdHRyaWJ1dGlvbi5zb3VyY2Uo
KSwgW10gewogICAgICAgICByZXR1cm4gRGVzdGluYXRpb25NYXAgeyB9OwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICBkZXN0aW5hdGlvbk1hcEZvclNvdXJjZS5hZGQoYWRDbGlja0F0dHJp
YnV0aW9uLmRlc3RpbmF0aW9uKCksIFdURk1vdmUoYWRDbGlja0F0dHJpYnV0aW9uKSk7CiB9CiAK
LXZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6c3RvcmUoQWRDbGlja0F0dHJpYnV0aW9u
JiYgYWRDbGlja0F0dHJpYnV0aW9uKQordm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpz
dG9yZUNvbnZlcnRlZChBZENsaWNrQXR0cmlidXRpb24mJiBhZENsaWNrQXR0cmlidXRpb24pCiB7
Ci0gICAgYXV0byYgZGVzdGluYXRpb25NYXBGb3JTb3VyY2UgPSBlbnN1cmVEZXN0aW5hdGlvbk1h
cEZvclNvdXJjZShhZENsaWNrQXR0cmlidXRpb24uc291cmNlKCkpOworICAgIGF1dG8mIGRlc3Rp
bmF0aW9uTWFwRm9yU291cmNlID0gbV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuZW5z
dXJlKGFkQ2xpY2tBdHRyaWJ1dGlvbi5zb3VyY2UoKSwgW10geworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25NYXAgeyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBkZXN0aW5hdGlv
bk1hcEZvclNvdXJjZS5hZGQoYWRDbGlja0F0dHJpYnV0aW9uLmRlc3RpbmF0aW9uKCksIFdURk1v
dmUoYWRDbGlja0F0dHJpYnV0aW9uKSk7CiB9CiAKQEAgLTY2LDIzICs2OSw0OSBAQCB2b2lkIEFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNvbnZlcnQoY29uc3QgU291cmNlJiBzb3VyY2UsIGNv
bnN0IERlc3RpbmF0aW9uJgogICAgIGlmICghY29udmVyc2lvbi5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gc291cmNlSXRlciA9IG1fYWRDbGlja0F0dHJpYnV0aW9uTWFw
LmZpbmQoc291cmNlKTsKLSAgICBpZiAoc291cmNlSXRlciA9PSBtX2FkQ2xpY2tBdHRyaWJ1dGlv
bk1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9
IFNlY29uZHM6OmluZmluaXR5KCk7CisgICAgQWRDbGlja0F0dHJpYnV0aW9uIHByZXZpb3VzbHlV
bmNvbnZlcnRlZEF0dHJpYnV0aW9uOworICAgIGF1dG8gZGlkQ29udmVydEF0dHJpYnV0aW9uID0g
ZmFsc2U7CisKKyAgICAvLyBBbHdheXMgY29udmVydCBhbnkgcGVuZGluZyBhdHRyaWJ1dGlvbiBh
bmQgcmVtb3ZlIGl0IGZyb20gdGhlIHVuY29udmVydGVkIG1hcC4KKyAgICBhdXRvIHNvdXJjZUl0
ZXIgPSBtX3VuY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwLmZpbmQoc291cmNlKTsKKyAg
ICBpZiAoc291cmNlSXRlciAhPSBtX3VuY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwLmVu
ZCgpKSB7CisgICAgICAgIGlmIChzb3VyY2VJdGVyLT52YWx1ZS5jb250YWlucyhkZXN0aW5hdGlv
bikpIHsKKyAgICAgICAgICAgIHByZXZpb3VzbHlVbmNvbnZlcnRlZEF0dHJpYnV0aW9uID0gc291
cmNlSXRlci0+dmFsdWUudGFrZShkZXN0aW5hdGlvbik7CisgICAgICAgICAgICBpZiAoYXV0byBv
cHRpb25hbFNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5VW5jb252ZXJ0ZWRBdHRyaWJ1dGlv
bi5jb252ZXJ0QW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1vdmUoY29udmVyc2lvbikpKSB7
CisgICAgICAgICAgICAgICAgc2Vjb25kc1VudGlsU2VuZCA9ICpvcHRpb25hbFNlY29uZHNVbnRp
bFNlbmQ7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlY29uZHNVbnRpbFNlbmQgIT0gU2Vjb25k
czo6aW5maW5pdHkoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkaWRDb252ZXJ0QXR0
cmlidXRpb24gPSB0cnVlOworICAgICAgICB9CisgICAgfQogCi0gICAgYXV0byBkZXN0aW5hdGlv
bkl0ZXIgPSBzb3VyY2VJdGVyLT52YWx1ZS5maW5kKGRlc3RpbmF0aW9uKTsKLSAgICBpZiAoZGVz
dGluYXRpb25JdGVyID09IHNvdXJjZUl0ZXItPnZhbHVlLmVuZCgpKQotICAgICAgICByZXR1cm47
CisgICAgc291cmNlSXRlciA9IG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwLmZpbmQo
c291cmNlKTsKKyAgICAvLyBJZiB0aGVyZSBpcyBubyBwcmV2aW91cyBjb252ZXJ0ZWQgYXR0cmli
dXRpb24gZm9yIHRoaXMgcGFpciwgc3RvcmUgdGhlIG5ldyBvbmUuCisgICAgaWYgKGRpZENvbnZl
cnRBdHRyaWJ1dGlvbiAmJiBzb3VyY2VJdGVyID09IG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0
aW9uTWFwLmVuZCgpKQorICAgICAgICBzdG9yZUNvbnZlcnRlZChXVEZNb3ZlKHByZXZpb3VzbHlV
bmNvbnZlcnRlZEF0dHJpYnV0aW9uKSk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gZGVzdGlu
YXRpb25JdGVyID0gc291cmNlSXRlci0+dmFsdWUuZmluZChkZXN0aW5hdGlvbik7CisgICAgICAg
IC8vIElmIHRoZSBuZXdseSBjb252ZXJ0ZWQgYXR0cmlidXRpb24gaGFzIGhpZ2hlciBwcmlvcml0
eSwgcmVwbGFjZSB0aGUgb2xkIG9uZS4KKyAgICAgICAgaWYgKGRpZENvbnZlcnRBdHRyaWJ1dGlv
biAmJiAoZGVzdGluYXRpb25JdGVyID09IHNvdXJjZUl0ZXItPnZhbHVlLmVuZCgpIHx8IGRlc3Rp
bmF0aW9uSXRlci0+dmFsdWUuaGFzTG93ZXJQcmlvcml0eVRoYW4ocHJldmlvdXNseVVuY29udmVy
dGVkQXR0cmlidXRpb24pKSkgeworICAgICAgICAgICAgc291cmNlSXRlci0+dmFsdWUucmVtb3Zl
KGRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIHN0b3JlQ29udmVydGVkKFdURk1vdmUocHJldmlv
dXNseVVuY29udmVydGVkQXR0cmlidXRpb24pKTsKKyAgICAgICAgfSBlbHNlIGlmICghZGlkQ29u
dmVydEF0dHJpYnV0aW9uICYmIGRlc3RpbmF0aW9uSXRlciAhPSBzb3VyY2VJdGVyLT52YWx1ZS5l
bmQoKSkgeworICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBuZXdseSBjb252ZXJ0ZWQgYXR0
cmlidXRpb24sIHJlLWNvbnZlcnQgdGhlIHByZXZpb3VzIG9uZSB0byByZXNwZWN0IHRoZSBuZXcg
cHJpb3JpdHkuCisgICAgICAgICAgICBpZiAoYXV0byBvcHRpb25hbFNlY29uZHNVbnRpbFNlbmQg
PSBkZXN0aW5hdGlvbkl0ZXItPnZhbHVlLmNvbnZlcnRBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQo
V1RGTW92ZShjb252ZXJzaW9uKSkpIHsKKyAgICAgICAgICAgICAgICBzZWNvbmRzVW50aWxTZW5k
ID0gKm9wdGlvbmFsU2Vjb25kc1VudGlsU2VuZDsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2Vj
b25kc1VudGlsU2VuZCAhPSBTZWNvbmRzOjppbmZpbml0eSgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KIAotICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9IGRlc3RpbmF0aW9u
SXRlci0+dmFsdWUuY29udmVydEFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGNvbnZl
cnNpb24pKTsKLSAgICAKLSAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQpCisgICAgaWYgKHNlY29u
ZHNVbnRpbFNlbmQgPT0gU2Vjb25kczo6aW5maW5pdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGlmIChtX2ZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzVGltZXIuaXNBY3RpdmUo
KSAmJiBtX2ZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzVGltZXIubmV4dEZpcmVJbnRlcnZh
bCgpIDwgKnNlY29uZHNVbnRpbFNlbmQpCisgICAgaWYgKG1fZmlyZVBlbmRpbmdDb252ZXJzaW9u
UmVxdWVzdHNUaW1lci5pc0FjdGl2ZSgpICYmIG1fZmlyZVBlbmRpbmdDb252ZXJzaW9uUmVxdWVz
dHNUaW1lci5uZXh0RmlyZUludGVydmFsKCkgPCBzZWNvbmRzVW50aWxTZW5kKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgc3RhcnRUaW1lcigqc2Vjb25kc1VudGlsU2VuZCk7CisgICAgc3Rh
cnRUaW1lcihzZWNvbmRzVW50aWxTZW5kKTsKIH0KIAogdm9pZCBBZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0dHJpYnV0aW9uJiBh
dHRyaWJ1dGlvbikKQEAgLTEzMyw3ICsxNjIsNyBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1h
bmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBBZENsaWNrQXR0cmlidXRpb24mCiB2
b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVl
c3RzKCkKIHsKICAgICBhdXRvIG5leHRUaW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5pdHkoKTsK
LSAgICBmb3IgKGF1dG8mIGlubmVyTWFwIDogbV9hZENsaWNrQXR0cmlidXRpb25NYXAudmFsdWVz
KCkpIHsKKyAgICBmb3IgKGF1dG8mIGlubmVyTWFwIDogbV9jb252ZXJ0ZWRBZENsaWNrQXR0cmli
dXRpb25NYXAudmFsdWVzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBhdHRyaWJ1dGlvbiA6IGlu
bmVyTWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRpb24ud2FzQ29udmVy
c2lvblNlbnQoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTQ1LDcgKzE3NCw3IEBAIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6ZmlyZVBlbmRp
bmdDb252ZXJzaW9uUmVxdWVzdHMoKQogCiAgICAgICAgICAgICBhdXRvIG5vdyA9IFdhbGxUaW1l
Ojpub3coKTsKICAgICAgICAgICAgIGlmICgqZWFybGllc3RUaW1lVG9TZW5kIDw9IG5vdyB8fCBt
X2lzUnVubmluZ1Rlc3QpIHsKLSAgICAgICAgICAgICAgICBmaXJlQ29udmVyc2lvblJlcXVlc3Qo
YXR0cmlidXRpb24pOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmaXJlQ29udmVy
c2lvblJlcXVlc3QoYXR0cmlidXRpb24pOwogICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uLm1h
cmtDb252ZXJzaW9uQXNTZW50KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CkBAIC0xNTMsMzMgKzE4Miw1MyBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFn
ZXI6OmZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzKCkKICAgICAgICAgICAgIGF1dG8gc2Vj
b25kcyA9ICplYXJsaWVzdFRpbWVUb1NlbmQgLSBub3c7CiAgICAgICAgICAgICBuZXh0VGltZVRv
RmlyZSA9IHN0ZDo6bWluKG5leHRUaW1lVG9GaXJlLCBzZWNvbmRzKTsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaW5uZXJNYXAucmVtb3ZlSWYoW10oYXV0byYga2V5QW5kVmFsdWUpIHsK
KyAgICAgICAgICAgIHJldHVybiBrZXlBbmRWYWx1ZS52YWx1ZS53YXNDb252ZXJzaW9uU2VudCgp
OworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobmV4dFRpbWVUb0ZpcmUgPCBTZWNvbmRz
OjppbmZpbml0eSgpKQogICAgICAgICBzdGFydFRpbWVyKG5leHRUaW1lVG9GaXJlKTsKLQotICAg
IC8vIEZJWE1FOiBBZGQgY2xlYW5pbmcgb2Ygc2VudCBjb252ZXJzaW9ucy4KIH0KIAogdm9pZCBB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9hZENsaWNrQXR0cmlidXRpb25NYXAuY2xl
YXIoKTsKLSAgICBtX2NvbnZlcnNpb25CYXNlVVJMRm9yVGVzdGluZyA9IHsgfTsKLSAgICBtX2lz
UnVubmluZ1Rlc3QgPSBmYWxzZTsKKyAgICBtX2ZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3Rz
VGltZXIuc3RvcCgpOworICAgIG1fdW5jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuY2xl
YXIoKTsKKyAgICBtX2NvbnZlcnRlZEFkQ2xpY2tBdHRyaWJ1dGlvbk1hcC5jbGVhcigpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdl
cjo6dG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBjb25zdAogewotICAgIGlmIChtX2FkQ2xpY2tBdHRyaWJ1dGlvbk1hcC5pc0VtcHR5
KCkpCisgICAgaWYgKG1fdW5jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuaXNFbXB0eSgp
ICYmIG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCJObyBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24g
ZGF0YS4iX3MpOwogCisgICAgdW5zaWduZWQgdW5jb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlciA9
IDA7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZvciAoYXV0byYgaW5uZXJNYXAg
OiBtX2FkQ2xpY2tBdHRyaWJ1dGlvbk1hcC52YWx1ZXMoKSkgewotICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGlvbk51bWJlciA9IDE7CisgICAgZm9yIChhdXRvJiBpbm5lck1hcCA6IG1fdW5jb252
ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAudmFsdWVzKCkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBhdHRyaWJ1dGlvbiA6IGlubmVyTWFwLnZhbHVlcygpKSB7CisgICAgICAgICAgICBpZiAoIXVu
Y29udmVydGVkQXR0cmlidXRpb25OdW1iZXIpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJVbmNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnM6XG4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
ICIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYXR0cmlidXRpb25OdW1iZXIr
Kyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcigrK3VuY29udmVydGVkQXR0cmli
dXRpb25OdW1iZXIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGlvbi50b1N0cmluZygpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZvciAoYXV0byYgaW5uZXJNYXAgOiBtX2NvbnZlcnRlZEFkQ2xpY2tBdHRy
aWJ1dGlvbk1hcC52YWx1ZXMoKSkgeworICAgICAgICB1bnNpZ25lZCBjb252ZXJ0ZWRBdHRyaWJ1
dGlvbk51bWJlciA9IDA7CisgICAgICAgIGZvciAoYXV0byYgYXR0cmlidXRpb24gOiBpbm5lck1h
cC52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJl
cikKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkNvbnZlcnRlZCBBZCBD
bGljayBBdHRyaWJ1dGlvbnM6XG4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uICIpOworICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmROdW1iZXIoKytjb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlciArIHVuY29udmVydGVkQXR0
cmlidXRpb25OdW1iZXIpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGlvbi50b1N0cmluZygpKTsKICAgICAgICAg
fQpAQCAtMTg4LDQgKzIzNywxMiBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnRv
U3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbAogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKK3ZvaWQgQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlcjo6c2V0Q29udmVyc2lvblVSTEZvclRlc3RpbmcoVVJMJiYgdGVzdFVSTCkK
K3sKKyAgICBpZiAodGVzdFVSTC5pc0VtcHR5KCkpCisgICAgICAgIG1fY29udmVyc2lvbkJhc2VV
UkxGb3JUZXN0aW5nID0geyB9OworICAgIGVsc2UKKyAgICAgICAgbV9jb252ZXJzaW9uQmFzZVVS
TEZvclRlc3RpbmcgPSBXVEZNb3ZlKHRlc3RVUkwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggN2Q5OGZiNWUyYmQ2NDUwY2JmYmRhOTI1ODJmNjlmNmFm
YzdiNmZiYS4uMzI5ZTRhMzdiZTg2ZGIxNjg5YWZmNjRkMWZjZGY2ZjQyNmQ0Zjk5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyLmgKQEAgLTQ5LDI4ICs0OSwyOSBAQCBwdWJsaWM6CiAKICAgICBBZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyKCkKICAgICAgICAgOiBtX2ZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVl
c3RzVGltZXIoKnRoaXMsICZBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpmaXJlUGVuZGluZ0Nv
bnZlcnNpb25SZXF1ZXN0cykKLSAgICAsIG1fcGluZ0xvYWRGdW5jdGlvbihbXShOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShwYXJhbXMp
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UoKSk7Ci0gICAgfSkKKyAgICAgICAgLCBtX3BpbmdMb2Fk
RnVuY3Rpb24oW10oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UoKSk7
CisgICAgICAgIH0pCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc3RvcmUoQWRDbGlja0F0dHJp
YnV0aW9uJiYpOworICAgIHZvaWQgc3RvcmVVbmNvbnZlcnRlZChBZENsaWNrQXR0cmlidXRpb24m
Jik7CiAgICAgdm9pZCBjb252ZXJ0KGNvbnN0IFNvdXJjZSYsIGNvbnN0IERlc3RpbmF0aW9uJiwg
Q29udmVyc2lvbiYmKTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCB0b1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYp
IGNvbnN0OwogICAgIHZvaWQgc2V0UGluZ0xvYWRGdW5jdGlvbihGdW5jdGlvbjx2b2lkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KT4mJik+JiYgcGluZ0xvYWRGdW5jdGlvbikgeyBtX3BpbmdMb2FkRnVuY3Rpb24gPSBXVEZNb3Zl
KHBpbmdMb2FkRnVuY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyhib29sIHZhbHVlKSB7IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRD
b252ZXJzaW9uVVJMRm9yVGVzdGluZyhVUkwmJiB0ZXN0VVJMKSB7IG1fY29udmVyc2lvbkJhc2VV
UkxGb3JUZXN0aW5nID0gV1RGTW92ZSh0ZXN0VVJMKTsgfQorICAgIHZvaWQgc2V0Q29udmVyc2lv
blVSTEZvclRlc3RpbmcoVVJMJiYpOwogCiBwcml2YXRlOgotICAgIERlc3RpbmF0aW9uTWFwJiBl
bnN1cmVEZXN0aW5hdGlvbk1hcEZvclNvdXJjZShjb25zdCBTb3VyY2UmKTsKKyAgICB2b2lkIHN0
b3JlQ29udmVydGVkKEFkQ2xpY2tBdHRyaWJ1dGlvbiYmKTsKICAgICB2b2lkIHN0YXJ0VGltZXIo
U2Vjb25kcyk7CiAgICAgdm9pZCBmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0
dHJpYnV0aW9uJik7CiAgICAgdm9pZCBmaXJlUGVuZGluZ0NvbnZlcnNpb25SZXF1ZXN0cygpOwog
Ci0gICAgSGFzaE1hcDxTb3VyY2UsIERlc3RpbmF0aW9uTWFwPiBtX2FkQ2xpY2tBdHRyaWJ1dGlv
bk1hcDsKKyAgICBIYXNoTWFwPFNvdXJjZSwgRGVzdGluYXRpb25NYXA+IG1fdW5jb252ZXJ0ZWRB
ZENsaWNrQXR0cmlidXRpb25NYXA7CisgICAgSGFzaE1hcDxTb3VyY2UsIERlc3RpbmF0aW9uTWFw
PiBtX2NvbnZlcnRlZEFkQ2xpY2tBdHRyaWJ1dGlvbk1hcDsKICAgICBXZWJDb3JlOjpUaW1lciBt
X2ZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzVGltZXI7CiAgICAgRnVuY3Rpb248dm9pZChO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik+JiYpPiBtX3BpbmdMb2FkRnVuY3Rpb247CiAgICAgYm9vbCBtX2lzUnVubmluZ1Rlc3Qg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAppbmRleCBlZDEzOGMyZTJmY2ZmMGY5ZjUxOTQzZDQ0NTg0YmRmNmRiN2Y3ZWUwLi5m
NzA2MjEzMzZhNGNlYTQ5ZGU1ZWUyOWIwZGU4YTVhNzZjNmQxMjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlCiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnN0b3Jl
QWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiYmIGFkQ2xpY2tB
dHRyaWJ1dGlvbikKIHsKLSAgICBtX2FkQ2xpY2tBdHRyaWJ1dGlvbi0+c3RvcmUoV1RGTW92ZShh
ZENsaWNrQXR0cmlidXRpb24pKTsKKyAgICBtX2FkQ2xpY2tBdHRyaWJ1dGlvbi0+c3RvcmVVbmNv
bnZlcnRlZChXVEZNb3ZlKGFkQ2xpY2tBdHRyaWJ1dGlvbikpOwogfQogCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpjb252ZXJ0QWRDbGlja0F0dHJpYnV0aW9uKGNvbnN0IFdlYkNvcmU6OkFkQ2xpY2tB
dHRyaWJ1dGlvbjo6U291cmNlJiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1
dGlvbjo6RGVzdGluYXRpb24mIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRp
b246OkNvbnZlcnNpb24mJiBjb252ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI2NDdiNjlmMDM1ZWY2NWRhMzVm
MGUwYmViYTc4MjQ3YzcxZDU0ZWEuLjg4ZmE4MTViMjU2ZWZmZmJiMTQ0Y2EwYjU5M2RiOTllMTBh
YTgwNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxOS0wNC0xNiAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJpb3JpdGl6YXRpb24gb2YgYWQg
Y2xpY2sgY29udmVyc2lvbnMgYW5kIGNsZWFuaW5nIG9mIHNlbnQgYWQgY2xpY2sgY29udmVyc2lv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Njkz
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDk5MTc3NzM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRp
cmVjdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGgtcHJp
b3JpdHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0
LXByaW9yaXR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRhdGEucGhwOgorICAgICAgICAqIGh0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9yZWRpcmVjdFRvQ29udmVyc2lvbi5w
aHA6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJp
YnV0aW9uLWNvbnZlcnRlZC13aXRoLWhpZ2hlci1wcmlvcml0eS1leHBlY3RlZC50eHQ6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0
aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5LWV4
cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNv
bmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1
dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS1leHBlY3RlZC50eHQ6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9u
LWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9yaXR5LWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0
cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0
aC1oaWdoZXItcHJpb3JpdHktZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91
Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS1leHBlY3RlZC50eHQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1o
aWdoZXItcHJpb3JpdHkuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS1leHBlY3Rl
ZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0
LXByaW9yaXR5LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRp
b24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNs
aWNrLWF0dHJpYnV0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0wNC0xNiAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXQgdGVzdCBjb25kaXRpb25zIGNs
b3NlciB0byBjb252ZXJzaW9uIHJlZGlyZWN0IGluIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRD
bGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0
dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0
dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0LWV4
cGVjdGVkLnR4dAppbmRleCA1ZDZmYzZjMzA2ODRmZTg4MWI3ZjI1M2Y3MmNjODNmYmNjMzlhYTNi
Li5mZWE1ZTYxZmM4NWNkZjU0MmY5MTc1MzNmYWJmYmI4MzVkNjhlNjU4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252
ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24t
Y29udmVyc2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2UtcmVkaXJlY3QtZXhwZWN0ZWQudHh0
CkBAIC0xLDYgKzEsNyBAQAogVGVzdHMgdGhhdCB0cmlnZ2VyaW5nIG9mIGFkIGNsaWNrIGF0dHJp
YnV0aW9uIGNvbnZlcnNpb25zIHRocm91Z2ggY3Jvc3Mtc2l0ZSByZWRpcmVjdHMgZG8gbm90IHdv
cmsuCiAKIAorVW5jb252ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgogV2ViQ29yZTo6QWRD
bGlja0F0dHJpYnV0aW9uIDEKIFNvdXJjZTogMTI3LjAuMC4xCiBEZXN0aW5hdGlvbjogbG9jYWxo
b3N0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlv
cml0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1w
cmlvcml0eS1leHBlY3RlZC50eHQKaW5kZXggZGY0MTg1MzY5ZjVlMDI3YWM1MzQ2YWU3MzdlM2Y2
OTk5ODE3YjZkMS4uNTk3ZjY1Y2QxOGQ1OTQwODE5NzcwOGY3MGVhNDJlNDAzZWQwYWRkMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmli
dXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGgtcHJpb3JpdHktZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9y
aXR5LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDcgQEAKIFRlc3RzIHRyaWdnZXJpbmcgb2YgYWQg
Y2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgd2l0aCBwcmlvcml0eS4KIAogCitDb252ZXJ0
ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgogV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIDEK
IFNvdXJjZTogMTI3LjAuMC4xCiBEZXN0aW5hdGlvbjogbG9jYWxob3N0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252
ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlv
bi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS1leHBl
Y3RlZC50eHQKaW5kZXggZDNjMmFjNmVhNzM3MDc0OWExN2VjYWE0ZGRiZTEzMzFkYjljODY1OS4u
OWUwYTI4MGZhZDE4NmE3NmZhYTk0MmY2MmY5YjEwNDU4YzhkMTJjMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVy
c2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGhvdXQtcHJpb3JpdHktZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0
aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5LWV4
cGVjdGVkLnR4dApAQCAtMSw2ICsxLDcgQEAKIFRlc3RzIHRyaWdnZXJpbmcgb2YgYWQgY2xpY2sg
YXR0cmlidXRpb24gY29udmVyc2lvbnMgd2l0aG91dCBwcmlvcml0eS4KIAogCitDb252ZXJ0ZWQg
QWQgQ2xpY2sgQXR0cmlidXRpb25zOgogV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIDEKIFNv
dXJjZTogMTI3LjAuMC4xCiBEZXN0aW5hdGlvbjogbG9jYWxob3N0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVy
c2lvbkRhdGEucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
cmVzb3VyY2VzL2dldENvbnZlcnNpb25EYXRhLnBocAppbmRleCA5OWFmOGQ4Yjc4YzhkNmM5ZTM1
MzFjYWJjMDM5YTY5YjVjNmU2OWM5Li42ZjExMjRiODljZmQ0OTdkNjE5ZjdlOWNkZGNhNTFmN2U5
Mzc1NmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRhdGEucGhwCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9nZXRDb252ZXJzaW9uRGF0YS5w
aHAKQEAgLTMzLDYgKzMzLDcgQEAgaWYgKCRjb252ZXJzaW9uRmlsZUZvdW5kKSB7CiAgICAgICAg
IGVjaG8gIjxicj4iOwogICAgICAgICBlY2hvIHRyaW0oJGxpbmUpOwogICAgIH0KKyAgICBlY2hv
ICI8YnI+IjsKICAgICBmY2xvc2UoJGNvbnZlcnNpb25GaWxlKTsKICAgICB1bmxpbmsoJGNvbnZl
cnNpb25GaWxlUGF0aCk7CiB9IGVsc2UgewpAQCAtNDEsOCArNDIsMTEgQEAgaWYgKCRjb252ZXJz
aW9uRmlsZUZvdW5kKSB7CiAKIGlmIChpc3NldCgkX0dFVFsnZW5kVGVzdCddKSkgewogICAgIGVj
aG8gIjxzY3JpcHQ+IjsKLSAgICBlY2hvICJpZiAod2luZG93LnRlc3RSdW5uZXIpIjsKKyAgICBl
Y2hvICJpZiAod2luZG93LnRlc3RSdW5uZXIpIHsiOwogICAgIGVjaG8gIiAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsiOworICAgIGVjaG8gIiAgICB0ZXN0UnVubmVyLnNldEFkQ2xpY2tBdHRy
aWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGZhbHNlKTsiOworICAgIGVjaG8gIiAgICB0
ZXN0UnVubmVyLnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKCcn
KTsiOworICAgIGVjaG8gIn0iOwogICAgIGVjaG8gIjwvc2NyaXB0PiI7CiB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9y
ZWRpcmVjdFRvQ29udmVyc2lvbi5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9yZXNvdXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucGhwCmluZGV4IDNkNzFh
ODM1MDg0NTI3MjZiODYyYThmNWMxMThlNWJjOTA4MjVjOTMuLjcwY2ViNDYxN2QwZWViMWUzNzVk
ZmRiNjMzZThjY2Q3N2RhNWUxM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9yZWRpcmVjdFRvQ29udmVyc2lvbi5waHAKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3Jl
ZGlyZWN0VG9Db252ZXJzaW9uLnBocApAQCAtMSw1ICsxLDUgQEAKIDw/cGhwCi1oZWFkZXIoIkhU
VFAvMS4wIDMwMiBGb3VuZCIpOworaGVhZGVyKCJIVFRQLzEuMSAzMDIgRm91bmQiKTsKIGhlYWRl
cigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUiKTsK
IGlmIChpc3NldCgkX0dFVFsiY29udmVyc2lvbkRhdGEiXSkgJiYgaXNzZXQoJF9HRVRbInByaW9y
aXR5Il0pKSB7CiAgIGhlYWRlcigiTG9jYXRpb246IC8ud2VsbC1rbm93bi9hZC1jbGljay1hdHRy
aWJ1dGlvbi8iIC4gJF9HRVRbImNvbnZlcnNpb25EYXRhIl0gLiAiLyIgLiAkX0dFVFsicHJpb3Jp
dHkiXSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Nl
Y29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHktZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE5MGZjYmNiZmRmMWM4MTVkZGE0MjViNTQ2YjIwZGUxMzNhM2YxYTgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IGEgc2Vjb25kIGF0dHJpYnV0
aW9uIGNvbnZlcnNpb24gd2l0aCBoaWdoZXIgcHJpb3JpdHkgcmVwbGFjZXMgYW4gb2xkZXIgd2l0
aCBsb3dlciBwcmlvcml0eS4KKworCitDb252ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgor
V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIDEKK1NvdXJjZTogMTI3LjAuMC4xCitEZXN0aW5h
dGlvbjogbG9jYWxob3N0CitDYW1wYWlnbiBJRDogNAorQ29udmVyc2lvbiBkYXRhOiAxMgorQ29u
dmVyc2lvbiBwcmlvcml0eTogNAorQ29udmVyc2lvbiBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6IFdp
dGhpbiAyNC00OCBob3VycworQ29udmVyc2lvbiByZXF1ZXN0IHNlbnQ6IGZhbHNlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0
cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVy
dGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkyMDBmNzNmYmI2Y2Zj
NWQyOWQ0YTViOGNkYjkzNDAwMzU4M2ZkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0
ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUg
aW50ZXJuYWw6QWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbCBsYW5n
PSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0x
LCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVv
dXQocnVuVGVzdCwgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgYSBzZWNv
bmQgYXR0cmlidXRpb24gY29udmVyc2lvbiB3aXRoIGhpZ2hlciBwcmlvcml0eSByZXBsYWNlcyBh
biBvbGRlciB3aXRoIGxvd2VyIHByaW9yaXR5LjwvZGl2PgorPGEgaWQ9InRhcmdldExpbmsiPkxp
bms8L2E+PGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgY29uc3Qg
cGF0aCA9ICIvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQt
d2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbCI7CisgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFsK
KyAgICAgICAgeworICAgICAgICAgICAgaHJlZjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIgKyBw
YXRoICsgIj9zdGVwVHdvIiwKKyAgICAgICAgICAgIGFkY2FtcGFpZ25pZDogIjMiLAorICAgICAg
ICAgICAgYWRkZXN0aW5hdGlvbjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgaHJlZjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIgKyBw
YXRoICsgIj9zdGVwRm91ciIsCisgICAgICAgICAgICBhZGNhbXBhaWduaWQ6ICI0IiwKKyAgICAg
ICAgICAgIGFkZGVzdGluYXRpb246ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiCisgICAgICAgIH0K
KyAgICBdOworCisgICAgZnVuY3Rpb24gY29uZmlndXJlTGluayhpbmRleCkgeworICAgICAgICBs
ZXQgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpOwor
ICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhyZWYiLCBjb25maWd1cmF0aW9uW2lu
ZGV4XS5ocmVmKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGNhbXBhaWdu
aWQiLCBjb25maWd1cmF0aW9uW2luZGV4XS5hZGNhbXBhaWduaWQpOworICAgICAgICBsaW5rRWxl
bWVudC5zZXRBdHRyaWJ1dGUoImFkZGVzdGluYXRpb24iLCBjb25maWd1cmF0aW9uW2luZGV4XS5h
ZGRlc3RpbmF0aW9uKTsKKyAgICB9CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
KHRydWUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQp
IHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50
SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQu
b2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9w
ICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0
KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNl
IHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIiIpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBh
ZCBjbGljayAxMjcuMC4wLjEg4oCTPiBsb2NhbGhvc3QuCisgICAgICAgICAgICAgICAgY29uZmln
dXJlTGluaygwKTsKKyAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsi
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9z
dGVwVHdvIikgeworICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGZpcnN0IGFkIGNsaWNr
IHdpdGggcHJpb3JpdHkgMyBhbmQgbmF2aWdhdGUgYmFjayB0byAxMjcuMC4wLjEuCisgICAgICAg
ICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6
ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0VG9Db252ZXJzaW9uLnBo
cD9jb252ZXJzaW9uRGF0YT0xMiZwcmlvcml0eT0wMyI7CisgICAgICAgICAgICAgICAgaW1hZ2VF
bGVtZW50LmlkID0gInBpeGVsIjsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQub25lcnJv
ciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24u
aHJlZiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiICsgcGF0aCArICI/c3RlcFRocmVlIjsKKyAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaW1hZ2VFbGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2F0aW9u
LnNlYXJjaCA9PT0gIj9zdGVwVGhyZWUiKSB7CisgICAgICAgICAgICAgICAgLy8gU2Vjb25kIGFk
IGNsaWNrIDEyNy4wLjAuMSDigJM+IGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBjb25maWd1
cmVMaW5rKDEpOworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIp
OworICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP3N0
ZXBGb3VyIikgeworICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHNlY29uZCBhZCBjbGlj
ayB3aXRoIHByaW9yaXR5IDQgYW5kIGZpbmlzaC4KKyAgICAgICAgICAgICAgICBsZXQgaW1hZ2VF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICAgICAg
aW1hZ2VFbGVtZW50LnNyYyA9ICJodHRwczovLzEyNy4wLjAuMTo4NDQzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9yZXNvdXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucGhwP2NvbnZlcnNpb25EYXRhPTEy
JnByaW9yaXR5PTA0IjsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQuaWQgPSAicGl4ZWwi
OworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsK
KyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVs
ZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgVW5rbm93biB3aW5kb3cu
bG9jYXRpb24uc2VhcmNoID09ICIgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgIi4iOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1
dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKKyAgICAgICAgfQorICAgIH0K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13
aXRoLWxvd2VyLXByaW9yaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dl
ci1wcmlvcml0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdlMmRmNzBjYzlmYmUzNWE4ZTQz
N2NkZTY0MjA4Yzc2Y2I4N2ExOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0
aC1sb3dlci1wcmlvcml0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhh
dCBhIHNlY29uZCBhdHRyaWJ1dGlvbiBjb252ZXJzaW9uIHdpdGggbG93ZXIgcHJpb3JpdHkgZG9l
cyBub3QgcmVwbGFjZSBhbiBvbGRlciB3aXRoIGhpZ2hlciBwcmlvcml0eS4KKworCitDb252ZXJ0
ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgorV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIDEK
K1NvdXJjZTogMTI3LjAuMC4xCitEZXN0aW5hdGlvbjogbG9jYWxob3N0CitDYW1wYWlnbiBJRDog
MworQ29udmVyc2lvbiBkYXRhOiAxMgorQ29udmVyc2lvbiBwcmlvcml0eTogNAorQ29udmVyc2lv
biBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6IFdpdGhpbiAyNC00OCBob3VycworQ29udmVyc2lvbiBy
ZXF1ZXN0IHNlbnQ6IGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93ZXIt
cHJpb3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMzZTE4ODM5MGRlYjgwYjJkNzY5YWZhNzA3YmVhZjUyNDU3YWM2NmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
ZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbApAQCAt
MCwwICsxLDk1IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1
c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaW50ZXJuYWw6QWRDbGlja0F0dHJpYnV0aW9uRW5hYmxl
ZD10cnVlIF0gLS0+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPlRlc3RzIHRoYXQgYSBzZWNvbmQgYXR0cmlidXRpb24gY29udmVyc2lvbiB3aXRoIGxv
d2VyIHByaW9yaXR5IGRvZXMgbm90IHJlcGxhY2UgYW4gb2xkZXIgd2l0aCBoaWdoZXIgcHJpb3Jp
dHkuPC9kaXY+Cis8YSBpZD0idGFyZ2V0TGluayI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJvdXRw
dXQiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBjb25zdCBwYXRoID0gIi9hZENsaWNrQXR0cmlidXRp
b24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWwi
OworICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBbCisgICAgICAgIHsKKyAgICAgICAgICAgIGhy
ZWY6ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiICsgcGF0aCArICI/c3RlcFR3byIsCisgICAgICAg
ICAgICBhZGNhbXBhaWduaWQ6ICIzIiwKKyAgICAgICAgICAgIGFkZGVzdGluYXRpb246ICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGhy
ZWY6ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiICsgcGF0aCArICI/c3RlcEZvdXIiLAorICAgICAg
ICAgICAgYWRjYW1wYWlnbmlkOiAiNCIsCisgICAgICAgICAgICBhZGRlc3RpbmF0aW9uOiAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwIgorICAgICAgICB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIGNv
bmZpZ3VyZUxpbmsoaW5kZXgpIHsKKyAgICAgICAgbGV0IGxpbmtFbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0
cmlidXRlKCJocmVmIiwgY29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7CisgICAgICAgIGxpbmtF
bGVtZW50LnNldEF0dHJpYnV0ZSgiYWRjYW1wYWlnbmlkIiwgY29uZmlndXJhdGlvbltpbmRleF0u
YWRjYW1wYWlnbmlkKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRlc3Rp
bmF0aW9uIiwgY29uZmlndXJhdGlvbltpbmRleF0uYWRkZXN0aW5hdGlvbik7CisgICAgfQorCisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRlclgg
PSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAg
dmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8g
MjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAor
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0
cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICApOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICIi
KSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgYWQgY2xpY2sgMTI3LjAuMC4xIOKAkz4gbG9j
YWxob3N0LgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyZUxpbmsoMCk7CisgICAgICAgICAgICAg
ICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICI/c3RlcFR3byIpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDb252ZXJ0IHRoZSBmaXJzdCBhZCBjbGljayB3aXRoIHByaW9yaXR5IDQgYW5kIG5hdmln
YXRlIGJhY2sgdG8gMTI3LjAuMC4xLgorICAgICAgICAgICAgICAgIGxldCBpbWFnZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgICAgICBpbWFnZUVs
ZW1lbnQuc3JjID0gImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvYWRDbGlja0F0dHJpYnV0aW9uL3Jl
c291cmNlcy9yZWRpcmVjdFRvQ29udmVyc2lvbi5waHA/Y29udmVyc2lvbkRhdGE9MTImcHJpb3Jp
dHk9MDQiOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5pZCA9ICJwaXhlbCI7CisgICAg
ICAgICAgICAgICAgaW1hZ2VFbGVtZW50Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIiArIHBhdGggKyAiP3N0ZXBUaHJlZSI7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICI/c3RlcFRocmVlIikg
eworICAgICAgICAgICAgICAgIC8vIFNlY29uZCBhZCBjbGljayAxMjcuMC4wLjEg4oCTPiBsb2Nh
bGhvc3QuCisgICAgICAgICAgICAgICAgY29uZmlndXJlTGluaygxKTsKKyAgICAgICAgICAgICAg
ICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
d2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwRm91ciIpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDb252ZXJ0IHRoZSBzZWNvbmQgYWQgY2xpY2sgd2l0aCBwcmlvcml0eSAzIGFuZCBmaW5p
c2guCisgICAgICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0VG9D
b252ZXJzaW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiZwcmlvcml0eT0wMyI7CisgICAgICAgICAg
ICAgICAgaW1hZ2VFbGVtZW50LmlkID0gInBpeGVsIjsKKyAgICAgICAgICAgICAgICBpbWFnZUVs
ZW1lbnQub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsi
KSk7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlu
bmVyVGV4dCA9ICJGQUlMIFVua25vd24gd2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsgd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCArICIuIjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0
ZXN0UnVubmVyLiI7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlY29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXByaW9yaXR5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9u
LXdpdGgtaGlnaGVyLXByaW9yaXR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTFiMWJhMzg2
NWEyNTVhZDc5ZGY4NjIyMWQ1NDBhZjU2NzkyODcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0
aC1oaWdoZXItcHJpb3JpdHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRo
YXQgdGhlIGF0dHJpYnV0aW9uIGlzIHVwZGF0ZWQgaWYgaXQgZ2V0cyBhIHNlY29uZCBjb252ZXJz
aW9uIHdpdGggaGlnaGVyIHByaW9yaXR5LgorCisKK0NvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1
dGlvbnM6CitXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gMQorU291cmNlOiAxMjcuMC4wLjEK
K0Rlc3RpbmF0aW9uOiBsb2NhbGhvc3QKK0NhbXBhaWduIElEOiAzCitDb252ZXJzaW9uIGRhdGE6
IDEyCitDb252ZXJzaW9uIHByaW9yaXR5OiA0CitDb252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8g
c2VuZDogV2l0aGluIDI0LTQ4IGhvdXJzCitDb252ZXJzaW9uIHJlcXVlc3Qgc2VudDogZmFsc2UK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Nl
Y29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWhpZ2hl
ci1wcmlvcml0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZWZlMTRkZjUyOWVhNGZkNWU3Y2M4NWNkZTBm
YmVhYTkyMTE3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0eS5o
dG1sCkBAIC0wLDAgKzEsODggQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBpbnRlcm5hbDpBZENsaWNrQXR0cmlidXRp
b25FbmFibGVkPXRydWUgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lk
dGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0LCAwKSI+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCB0aGUgYXR0cmlidXRpb24gaXMgdXBkYXRlZCBpZiBp
dCBnZXRzIGEgc2Vjb25kIGNvbnZlcnNpb24gd2l0aCBoaWdoZXIgcHJpb3JpdHkuPC9kaXY+Cis8
YSBpZD0idGFyZ2V0TGluayI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2Pgor
PHNjcmlwdD4KKyAgICBjb25zdCBwYXRoID0gIi9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNv
bnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbCI7CisgICAgY29uc3QgY29uZmlndXJh
dGlvbiA9IFsKKyAgICAgICAgeworICAgICAgICAgICAgaHJlZjogImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMCIgKyBwYXRoICsgIj9zdGVwVHdvIiwKKyAgICAgICAgICAgIGFkY2FtcGFpZ25pZDogIjMi
LAorICAgICAgICAgICAgYWRkZXN0aW5hdGlvbjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKKyAg
ICAgICAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBjb25maWd1cmVMaW5rKGluZGV4KSB7Cisg
ICAgICAgIGxldCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRM
aW5rIik7CisgICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGNvbmZpZ3Vy
YXRpb25baW5kZXhdLmhyZWYpOworICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFk
Y2FtcGFpZ25pZCIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmFkY2FtcGFpZ25pZCk7CisgICAgICAg
IGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRkZXN0aW5hdGlvbiIsIGNvbmZpZ3VyYXRpb25b
aW5kZXhdLmFkZGVzdGluYXRpb24pOworICAgIH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGUodHJ1ZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVs
ZW1lbnRJRCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGVsZW1lbnRJRCk7CisgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsg
ZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5v
ZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIFVJSGVscGVyLmFj
dGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlM
IFByb21pc2UgcmVqZWN0ZWQuIjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
b252ZXJ0KHByaW9yaXR5LCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcGl4ZWxFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIik7CisgICAgICAgIGlmIChwaXhlbEVsZW1l
bnQpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBpeGVsRWxlbWVudCk7
CisKKyAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlt
ZyIpOworICAgICAgICBpbWFnZUVsZW1lbnQuc3JjID0gImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMv
YWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9yZWRpcmVjdFRvQ29udmVyc2lvbi5waHA/Y29u
dmVyc2lvbkRhdGE9MTImcHJpb3JpdHk9IiArIHByaW9yaXR5OworICAgICAgICBpbWFnZUVsZW1l
bnQuaWQgPSAicGl4ZWwiOworICAgICAgICBpbWFnZUVsZW1lbnQub25lcnJvciA9IGNhbGxiYWNr
OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIiIpIHsK
KyAgICAgICAgICAgICAgICAvLyBBZCBjbGljayAxMjcuMC4wLjEg4oCTPiBsb2NhbGhvc3QuCisg
ICAgICAgICAgICAgICAgY29uZmlndXJlTGluaygwKTsKKyAgICAgICAgICAgICAgICBhY3RpdmF0
ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93Lmxv
Y2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIC8vIENvbnZl
cnQgdGhlIGFkIGNsaWNrIHdpdGggcHJpb3JpdHkgMy4KKyAgICAgICAgICAgICAgICBjb252ZXJ0
KCIwMyIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBh
ZCBjbGljayB3aXRoIHByaW9yaXR5IDQuCisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnQoIjA0
IiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
ZENsaWNrQXR0cmlidXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFVua25vd24gd2luZG93
LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArICIuIjsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRw
dXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7CisgICAgICAgIH0KKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXIt
cHJpb3JpdHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzAzY2ZkYmEzZWZmNTA5MTgyNWZlY2Y0MmFjYWY0YzFmMTgxYWU4Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgdGhlIGF0dHJpYnV0aW9uIGlzIG5vdCB1cGRhdGVk
IGlmIGl0IGdldHMgYSBzZWNvbmQgY29udmVyc2lvbiB3aXRoIGxvd2VyIHByaW9yaXR5LgorCisK
K0NvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnM6CitXZWJDb3JlOjpBZENsaWNrQXR0cmli
dXRpb24gMQorU291cmNlOiAxMjcuMC4wLjEKK0Rlc3RpbmF0aW9uOiBsb2NhbGhvc3QKK0NhbXBh
aWduIElEOiAzCitDb252ZXJzaW9uIGRhdGE6IDEyCitDb252ZXJzaW9uIHByaW9yaXR5OiA0CitD
b252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogV2l0aGluIDI0LTQ4IGhvdXJzCitDb252
ZXJzaW9uIHJlcXVlc3Qgc2VudDogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJp
b3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Nl
Y29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmVm
YmExOTk2MDhkZjhhMWVkMDcwMGQ3NTI3NmI3MmYwOTQ5NWVmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNp
b24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhRE9DVFlQRSBo
dG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBp
bnRlcm5hbDpBZENsaWNrQXR0cmlidXRpb25FbmFibGVkPXRydWUgXSAtLT4KKzxodG1sIGxhbmc9
ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEs
IHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91
dChydW5UZXN0LCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCB0aGUgYXR0
cmlidXRpb24gaXMgbm90IHVwZGF0ZWQgaWYgaXQgZ2V0cyBhIHNlY29uZCBjb252ZXJzaW9uIHdp
dGggbG93ZXIgcHJpb3JpdHkuPC9kaXY+Cis8YSBpZD0idGFyZ2V0TGluayI+TGluazwvYT48YnI+
Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBjb25zdCBwYXRoID0gIi9h
ZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5o
dG1sIjsKKyAgICBjb25zdCBjb25maWd1cmF0aW9uID0gWworICAgICAgICB7CisgICAgICAgICAg
ICBocmVmOiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIiArIHBhdGggKyAiP3N0ZXBUd28iLAorICAg
ICAgICAgICAgYWRjYW1wYWlnbmlkOiAiMyIsCisgICAgICAgICAgICBhZGRlc3RpbmF0aW9uOiAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIgorICAgICAgICB9CisgICAgXTsKKworICAgIGZ1bmN0aW9u
IGNvbmZpZ3VyZUxpbmsoaW5kZXgpIHsKKyAgICAgICAgbGV0IGxpbmtFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0
QXR0cmlidXRlKCJocmVmIiwgY29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7CisgICAgICAgIGxp
bmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRjYW1wYWlnbmlkIiwgY29uZmlndXJhdGlvbltpbmRl
eF0uYWRjYW1wYWlnbmlkKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRl
c3RpbmF0aW9uIiwgY29uZmlndXJhdGlvbltpbmRleF0uYWRkZXN0aW5hdGlvbik7CisgICAgfQor
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRl
clggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAg
ICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVu
KAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbnZlcnQocHJpb3JpdHksIGNhbGxiYWNrKSB7Cisg
ICAgICAgIGxldCBwaXhlbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwi
KTsKKyAgICAgICAgaWYgKHBpeGVsRWxlbWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQocGl4ZWxFbGVtZW50KTsKKworICAgICAgICBsZXQgaW1hZ2VFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgIGltYWdlRWxlbWVudC5zcmMg
PSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3Jl
ZGlyZWN0VG9Db252ZXJzaW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiZwcmlvcml0eT0iICsgcHJp
b3JpdHk7CisgICAgICAgIGltYWdlRWxlbWVudC5pZCA9ICJwaXhlbCI7CisgICAgICAgIGltYWdl
RWxlbWVudC5vbmVycm9yID0gY2FsbGJhY2s7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaW1hZ2VFbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
bG9jYXRpb24uc2VhcmNoID09PSAiIikgeworICAgICAgICAgICAgICAgIC8vIEFkIGNsaWNrIDEy
Ny4wLjAuMSDigJM+IGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBjb25maWd1cmVMaW5rKDAp
OworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOworICAgICAg
ICAgICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP3N0ZXBUd28iKSB7
CisgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgYWQgY2xpY2sgd2l0aCBwcmlvcml0eSA0
LgorICAgICAgICAgICAgICAgIGNvbnZlcnQoIjA0IiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFkIGNsaWNrIHdpdGggcHJpb3JpdHkgMy4KKyAgICAg
ICAgICAgICAgICAgICAgY29udmVydCgiMDMiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJU
ZXh0ID0gIkZBSUwgVW5rbm93biB3aW5kb3cubG9jYXRpb24uc2VhcmNoID09ICIgKyB3aW5kb3cu
bG9jYXRpb24uc2VhcmNoICsgIi4iOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRlc3RS
dW5uZXIuIjsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vu
ZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJz
aW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IDNlYTkwMTIxYTI5YTYzMDM5NGRmZjk5MjZl
MmI5YmFlODMzMGZhYWIuLjhhYTVlMmIzYWI3NWIxMWY5NDM1NzE2MDA3MGZlZjRjY2NiMzdhNmQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Nl
bmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNv
bnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTksMTEgKzksNCBAQCBDb252ZXJzaW9u
IHJlY2VpdmVkLgogSFRUUF9IT1NUOiAxMjcuMC4wLjE6ODAwMAogUkVRVUVTVF9VUkk6IC9hZENs
aWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucGhwP2NvbnZlcnNpb249
MTImY2FtcGFpZ249MwogTm8gY29va2llcyBpbiBjb252ZXJzaW9uIHJlcXVlc3QuCi1XZWJDb3Jl
OjpBZENsaWNrQXR0cmlidXRpb24gMQotU291cmNlOiAxMjcuMC4wLjEKLURlc3RpbmF0aW9uOiBs
b2NhbGhvc3QKLUNhbXBhaWduIElEOiAzCi1Db252ZXJzaW9uIGRhdGE6IDEyCi1Db252ZXJzaW9u
IHByaW9yaXR5OiAwCi1Db252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogV2l0aGluIDI0
LTQ4IGhvdXJzCi1Db252ZXJzaW9uIHJlcXVlc3Qgc2VudDogdHJ1ZQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9u
LWNvbnZlcnNpb24tcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbAppbmRl
eCAwMDA5ODdmYWM5YjI2YjAyNjYwNDMxMjRlNDdhZmM4NjQxMDE5MzZlLi5lYTIyNjk4YjRmOTky
N2Y4ZGYyMDFkMGI3ZTg2OWM1MDQ3NTVmYmQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVx
dWVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWwKQEAgLTE4LDYgKzE4LDgg
QEAKICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dz
QW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0
dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9h
ZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucGhwP25vbmNlPSIg
KyBub25jZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJp
ZGVUaW1lckZvclRlc3RpbmcodHJ1ZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVF
bGVtZW50KGVsZW1lbnRJRCkgewpAQCAtNTMsOCArNTUsNiBAQAogICAgICAgICAgICAgICAgIGlt
YWdlRWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZENvbnZlcnNpb25EYXRhSWZyYW1lQW5kRmluaXNoKCk7CiAgICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNp
b25VUkxGb3JUZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvYWRDbGlja0F0dHJpYnV0aW9u
L3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnBocD9ub25jZT0iICsgbm9uY2UpOwotICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcodHJ1ZSk7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpbWFnZUVsZW1lbnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBh
Y3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0
b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA4YWI3ZjllM2Q5NTI1
NWYyZmNkOTUxMDNkOWM2YjYzZGZiZGViNjdlLi5jZmQzMWE5N2JmMWNmYWNmNjU1MmJmNWYyMjRl
MjEzMTQwZTAxYTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9zdG9yZS1hZC1jbGljay1hdHRyaWJ1dGlvbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2st
YXR0cmlidXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNyBAQAogVGVzdHMgc3RvcmFnZSBv
ZiBhZCBjbGljayBhdHRyaWJ1dGlvbi4KIAogCitVbmNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1
dGlvbnM6CiBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gMQogU291cmNlOiAxMjcuMC4wLjEK
IERlc3RpbmF0aW9uOiBsb2NhbGhvc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367672</attachid>
            <date>2019-04-17 13:40:28 -0700</date>
            <delta_ts>2019-04-17 14:47:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196934-20190417134027.patch</filename>
            <type>text/plain</type>
            <size>49769</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODgzYmI3Yjk0OWQxZDA4
YzI0ZWMxYzc4OTY1ZWM2MDFkZTU4NTIyNi4uY2JlNDc0NzdhOTUzOTEzZWJiMmJmNGI0YjQyYjUy
OGRlYzE5M2QzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA0LTE3ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwcmlvcml0aXph
dGlvbiBvZiBhZCBjbGljayBjb252ZXJzaW9ucyBhbmQgY2xlYW5pbmcgb2Ygc2VudCBhZCBjbGlj
ayBjb252ZXJzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk2OTM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTkxNzc3Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9h
ZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWhpZ2hl
ci1wcmlvcml0eS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNv
bnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlv
cml0eS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6aGFzSGlnaGVyUHJpb3JpdHlUaGFu
IGNvbnN0KToKKyAgICAgICAgICAgIEFkZGVkIHRvIGZhY2lsaXRhdGUgcHJpb3JpdHkgY29tcGFy
aXNvbiBiZXR3ZWVuIHR3byBhdHRyaWJ1dGlvbnMuCisgICAgICAgICogbG9hZGVyL0FkQ2xpY2tB
dHRyaWJ1dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0
aW5hdGlvbjo6RGVzdGluYXRpb24pOgorICAgICAgICAgICAgQWRkZWQgYSBXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUgY29uc3RydWN0b3IgYW5kIGNoYW5nZWQgdGhlIGNvcHkgY29uc3Ry
dWN0b3IgdG8KKyAgICAgICAgICAgIGEgbW92ZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNv
cmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6aXNFbXB0eSBjb25zdCk6CisKIDIwMTktMDQtMTcgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpwYXJlbnRPYmplY3QoKSBkb2Vzbid0IG5lZWQgdG8gYmUgcHVyZSB2aXJ0dWFs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY1NDQyMDcwMDBjODA5OWVlM2Q5ZTQzMDg3Y2FhOTA5YzhlYzY3ZWMuLjY4
NjY1NDc5ZTMwNjMwMDc3NDExY2NkYmM4YmU3ZDc3NTY1M2E1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDYgQEAKKzIwMTktMDQtMTcgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHByaW9yaXRpemF0aW9uIG9mIGFkIGNsaWNrIGNvbnZlcnNpb25zIGFu
ZCBjbGVhbmluZyBvZiBzZW50IGFkIGNsaWNrIGNvbnZlcnNpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY5MzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ5OTE3NzczPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisg
ICAgICAgIEluIHRoaXMgZGVzY3JpcHRpb24sIGJ5ICJwYWlyIiBJIG1lYW4geyBBZENsaWNrQXR0
cmlidXRpb246OlNvdXJjZSwgQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbiB9LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBoYW5kbGluZyBvZiBwcmlvcml0aXphdGlvbiBvZiBjb252
ZXJzaW9ucyBhY2NvcmRpbmcgdG8gdGhlc2UgcnVsZXM6CisgICAgICAgIC0gSWYgd2UgaGF2ZSBh
IG1hdGNoaW5nIHVuY29udmVydGVkIGF0dHJpYnV0aW9uLCBjb252ZXJ0IGl0LiBUaGlzIGNvbnN1
bWVzIHRoZSBjb252ZXJzaW9uLgorICAgICAgICAtIElmIHdlIGhhdmUgbm8gcHJldmlvdXNseSBj
b252ZXJ0ZWQgYXR0cmlidXRpb24gZm9yIHRoaXMgcGFpciwganVzdCBzdG9yZS4KKyAgICAgICAg
LSBJZiB3ZSBoYXZlIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYXR0cmlidXRpb24gZm9yIHRoaXMg
cGFpciwgcmVwbGFjZSBpdCBpZiB0aGUgbmV3IG9uZSBoYXMgaGlnaGVyIHByaW9yaXR5LgorICAg
ICAgICAtIElmIHdlIGhhZCBubyBtYXRjaGluZyB1bmNvbnZlcnRlZCBhdHRyaWJ1dGlvbiBidXQg
ZG8gaGF2ZSBhIHByZXZpb3VzbHkgY29udmVydGVkIGF0dHJpYnV0aW9uIGZvciB0aGlzCisgICAg
ICAgIHBhaXIsIHJlLWNvbnZlcnQgdGhlIHByZXZpb3VzbHkgY29udmVydGVkIGF0dHJpYnV0aW9u
IHRvIG1ha2Ugc3VyZSB0aGUgaGlnaGVzdCBwcmlvcml0eSBnZXRzIHNldC4KKworICAgICAgICBU
aGlzIGhhbmRsaW5nIGlzIGluIHBhcnQgZG9uZSBieSBkaXZpZGluZyB0aGUgcHJldmlvdXMgbV9h
ZENsaWNrQXR0cmlidXRpb25NYXAgaW50byAKKyAgICAgICAgbV91bmNvbnZlcnRlZEFkQ2xpY2tB
dHRyaWJ1dGlvbk1hcCBhbmQgbV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAsIHdoaWNo
IG5vdyB1c2UgYSBzdGQ6OnBhaXIKKyAgICAgICAgYXMga2V5IGluc3RlYWQgb2YgYSBuZXN0ZWQg
SGFzaE1hcC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2hhbmdlcyBBZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyOjpmaXJlUGVuZGluZ0NvbnZlcnNpb25SZXF1ZXN0cygpIHNvIHRoYXQgaXQg
bm93CisgICAgICAgIHJlbW92ZXMgYXR0cmlidXRpb25zIHdoaWNoIGhhdmUgYmVlbiBzZW50IG91
dC4KKworICAgICAgICBGaW5hbGx5LCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpjbGVhcigp
IG5vIGxvbmdlciBjbGVhcnMgbV9jb252ZXJzaW9uQmFzZVVSTEZvclRlc3RpbmcgYW5kCisgICAg
ICAgIG1faXNSdW5uaW5nVGVzdCBzaW5jZSBkb2luZyBzbyBjYXVzZWQgdGVzdCBmbGFraW5lc3Mu
IEl0IGlzIG5vdyB1cCB0byB0aGUgdGVzdCBjYXNlIHRoYXQgc2V0cyB0aGVzZQorICAgICAgICBt
ZW1iZXJzIHRvIGFsc28gY2xlYXIgdGhlbSB3aGVuIGRvbmUuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6c3RvcmVVbmNvbnZlcnRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNvbnZlcnQpOgorICAgICAgICAoV2Vi
S2l0OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpmaXJlUGVuZGluZ0NvbnZlcnNpb25SZXF1
ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFy
KToKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6dG9TdHJpbmcg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpzZXRD
b252ZXJzaW9uVVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1
dGlvbk1hbmFnZXI6OmVuc3VyZURlc3RpbmF0aW9uTWFwRm9yU291cmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6c3RvcmUpOiBEZWxldGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaDoK
KyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6QWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFn
ZXI6OnNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbik6CisKIDIwMTktMDQtMTcgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVUnihpRXZWIgZGVhZGxv
Y2sgd2hlbiBwcmludGluZyB3aXRoIGEgSmF2YVNjcmlwdCBhbGVydCB2aXNpYmxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCmluZGV4IGYxNmM5NGMyNjAy
OWJmNTIzMWQ3M2M1NDliOTI1MjBjMjMwZDE3YzcuLjMyMjJjODlhYzljMjEwMWE2MzQ3MDU4ZTJl
NmU5ZjJkN2RjNmI4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNr
QXR0cmlidXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmli
dXRpb24uY3BwCkBAIC05Myw2ICs5MywxNyBAQCBPcHRpb25hbDxTZWNvbmRzPiBBZENsaWNrQXR0
cmlidXRpb246OmNvbnZlcnRBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoQ29udmVyc2lvbgogICAg
IHJldHVybiBzZWNvbmRzOwogfQogCitib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aGFzSGlnaGVy
UHJpb3JpdHlUaGFuKGNvbnN0IEFkQ2xpY2tBdHRyaWJ1dGlvbiYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgaWYgKCFvdGhlci5tX2NvbnZlcnNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAor
ICAgIGlmICghbV9jb252ZXJzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gbV9jb252ZXJzaW9uLT5wcmlvcml0eSA+IG90aGVyLm1fY29udmVyc2lvbi0+cHJpb3JpdHk7
Cit9CisKIFVSTCBBZENsaWNrQXR0cmlidXRpb246OnVybCgpIGNvbnN0CiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJp
YnV0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmgKaW5k
ZXggMGVmMzBkZGFmNmQwNGIxOTBmNTU3MzU3ODRlZDU1NzZlODg1YTYwYi4uNWM2NzkzOGQ4YmFj
OGYxYzlkMTMxOGZjMjlmMTI5Njg1ZTYwY2RhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9B
ZENsaWNrQXR0cmlidXRpb24uaApAQCAtMTM1LDExICsxMzUsMTYgQEAgcHVibGljOgogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBEZXN0aW5hdGlvbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluKQotICAgICAgICAgICAgOiByZWdpc3RyYWJsZURvbWFpbiB7
IGRvbWFpbiB9CisgICAgICAgIGV4cGxpY2l0IERlc3RpbmF0aW9uKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgIDogcmVnaXN0cmFibGVEb21haW4geyBXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIGV4
cGxpY2l0IERlc3RpbmF0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQorICAgICAgICAg
ICAgOiByZWdpc3RyYWJsZURvbWFpbiB7IFdURk1vdmUoZG9tYWluKSB9CisgICAgICAgIHsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0
aW9uJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJh
YmxlRG9tYWluID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluOwpAQCAtMjM2LDYgKzI0MSw3IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxDb252ZXJzaW9u
PiBwYXJzZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlY29uZHM+IGNvbnZlcnRBbmRHZXRFYXJsaWVzdFRpbWVU
b1NlbmQoQ29udmVyc2lvbiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0hpZ2hlclBy
aW9yaXR5VGhhbihjb25zdCBBZENsaWNrQXR0cmlidXRpb24mKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBVUkwgdXJsKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybEZvclRl
c3RpbmcoY29uc3QgVVJMJiBiYXNlVVJMRm9yVGVzdGluZykgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVVJMIHJlZmVycmVyKCkgY29uc3Q7CkBAIC0yNDUsNiArMjUxLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0NvbnZlcnNpb25Bc1NlbnQoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHdhc0NvbnZlcnNpb25TZW50KCkgY29uc3Q7CiAKKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5yZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5
KCk7IH07CisKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRy
aWJ1dGlvbk1hbmFnZXIuY3BwCmluZGV4IGQ3NGIwMDZkN2Q4ODNiODg2ZmFkZjBiZDY2ZTRkZWE4
Mzk1NmI0Y2MuLjQ1MzU4YTk2MTBhNDhjZTdmZDMwZWYwMjg0ZWFmZWY0ZTY3ZjVlNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmNwcApAQCAtNDMsMTcgKzQzLDkgQEAgdXNpbmcgRGVzdGluYXRpb24gPSBB
ZENsaWNrQXR0cmlidXRpb246OkRlc3RpbmF0aW9uOwogdXNpbmcgRGVzdGluYXRpb25NYXAgPSBI
YXNoTWFwPERlc3RpbmF0aW9uLCBBZENsaWNrQXR0cmlidXRpb24+OwogdXNpbmcgQ29udmVyc2lv
biA9IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbjsKIAotRGVzdGluYXRpb25NYXAmIEFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmVuc3VyZURlc3RpbmF0aW9uTWFwRm9yU291cmNlKGNv
bnN0IFNvdXJjZSYgc291cmNlKQordm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpzdG9y
ZVVuY29udmVydGVkKEFkQ2xpY2tBdHRyaWJ1dGlvbiYmIGF0dHJpYnV0aW9uKQogewotICAgIHJl
dHVybiBtX2FkQ2xpY2tBdHRyaWJ1dGlvbk1hcC5lbnN1cmUoc291cmNlLCBbXSB7Ci0gICAgICAg
IHJldHVybiBEZXN0aW5hdGlvbk1hcCB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQot
Ci12b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnN0b3JlKEFkQ2xpY2tBdHRyaWJ1dGlv
biYmIGFkQ2xpY2tBdHRyaWJ1dGlvbikKLXsKLSAgICBhdXRvJiBkZXN0aW5hdGlvbk1hcEZvclNv
dXJjZSA9IGVuc3VyZURlc3RpbmF0aW9uTWFwRm9yU291cmNlKGFkQ2xpY2tBdHRyaWJ1dGlvbi5z
b3VyY2UoKSk7Ci0gICAgZGVzdGluYXRpb25NYXBGb3JTb3VyY2UuYWRkKGFkQ2xpY2tBdHRyaWJ1
dGlvbi5kZXN0aW5hdGlvbigpLCBXVEZNb3ZlKGFkQ2xpY2tBdHRyaWJ1dGlvbikpOworICAgIG1f
dW5jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuc2V0KHN0ZDo6bWFrZV9wYWlyKGF0dHJp
YnV0aW9uLnNvdXJjZSgpLCBhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvbigpKSwgV1RGTW92ZShhdHRy
aWJ1dGlvbikpOwogfQogCiB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnN0YXJ0VGlt
ZXIoU2Vjb25kcyBzZWNvbmRzKQpAQCAtNjYsMjMgKzU4LDM4IEBAIHZvaWQgQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlcjo6Y29udmVydChjb25zdCBTb3VyY2UmIHNvdXJjZSwgY29uc3QgRGVzdGlu
YXRpb24mCiAgICAgaWYgKCFjb252ZXJzaW9uLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBzb3VyY2VJdGVyID0gbV9hZENsaWNrQXR0cmlidXRpb25NYXAuZmluZChzb3Vy
Y2UpOwotICAgIGlmIChzb3VyY2VJdGVyID09IG1fYWRDbGlja0F0dHJpYnV0aW9uTWFwLmVuZCgp
KQotICAgICAgICByZXR1cm47CisgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gU2Vjb25kczo6
aW5maW5pdHkoKTsKIAotICAgIGF1dG8gZGVzdGluYXRpb25JdGVyID0gc291cmNlSXRlci0+dmFs
dWUuZmluZChkZXN0aW5hdGlvbik7Ci0gICAgaWYgKGRlc3RpbmF0aW9uSXRlciA9PSBzb3VyY2VJ
dGVyLT52YWx1ZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcGFpciA9IHN0ZDo6
bWFrZV9wYWlyKHNvdXJjZSwgZGVzdGluYXRpb24pOworICAgIGF1dG8gcHJldmlvdXNseVVuY29u
dmVydGVkQXR0cmlidXRpb24gPSBtX3VuY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwLnRh
a2UocGFpcik7CisgICAgYXV0byBwcmV2aW91c2x5Q29udmVydGVkQXR0cmlidXRpb25JdGVyID0g
bV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuZmluZChwYWlyKTsKIAotICAgIGF1dG8g
c2Vjb25kc1VudGlsU2VuZCA9IGRlc3RpbmF0aW9uSXRlci0+dmFsdWUuY29udmVydEFuZEdldEVh
cmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGNvbnZlcnNpb24pKTsKLSAgICAKLSAgICBpZiAoIXNl
Y29uZHNVbnRpbFNlbmQpCisgICAgaWYgKCFwcmV2aW91c2x5VW5jb252ZXJ0ZWRBdHRyaWJ1dGlv
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQWx3YXlzIGNvbnZlcnQgdGhlIHBlbmRpbmcgYXR0
cmlidXRpb24gYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSB1bmNvbnZlcnRlZCBtYXAuCisgICAgICAg
IGlmIChhdXRvIG9wdGlvbmFsU2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlVbmNvbnZlcnRl
ZEF0dHJpYnV0aW9uLmNvbnZlcnRBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RGTW92ZShjb252
ZXJzaW9uKSkpIHsKKyAgICAgICAgICAgIHNlY29uZHNVbnRpbFNlbmQgPSAqb3B0aW9uYWxTZWNv
bmRzVW50aWxTZW5kOworICAgICAgICAgICAgQVNTRVJUKHNlY29uZHNVbnRpbFNlbmQgIT0gU2Vj
b25kczo6aW5maW5pdHkoKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
cHJldmlvdXNseSBjb252ZXJ0ZWQgYXR0cmlidXRpb24gZm9yIHRoaXMgcGFpciwgYWRkIHRoZSBu
ZXcgb25lLgorICAgICAgICAvLyBJZiB0aGUgbmV3bHkgY29udmVydGVkIGF0dHJpYnV0aW9uIGhh
cyBoaWdoZXIgcHJpb3JpdHksIHJlcGxhY2UgdGhlIG9sZCBvbmUuCisgICAgICAgIGlmIChwcmV2
aW91c2x5Q29udmVydGVkQXR0cmlidXRpb25JdGVyID09IG1fY29udmVydGVkQWRDbGlja0F0dHJp
YnV0aW9uTWFwLmVuZCgpCisgICAgICAgICAgICB8fCBwcmV2aW91c2x5VW5jb252ZXJ0ZWRBdHRy
aWJ1dGlvbi5oYXNIaWdoZXJQcmlvcml0eVRoYW4ocHJldmlvdXNseUNvbnZlcnRlZEF0dHJpYnV0
aW9uSXRlci0+dmFsdWUpKQorICAgICAgICAgICAgbV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRp
b25NYXAuc2V0KHBhaXIsIFdURk1vdmUocHJldmlvdXNseVVuY29udmVydGVkQXR0cmlidXRpb24p
KTsKKyAgICB9IGVsc2UgaWYgKHByZXZpb3VzbHlDb252ZXJ0ZWRBdHRyaWJ1dGlvbkl0ZXIgIT0g
bV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuZW5kKCkpIHsKKyAgICAgICAgLy8gSWYg
d2UgaGF2ZSBubyBuZXdseSBjb252ZXJ0ZWQgYXR0cmlidXRpb24sIHJlLWNvbnZlcnQgdGhlIG9s
ZCBvbmUgdG8gcmVzcGVjdCB0aGUgbmV3IHByaW9yaXR5LgorICAgICAgICBpZiAoYXV0byBvcHRp
b25hbFNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5Q29udmVydGVkQXR0cmlidXRpb25JdGVy
LT52YWx1ZS5jb252ZXJ0QW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1vdmUoY29udmVyc2lv
bikpKSB7CisgICAgICAgICAgICBzZWNvbmRzVW50aWxTZW5kID0gKm9wdGlvbmFsU2Vjb25kc1Vu
dGlsU2VuZDsKKyAgICAgICAgICAgIEFTU0VSVChzZWNvbmRzVW50aWxTZW5kICE9IFNlY29uZHM6
OmluZmluaXR5KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNlY29uZHNVbnRpbFNl
bmQgPT0gU2Vjb25kczo6aW5maW5pdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlm
IChtX2ZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzVGltZXIuaXNBY3RpdmUoKSAmJiBtX2Zp
cmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpIDwgKnNl
Y29uZHNVbnRpbFNlbmQpCisgICAgaWYgKG1fZmlyZVBlbmRpbmdDb252ZXJzaW9uUmVxdWVzdHNU
aW1lci5pc0FjdGl2ZSgpICYmIG1fZmlyZVBlbmRpbmdDb252ZXJzaW9uUmVxdWVzdHNUaW1lci5u
ZXh0RmlyZUludGVydmFsKCkgPCBzZWNvbmRzVW50aWxTZW5kKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgc3RhcnRUaW1lcigqc2Vjb25kc1VudGlsU2VuZCk7CisgICAgc3RhcnRUaW1lcihz
ZWNvbmRzVW50aWxTZW5kKTsKIH0KIAogdm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpm
aXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0dHJpYnV0aW9uJiBhdHRyaWJ1dGlv
bikKQEAgLTEzMyw1OSArMTQwLDgzIEBAIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6
ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IEFkQ2xpY2tBdHRyaWJ1dGlvbiYKIHZvaWQgQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6ZmlyZVBlbmRpbmdDb252ZXJzaW9uUmVxdWVzdHMoKQog
ewogICAgIGF1dG8gbmV4dFRpbWVUb0ZpcmUgPSBTZWNvbmRzOjppbmZpbml0eSgpOwotICAgIGZv
ciAoYXV0byYgaW5uZXJNYXAgOiBtX2FkQ2xpY2tBdHRyaWJ1dGlvbk1hcC52YWx1ZXMoKSkgewot
ICAgICAgICBmb3IgKGF1dG8mIGF0dHJpYnV0aW9uIDogaW5uZXJNYXAudmFsdWVzKCkpIHsKLSAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGlvbi53YXNDb252ZXJzaW9uU2VudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZCA9IGF0
dHJpYnV0aW9uLmVhcmxpZXN0VGltZVRvU2VuZCgpOwotICAgICAgICAgICAgaWYgKCFlYXJsaWVz
dFRpbWVUb1NlbmQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGF1
dG8gbm93ID0gV2FsbFRpbWU6Om5vdygpOwotICAgICAgICAgICAgaWYgKCplYXJsaWVzdFRpbWVU
b1NlbmQgPD0gbm93IHx8IG1faXNSdW5uaW5nVGVzdCkgewotICAgICAgICAgICAgICAgIGZpcmVD
b252ZXJzaW9uUmVxdWVzdChhdHRyaWJ1dGlvbik7ICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGF0dHJpYnV0aW9uLm1hcmtDb252ZXJzaW9uQXNTZW50KCk7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gc2Vjb25kcyA9
ICplYXJsaWVzdFRpbWVUb1NlbmQgLSBub3c7Ci0gICAgICAgICAgICBuZXh0VGltZVRvRmlyZSA9
IHN0ZDo6bWluKG5leHRUaW1lVG9GaXJlLCBzZWNvbmRzKTsKKyAgICBmb3IgKGF1dG8mIGF0dHJp
YnV0aW9uIDogbV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKGF0dHJpYnV0aW9uLndhc0NvbnZlcnNpb25TZW50KCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi5lYXJsaWVzdFRp
bWVUb1NlbmQoKTsKKyAgICAgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQpIHsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBhdXRvIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgaWYgKCpl
YXJsaWVzdFRpbWVUb1NlbmQgPD0gbm93IHx8IG1faXNSdW5uaW5nVGVzdCkgeworICAgICAgICAg
ICAgZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGF0dHJpYnV0aW9uKTsKKyAgICAgICAgICAgIGF0dHJp
YnV0aW9uLm1hcmtDb252ZXJzaW9uQXNTZW50KCk7CisgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQorCisgICAgICAgIGF1dG8gc2Vjb25kcyA9ICplYXJsaWVzdFRpbWVUb1NlbmQgLSBu
b3c7CisgICAgICAgIG5leHRUaW1lVG9GaXJlID0gc3RkOjptaW4obmV4dFRpbWVUb0ZpcmUsIHNl
Y29uZHMpOwogICAgIH0KIAorICAgIG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwLnJl
bW92ZUlmKFtdKGF1dG8mIGtleUFuZFZhbHVlKSB7CisgICAgICAgIHJldHVybiBrZXlBbmRWYWx1
ZS52YWx1ZS53YXNDb252ZXJzaW9uU2VudCgpOworICAgIH0pOworCiAgICAgaWYgKG5leHRUaW1l
VG9GaXJlIDwgU2Vjb25kczo6aW5maW5pdHkoKSkKICAgICAgICAgc3RhcnRUaW1lcihuZXh0VGlt
ZVRvRmlyZSk7Ci0KLSAgICAvLyBGSVhNRTogQWRkIGNsZWFuaW5nIG9mIHNlbnQgY29udmVyc2lv
bnMuCiB9CiAKIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6Y2xlYXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fYWRDbGlja0F0
dHJpYnV0aW9uTWFwLmNsZWFyKCk7Ci0gICAgbV9jb252ZXJzaW9uQmFzZVVSTEZvclRlc3Rpbmcg
PSB7IH07Ci0gICAgbV9pc1J1bm5pbmdUZXN0ID0gZmFsc2U7CisgICAgbV9maXJlUGVuZGluZ0Nv
bnZlcnNpb25SZXF1ZXN0c1RpbWVyLnN0b3AoKTsKKyAgICBtX3VuY29udmVydGVkQWRDbGlja0F0
dHJpYnV0aW9uTWFwLmNsZWFyKCk7CisgICAgbV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25N
YXAuY2xlYXIoKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIEFkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICBpZiAobV9hZENsaWNrQXR0cmli
dXRpb25NYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoIk5v
IHN0b3JlZCBBZCBDbGljayBBdHRyaWJ1dGlvbiBkYXRhLiJfcyk7CisgICAgaWYgKG1fdW5jb252
ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuaXNFbXB0eSgpICYmIG1fY29udmVydGVkQWRDbGlj
a0F0dHJpYnV0aW9uTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKCJObyBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5cbiJfcyk7CiAKKyAgICB1
bnNpZ25lZCB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyID0gMDsKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvJiBpbm5lck1hcCA6IG1fYWRDbGlja0F0dHJpYnV0
aW9uTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0aW9uTnVtYmVyID0g
MTsKLSAgICAgICAgZm9yIChhdXRvJiBhdHRyaWJ1dGlvbiA6IGlubmVyTWFwLnZhbHVlcygpKSB7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIldlYkNvcmU6OkFkQ2xpY2tBdHRy
aWJ1dGlvbiAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGF0dHJpYnV0aW9u
TnVtYmVyKyspOworICAgIGZvciAoYXV0byYgYXR0cmlidXRpb24gOiBtX3VuY29udmVydGVkQWRD
bGlja0F0dHJpYnV0aW9uTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghdW5jb252ZXJ0ZWRB
dHRyaWJ1dGlvbk51bWJlcikKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVW5j
b252ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOlxuIik7CisgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
YXR0cmlidXRpb24udG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKCsrdW5jb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGlv
bi50b1N0cmluZygpKTsKK30KKworICAgIHVuc2lnbmVkIGNvbnZlcnRlZEF0dHJpYnV0aW9uTnVt
YmVyID0gMDsKKyAgICBmb3IgKGF1dG8mIGF0dHJpYnV0aW9uIDogbV9jb252ZXJ0ZWRBZENsaWNr
QXR0cmlidXRpb25NYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRBdHRyaWJ1
dGlvbk51bWJlcikKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ29udmVydGVk
IEFkIENsaWNrIEF0dHJpYnV0aW9uczpcbiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJXZWJD
b3JlOjpBZENsaWNrQXR0cmlidXRpb24gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KCsrY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIgKyB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVt
YmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGF0dHJpYnV0aW9uLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKK3ZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlcjo6c2V0Q29udmVyc2lvblVSTEZvclRlc3RpbmcoVVJMJiYgdGVzdFVSTCkKK3sKKyAgICBp
ZiAodGVzdFVSTC5pc0VtcHR5KCkpCisgICAgICAgIG1fY29udmVyc2lvbkJhc2VVUkxGb3JUZXN0
aW5nID0geyB9OworICAgIGVsc2UKKyAgICAgICAgbV9jb252ZXJzaW9uQmFzZVVSTEZvclRlc3Rp
bmcgPSBXVEZNb3ZlKHRlc3RVUkwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyLmgKaW5kZXggN2Q5OGZiNWUyYmQ2NDUwY2JmYmRhOTI1ODJmNjlmNmFmYzdiNmZiYS4u
MGIyNGNhYjNmY2E0OWMyNWNjNDQyYjc3MGIwZjc0MzRjZTg1YjI3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2Vy
LmgKQEAgLTQ0LDMzICs0NCwzMiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQWRDbGlja0F0dHJpYnV0
aW9uID0gV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOwogICAgIHVzaW5nIFNvdXJjZSA9IFdl
YkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6U291cmNlOwogICAgIHVzaW5nIERlc3RpbmF0aW9u
ID0gV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbjsKLSAgICB1c2luZyBE
ZXN0aW5hdGlvbk1hcCA9IEhhc2hNYXA8RGVzdGluYXRpb24sIEFkQ2xpY2tBdHRyaWJ1dGlvbj47
CiAgICAgdXNpbmcgQ29udmVyc2lvbiA9IFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29u
dmVyc2lvbjsKIAogICAgIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIoKQogICAgICAgICA6IG1f
ZmlyZVBlbmRpbmdDb252ZXJzaW9uUmVxdWVzdHNUaW1lcigqdGhpcywgJkFkQ2xpY2tBdHRyaWJ1
dGlvbk1hbmFnZXI6OmZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzKQotICAgICwgbV9waW5n
TG9hZEZ1bmN0aW9uKFtdKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdl
YkNvcmU6OlJlc291cmNlRXJyb3IoKSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSgpKTsKLSAg
ICB9KQorICAgICAgICAsIG1fcGluZ0xvYWRGdW5jdGlvbihbXShOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyYmIHBhcmFtcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICAgICAgfSkKICAgICB7CiAgICAgfQogCi0g
ICAgdm9pZCBzdG9yZShBZENsaWNrQXR0cmlidXRpb24mJik7CisgICAgdm9pZCBzdG9yZVVuY29u
dmVydGVkKEFkQ2xpY2tBdHRyaWJ1dGlvbiYmKTsKICAgICB2b2lkIGNvbnZlcnQoY29uc3QgU291
cmNlJiwgY29uc3QgRGVzdGluYXRpb24mLCBDb252ZXJzaW9uJiYpOwogICAgIHZvaWQgY2xlYXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHRvU3RyaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Q7CiAgICAgdm9pZCBzZXRQaW5nTG9hZEZ1
bmN0aW9uKEZ1bmN0aW9uPHZvaWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKT4mJiBwaW5nTG9hZEZ1bmN0aW9uKSB7IG1f
cGluZ0xvYWRGdW5jdGlvbiA9IFdURk1vdmUocGluZ0xvYWRGdW5jdGlvbik7IH0KICAgICB2b2lk
IHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdUZXN0
ID0gdmFsdWU7IH0KLSAgICB2b2lkIHNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFVSTCYmIHRl
c3RVUkwpIHsgbV9jb252ZXJzaW9uQmFzZVVSTEZvclRlc3RpbmcgPSBXVEZNb3ZlKHRlc3RVUkwp
OyB9CisgICAgdm9pZCBzZXRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyhVUkwmJik7CiAKIHByaXZh
dGU6Ci0gICAgRGVzdGluYXRpb25NYXAmIGVuc3VyZURlc3RpbmF0aW9uTWFwRm9yU291cmNlKGNv
bnN0IFNvdXJjZSYpOwogICAgIHZvaWQgc3RhcnRUaW1lcihTZWNvbmRzKTsKICAgICB2b2lkIGZp
cmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBBZENsaWNrQXR0cmlidXRpb24mKTsKICAgICB2b2lk
IGZpcmVQZW5kaW5nQ29udmVyc2lvblJlcXVlc3RzKCk7CiAKLSAgICBIYXNoTWFwPFNvdXJjZSwg
RGVzdGluYXRpb25NYXA+IG1fYWRDbGlja0F0dHJpYnV0aW9uTWFwOworICAgIEhhc2hNYXA8c3Rk
OjpwYWlyPFNvdXJjZSwgRGVzdGluYXRpb24+LCBBZENsaWNrQXR0cmlidXRpb24+IG1fdW5jb252
ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXA7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8U291cmNl
LCBEZXN0aW5hdGlvbj4sIEFkQ2xpY2tBdHRyaWJ1dGlvbj4gbV9jb252ZXJ0ZWRBZENsaWNrQXR0
cmlidXRpb25NYXA7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9maXJlUGVuZGluZ0NvbnZlcnNpb25S
ZXF1ZXN0c1RpbWVyOwogICAgIEZ1bmN0aW9uPHZvaWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKT4gbV9waW5nTG9hZEZ1
bmN0aW9uOwogICAgIGJvb2wgbV9pc1J1bm5pbmdUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZWQxMzhjMmUy
ZmNmZjBmOWY1MTk0M2Q0NDU4NGJkZjZkYjdmN2VlMC4uZjcwNjIxMzM2YTRjZWE0OWRlNWVlMjli
MGRlOGE1YTc2YzZkMTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9u
OjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihXZWJD
b3JlOjpBZENsaWNrQXR0cmlidXRpb24mJiBhZENsaWNrQXR0cmlidXRpb24pCiB7Ci0gICAgbV9h
ZENsaWNrQXR0cmlidXRpb24tPnN0b3JlKFdURk1vdmUoYWRDbGlja0F0dHJpYnV0aW9uKSk7Cisg
ICAgbV9hZENsaWNrQXR0cmlidXRpb24tPnN0b3JlVW5jb252ZXJ0ZWQoV1RGTW92ZShhZENsaWNr
QXR0cmlidXRpb24pKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y29udmVydEFkQ2xpY2tB
dHRyaWJ1dGlvbihjb25zdCBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OlNvdXJjZSYgc291
cmNlLCBjb25zdCBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OkRlc3RpbmF0aW9uJiBkZXN0
aW5hdGlvbiwgV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYgY29udmVy
c2lvbikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0ZDRkY2ZmMmM0OGE5OWE5OTBiZmJkYWQwNjhiYmNiZGNjMDNkNjM5Li5l
Zjc4YTI2ZTZhNGQ3NDhmYTE2NDJjMTIzZWMzZTRiZDMzMjZlNTg4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTktMDQtMTcgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIHByaW9yaXRpemF0aW9uIG9mIGFkIGNsaWNrIGNvbnZlcnNpb25zIGFuZCBj
bGVhbmluZyBvZiBzZW50IGFkIGNsaWNrIGNvbnZlcnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY5MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ5OTE3NzczPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lv
bi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2UtcmVkaXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24t
dGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9yaXR5LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9u
LXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2dldENvbnZl
cnNpb25EYXRhLnBocDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9y
ZXNvdXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucGhwOgorICAgICAgICAqIGh0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1oaWdo
ZXItcHJpb3JpdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVy
LXByaW9yaXR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQt
Y29udmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdp
dGgtaGlnaGVyLXByaW9yaXR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRD
bGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29u
dmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xp
Y2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0
dHJpYnV0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0wNC0xNyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQ0MjIwKTogZmFz
dC9mb3Jtcy9pb3MvaW5wdXRtb2RlLWNoYW5nZS11cGRhdGUta2V5Ym9hcmQuaHRtbCB0aW1lcyBv
dXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0
LWV4cGVjdGVkLnR4dAppbmRleCA1ZDZmYzZjMzA2ODRmZTg4MWI3ZjI1M2Y3MmNjODNmYmNjMzlh
YTNiLi5mZWE1ZTYxZmM4NWNkZjU0MmY5MTc1MzNmYWJmYmI4MzVkNjhlNjU4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1j
b252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRp
b24tY29udmVyc2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2UtcmVkaXJlY3QtZXhwZWN0ZWQu
dHh0CkBAIC0xLDYgKzEsNyBAQAogVGVzdHMgdGhhdCB0cmlnZ2VyaW5nIG9mIGFkIGNsaWNrIGF0
dHJpYnV0aW9uIGNvbnZlcnNpb25zIHRocm91Z2ggY3Jvc3Mtc2l0ZSByZWRpcmVjdHMgZG8gbm90
IHdvcmsuCiAKIAorVW5jb252ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgogV2ViQ29yZTo6
QWRDbGlja0F0dHJpYnV0aW9uIDEKIFNvdXJjZTogMTI3LjAuMC4xCiBEZXN0aW5hdGlvbjogbG9j
YWxob3N0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1w
cmlvcml0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0
aC1wcmlvcml0eS1leHBlY3RlZC50eHQKaW5kZXggZGY0MTg1MzY5ZjVlMDI3YWM1MzQ2YWU3Mzdl
M2Y2OTk5ODE3YjZkMS4uNTk3ZjY1Y2QxOGQ1OTQwODE5NzcwOGY3MGVhNDJlNDAzZWQwYWRkMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0
cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGgtcHJpb3JpdHkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXBy
aW9yaXR5LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDcgQEAKIFRlc3RzIHRyaWdnZXJpbmcgb2Yg
YWQgY2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgd2l0aCBwcmlvcml0eS4KIAogCitDb252
ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgogV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
IDEKIFNvdXJjZTogMTI3LjAuMC4xCiBEZXN0aW5hdGlvbjogbG9jYWxob3N0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1j
b252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS1l
eHBlY3RlZC50eHQKaW5kZXggZDNjMmFjNmVhNzM3MDc0OWExN2VjYWE0ZGRiZTEzMzFkYjljODY1
OS4uOWUwYTI4MGZhZDE4NmE3NmZhYTk0MmY2MmY5YjEwNDU4YzhkMTJjMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29u
dmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGhvdXQtcHJpb3JpdHktZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJp
YnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5
LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDcgQEAKIFRlc3RzIHRyaWdnZXJpbmcgb2YgYWQgY2xp
Y2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgd2l0aG91dCBwcmlvcml0eS4KIAogCitDb252ZXJ0
ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgogV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIDEK
IFNvdXJjZTogMTI3LjAuMC4xCiBEZXN0aW5hdGlvbjogbG9jYWxob3N0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29u
dmVyc2lvbkRhdGEucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vcmVzb3VyY2VzL2dldENvbnZlcnNpb25EYXRhLnBocAppbmRleCA5OWFmOGQ4Yjc4YzhkNmM5
ZTM1MzFjYWJjMDM5YTY5YjVjNmU2OWM5Li42ZjExMjRiODljZmQ0OTdkNjE5ZjdlOWNkZGNhNTFm
N2U5Mzc1NmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRhdGEucGhwCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9nZXRDb252ZXJzaW9uRGF0
YS5waHAKQEAgLTMzLDYgKzMzLDcgQEAgaWYgKCRjb252ZXJzaW9uRmlsZUZvdW5kKSB7CiAgICAg
ICAgIGVjaG8gIjxicj4iOwogICAgICAgICBlY2hvIHRyaW0oJGxpbmUpOwogICAgIH0KKyAgICBl
Y2hvICI8YnI+IjsKICAgICBmY2xvc2UoJGNvbnZlcnNpb25GaWxlKTsKICAgICB1bmxpbmsoJGNv
bnZlcnNpb25GaWxlUGF0aCk7CiB9IGVsc2UgewpAQCAtNDEsOCArNDIsMTEgQEAgaWYgKCRjb252
ZXJzaW9uRmlsZUZvdW5kKSB7CiAKIGlmIChpc3NldCgkX0dFVFsnZW5kVGVzdCddKSkgewogICAg
IGVjaG8gIjxzY3JpcHQ+IjsKLSAgICBlY2hvICJpZiAod2luZG93LnRlc3RSdW5uZXIpIjsKKyAg
ICBlY2hvICJpZiAod2luZG93LnRlc3RSdW5uZXIpIHsiOwogICAgIGVjaG8gIiAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsiOworICAgIGVjaG8gIiAgICB0ZXN0UnVubmVyLnNldEFkQ2xpY2tB
dHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGZhbHNlKTsiOworICAgIGVjaG8gIiAg
ICB0ZXN0UnVubmVyLnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5n
KCcnKTsiOworICAgIGVjaG8gIn0iOwogICAgIGVjaG8gIjwvc2NyaXB0PiI7CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNl
cy9yZWRpcmVjdFRvQ29udmVyc2lvbi5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xp
Y2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucGhwCmluZGV4IDNk
NzFhODM1MDg0NTI3MjZiODYyYThmNWMxMThlNWJjOTA4MjVjOTMuLjcwY2ViNDYxN2QwZWViMWUz
NzVkZmRiNjMzZThjY2Q3N2RhNWUxM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9yZWRpcmVjdFRvQ29udmVyc2lvbi5waHAK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2Vz
L3JlZGlyZWN0VG9Db252ZXJzaW9uLnBocApAQCAtMSw1ICsxLDUgQEAKIDw/cGhwCi1oZWFkZXIo
IkhUVFAvMS4wIDMwMiBGb3VuZCIpOworaGVhZGVyKCJIVFRQLzEuMSAzMDIgRm91bmQiKTsKIGhl
YWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUi
KTsKIGlmIChpc3NldCgkX0dFVFsiY29udmVyc2lvbkRhdGEiXSkgJiYgaXNzZXQoJF9HRVRbInBy
aW9yaXR5Il0pKSB7CiAgIGhlYWRlcigiTG9jYXRpb246IC8ud2VsbC1rbm93bi9hZC1jbGljay1h
dHRyaWJ1dGlvbi8iIC4gJF9HRVRbImNvbnZlcnNpb25EYXRhIl0gLiAiLyIgLiAkX0dFVFsicHJp
b3JpdHkiXSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHktZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE5MGZjYmNiZmRmMWM4MTVkZGE0MjViNTQ2YjIwZGUxMzNhM2Yx
YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IGEgc2Vjb25kIGF0dHJp
YnV0aW9uIGNvbnZlcnNpb24gd2l0aCBoaWdoZXIgcHJpb3JpdHkgcmVwbGFjZXMgYW4gb2xkZXIg
d2l0aCBsb3dlciBwcmlvcml0eS4KKworCitDb252ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25z
OgorV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIDEKK1NvdXJjZTogMTI3LjAuMC4xCitEZXN0
aW5hdGlvbjogbG9jYWxob3N0CitDYW1wYWlnbiBJRDogNAorQ29udmVyc2lvbiBkYXRhOiAxMgor
Q29udmVyc2lvbiBwcmlvcml0eTogNAorQ29udmVyc2lvbiBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6
IFdpdGhpbiAyNC00OCBob3VycworQ29udmVyc2lvbiByZXF1ZXN0IHNlbnQ6IGZhbHNlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQt
YXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29u
dmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkyMDBmNzNmYmI2
Y2ZjNWQyOWQ0YTViOGNkYjkzNDAwMzU4M2ZkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252
ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IURPQ1RZ
UEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgaW50ZXJuYWw6QWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbCBs
YW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2Fs
ZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRp
bWVvdXQocnVuVGVzdCwgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgYSBz
ZWNvbmQgYXR0cmlidXRpb24gY29udmVyc2lvbiB3aXRoIGhpZ2hlciBwcmlvcml0eSByZXBsYWNl
cyBhbiBvbGRlciB3aXRoIGxvd2VyIHByaW9yaXR5LjwvZGl2PgorPGEgaWQ9InRhcmdldExpbmsi
Pkxpbms8L2E+PGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgY29u
c3QgcGF0aCA9ICIvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0
ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbCI7CisgICAgY29uc3QgY29uZmlndXJhdGlvbiA9
IFsKKyAgICAgICAgeworICAgICAgICAgICAgaHJlZjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIg
KyBwYXRoICsgIj9zdGVwVHdvIiwKKyAgICAgICAgICAgIGFkY2FtcGFpZ25pZDogIjMiLAorICAg
ICAgICAgICAgYWRkZXN0aW5hdGlvbjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgaHJlZjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIg
KyBwYXRoICsgIj9zdGVwRm91ciIsCisgICAgICAgICAgICBhZGNhbXBhaWduaWQ6ICI0IiwKKyAg
ICAgICAgICAgIGFkZGVzdGluYXRpb246ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiCisgICAgICAg
IH0KKyAgICBdOworCisgICAgZnVuY3Rpb24gY29uZmlndXJlTGluayhpbmRleCkgeworICAgICAg
ICBsZXQgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIp
OworICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhyZWYiLCBjb25maWd1cmF0aW9u
W2luZGV4XS5ocmVmKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGNhbXBh
aWduaWQiLCBjb25maWd1cmF0aW9uW2luZGV4XS5hZGNhbXBhaWduaWQpOworICAgICAgICBsaW5r
RWxlbWVudC5zZXRBdHRyaWJ1dGUoImFkZGVzdGluYXRpb24iLCBjb25maWd1cmF0aW9uW2luZGV4
XS5hZGRlc3RpbmF0aW9uKTsKKyAgICB9CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmlj
YXRlKHRydWUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50
SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1l
bnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0
VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICBVSUhlbHBlci5hY3RpdmF0
ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9t
aXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIiIpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJz
dCBhZCBjbGljayAxMjcuMC4wLjEg4oCTPiBsb2NhbGhvc3QuCisgICAgICAgICAgICAgICAgY29u
ZmlndXJlTGluaygwKTsKKyAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExp
bmsiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0g
Ij9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGZpcnN0IGFkIGNs
aWNrIHdpdGggcHJpb3JpdHkgMyBhbmQgbmF2aWdhdGUgYmFjayB0byAxMjcuMC4wLjEuCisgICAg
ICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlt
ZyIpOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6Ly8xMjcuMC4w
LjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0VG9Db252ZXJzaW9u
LnBocD9jb252ZXJzaW9uRGF0YT0xMiZwcmlvcml0eT0wMyI7CisgICAgICAgICAgICAgICAgaW1h
Z2VFbGVtZW50LmlkID0gInBpeGVsIjsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQub25l
cnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRp
b24uaHJlZiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiICsgcGF0aCArICI/c3RlcFRocmVlIjsK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaW1hZ2VFbGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2F0
aW9uLnNlYXJjaCA9PT0gIj9zdGVwVGhyZWUiKSB7CisgICAgICAgICAgICAgICAgLy8gU2Vjb25k
IGFkIGNsaWNrIDEyNy4wLjAuMSDigJM+IGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBjb25m
aWd1cmVMaW5rKDEpOworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGlu
ayIpOworICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAi
P3N0ZXBGb3VyIikgeworICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHNlY29uZCBhZCBj
bGljayB3aXRoIHByaW9yaXR5IDQgYW5kIGZpbmlzaC4KKyAgICAgICAgICAgICAgICBsZXQgaW1h
Z2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICAg
ICAgaW1hZ2VFbGVtZW50LnNyYyA9ICJodHRwczovLzEyNy4wLjAuMTo4NDQzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucGhwP2NvbnZlcnNpb25EYXRh
PTEyJnByaW9yaXR5PTA0IjsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQuaWQgPSAicGl4
ZWwiOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24oZSkg
eworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24o
KTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7
CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFn
ZUVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgVW5rbm93biB3aW5k
b3cubG9jYXRpb24uc2VhcmNoID09ICIgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgIi4iOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91
dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKKyAgICAgICAgfQorICAg
IH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRl
ZC13aXRoLWxvd2VyLXByaW9yaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1s
b3dlci1wcmlvcml0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdlMmRmNzBjYzlmYmUzNWE4
ZTQzN2NkZTY0MjA4Yzc2Y2I4N2ExOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQt
d2l0aC1sb3dlci1wcmlvcml0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMg
dGhhdCBhIHNlY29uZCBhdHRyaWJ1dGlvbiBjb252ZXJzaW9uIHdpdGggbG93ZXIgcHJpb3JpdHkg
ZG9lcyBub3QgcmVwbGFjZSBhbiBvbGRlciB3aXRoIGhpZ2hlciBwcmlvcml0eS4KKworCitDb252
ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgorV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
IDEKK1NvdXJjZTogMTI3LjAuMC4xCitEZXN0aW5hdGlvbjogbG9jYWxob3N0CitDYW1wYWlnbiBJ
RDogMworQ29udmVyc2lvbiBkYXRhOiAxMgorQ29udmVyc2lvbiBwcmlvcml0eTogNAorQ29udmVy
c2lvbiBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6IFdpdGhpbiAyNC00OCBob3VycworQ29udmVyc2lv
biByZXF1ZXN0IHNlbnQ6IGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93
ZXItcHJpb3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMzZTE4ODM5MGRlYjgwYjJkNzY5YWZhNzA3YmVhZjUyNDU3YWM2NmMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbApA
QCAtMCwwICsxLDk1IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaW50ZXJuYWw6QWRDbGlja0F0dHJpYnV0aW9uRW5h
YmxlZD10cnVlIF0gLS0+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRl
dmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2Ny
aXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPlRlc3RzIHRoYXQgYSBzZWNvbmQgYXR0cmlidXRpb24gY29udmVyc2lvbiB3aXRo
IGxvd2VyIHByaW9yaXR5IGRvZXMgbm90IHJlcGxhY2UgYW4gb2xkZXIgd2l0aCBoaWdoZXIgcHJp
b3JpdHkuPC9kaXY+Cis8YSBpZD0idGFyZ2V0TGluayI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJv
dXRwdXQiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBjb25zdCBwYXRoID0gIi9hZENsaWNrQXR0cmli
dXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0
bWwiOworICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBbCisgICAgICAgIHsKKyAgICAgICAgICAg
IGhyZWY6ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiICsgcGF0aCArICI/c3RlcFR3byIsCisgICAg
ICAgICAgICBhZGNhbXBhaWduaWQ6ICIzIiwKKyAgICAgICAgICAgIGFkZGVzdGluYXRpb246ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IGhyZWY6ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiICsgcGF0aCArICI/c3RlcEZvdXIiLAorICAg
ICAgICAgICAgYWRjYW1wYWlnbmlkOiAiNCIsCisgICAgICAgICAgICBhZGRlc3RpbmF0aW9uOiAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIgorICAgICAgICB9CisgICAgXTsKKworICAgIGZ1bmN0aW9u
IGNvbmZpZ3VyZUxpbmsoaW5kZXgpIHsKKyAgICAgICAgbGV0IGxpbmtFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0
QXR0cmlidXRlKCJocmVmIiwgY29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7CisgICAgICAgIGxp
bmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRjYW1wYWlnbmlkIiwgY29uZmlndXJhdGlvbltpbmRl
eF0uYWRjYW1wYWlnbmlkKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRl
c3RpbmF0aW9uIiwgY29uZmlndXJhdGlvbltpbmRleF0uYWRkZXN0aW5hdGlvbik7CisgICAgfQor
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRl
clggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAg
ICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVu
KAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09
ICIiKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgYWQgY2xpY2sgMTI3LjAuMC4xIOKAkz4g
bG9jYWxob3N0LgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyZUxpbmsoMCk7CisgICAgICAgICAg
ICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICI/c3RlcFR3byIpIHsKKyAgICAgICAgICAg
ICAgICAvLyBDb252ZXJ0IHRoZSBmaXJzdCBhZCBjbGljayB3aXRoIHByaW9yaXR5IDQgYW5kIG5h
dmlnYXRlIGJhY2sgdG8gMTI3LjAuMC4xLgorICAgICAgICAgICAgICAgIGxldCBpbWFnZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgICAgICBpbWFn
ZUVsZW1lbnQuc3JjID0gImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvYWRDbGlja0F0dHJpYnV0aW9u
L3Jlc291cmNlcy9yZWRpcmVjdFRvQ29udmVyc2lvbi5waHA/Y29udmVyc2lvbkRhdGE9MTImcHJp
b3JpdHk9MDQiOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5pZCA9ICJwaXhlbCI7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwIiArIHBhdGggKyAiP3N0ZXBUaHJlZSI7CisgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICI/c3RlcFRocmVl
IikgeworICAgICAgICAgICAgICAgIC8vIFNlY29uZCBhZCBjbGljayAxMjcuMC4wLjEg4oCTPiBs
b2NhbGhvc3QuCisgICAgICAgICAgICAgICAgY29uZmlndXJlTGluaygxKTsKKyAgICAgICAgICAg
ICAgICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwRm91ciIpIHsKKyAgICAgICAgICAg
ICAgICAvLyBDb252ZXJ0IHRoZSBzZWNvbmQgYWQgY2xpY2sgd2l0aCBwcmlvcml0eSAzIGFuZCBm
aW5pc2guCisgICAgICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0
cHM6Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0
VG9Db252ZXJzaW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiZwcmlvcml0eT0wMyI7CisgICAgICAg
ICAgICAgICAgaW1hZ2VFbGVtZW50LmlkID0gInBpeGVsIjsKKyAgICAgICAgICAgICAgICBpbWFn
ZUVsZW1lbnQub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExp
bmsiKSk7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOworICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIp
LmlubmVyVGV4dCA9ICJGQUlMIFVua25vd24gd2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsg
d2luZG93LmxvY2F0aW9uLnNlYXJjaCArICIuIjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBO
byB0ZXN0UnVubmVyLiI7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXByaW9yaXR5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJz
aW9uLXdpdGgtaGlnaGVyLXByaW9yaXR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTFiMWJh
Mzg2NWEyNTVhZDc5ZGY4NjIyMWQ1NDBhZjU2NzkyODcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24t
d2l0aC1oaWdoZXItcHJpb3JpdHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3Rz
IHRoYXQgdGhlIGF0dHJpYnV0aW9uIGlzIHVwZGF0ZWQgaWYgaXQgZ2V0cyBhIHNlY29uZCBjb252
ZXJzaW9uIHdpdGggaGlnaGVyIHByaW9yaXR5LgorCisKK0NvbnZlcnRlZCBBZCBDbGljayBBdHRy
aWJ1dGlvbnM6CitXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gMQorU291cmNlOiAxMjcuMC4w
LjEKK0Rlc3RpbmF0aW9uOiBsb2NhbGhvc3QKK0NhbXBhaWduIElEOiAzCitDb252ZXJzaW9uIGRh
dGE6IDEyCitDb252ZXJzaW9uIHByaW9yaXR5OiA0CitDb252ZXJzaW9uIGVhcmxpZXN0IHRpbWUg
dG8gc2VuZDogV2l0aGluIDI0LTQ4IGhvdXJzCitDb252ZXJzaW9uIHJlcXVlc3Qgc2VudDogZmFs
c2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlY29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWhp
Z2hlci1wcmlvcml0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZWZlMTRkZjUyOWVhNGZkNWU3Y2M4NWNk
ZTBmYmVhYTkyMTE3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0
eS5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBpbnRlcm5hbDpBZENsaWNrQXR0cmli
dXRpb25FbmFibGVkPXRydWUgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxt
ZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0i
d2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0LCAwKSI+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCB0aGUgYXR0cmlidXRpb24gaXMgdXBkYXRlZCBp
ZiBpdCBnZXRzIGEgc2Vjb25kIGNvbnZlcnNpb24gd2l0aCBoaWdoZXIgcHJpb3JpdHkuPC9kaXY+
Cis8YSBpZD0idGFyZ2V0TGluayI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBjb25zdCBwYXRoID0gIi9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25k
LWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbCI7CisgICAgY29uc3QgY29uZmln
dXJhdGlvbiA9IFsKKyAgICAgICAgeworICAgICAgICAgICAgaHJlZjogImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCIgKyBwYXRoICsgIj9zdGVwVHdvIiwKKyAgICAgICAgICAgIGFkY2FtcGFpZ25pZDog
IjMiLAorICAgICAgICAgICAgYWRkZXN0aW5hdGlvbjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIK
KyAgICAgICAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBjb25maWd1cmVMaW5rKGluZGV4KSB7
CisgICAgICAgIGxldCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJn
ZXRMaW5rIik7CisgICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGNvbmZp
Z3VyYXRpb25baW5kZXhdLmhyZWYpOworICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImFkY2FtcGFpZ25pZCIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmFkY2FtcGFpZ25pZCk7CisgICAg
ICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRkZXN0aW5hdGlvbiIsIGNvbmZpZ3VyYXRp
b25baW5kZXhdLmFkZGVzdGluYXRpb24pOworICAgIH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NM
Q2VydGlmaWNhdGUodHJ1ZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50
KGVsZW1lbnRJRCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGVsZW1lbnRJRCk7CisgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0
ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIFVJSGVscGVy
LmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJG
QUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjb252ZXJ0KHByaW9yaXR5LCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcGl4ZWxFbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIik7CisgICAgICAgIGlmIChwaXhlbEVs
ZW1lbnQpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBpeGVsRWxlbWVu
dCk7CisKKyAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpOworICAgICAgICBpbWFnZUVsZW1lbnQuc3JjID0gImh0dHBzOi8vMTI3LjAuMC4xOjg0
NDMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9yZWRpcmVjdFRvQ29udmVyc2lvbi5waHA/
Y29udmVyc2lvbkRhdGE9MTImcHJpb3JpdHk9IiArIHByaW9yaXR5OworICAgICAgICBpbWFnZUVs
ZW1lbnQuaWQgPSAicGl4ZWwiOworICAgICAgICBpbWFnZUVsZW1lbnQub25lcnJvciA9IGNhbGxi
YWNrOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIiIp
IHsKKyAgICAgICAgICAgICAgICAvLyBBZCBjbGljayAxMjcuMC4wLjEg4oCTPiBsb2NhbGhvc3Qu
CisgICAgICAgICAgICAgICAgY29uZmlndXJlTGluaygwKTsKKyAgICAgICAgICAgICAgICBhY3Rp
dmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93
LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIC8vIENv
bnZlcnQgdGhlIGFkIGNsaWNrIHdpdGggcHJpb3JpdHkgMy4KKyAgICAgICAgICAgICAgICBjb252
ZXJ0KCIwMyIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRo
ZSBhZCBjbGljayB3aXRoIHByaW9yaXR5IDQuCisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnQo
IjA0IiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBZENsaWNrQXR0cmlidXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFVua25vd24gd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArICIuIjsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
dXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7CisgICAgICAgIH0KKyAg
ICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93
ZXItcHJpb3JpdHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzAzY2ZkYmEzZWZmNTA5MTgyNWZlY2Y0MmFjYWY0YzFmMTgxYWU4
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgdGhlIGF0dHJpYnV0aW9uIGlzIG5vdCB1cGRh
dGVkIGlmIGl0IGdldHMgYSBzZWNvbmQgY29udmVyc2lvbiB3aXRoIGxvd2VyIHByaW9yaXR5Lgor
CisKK0NvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnM6CitXZWJDb3JlOjpBZENsaWNrQXR0
cmlidXRpb24gMQorU291cmNlOiAxMjcuMC4wLjEKK0Rlc3RpbmF0aW9uOiBsb2NhbGhvc3QKK0Nh
bXBhaWduIElEOiAzCitDb252ZXJzaW9uIGRhdGE6IDEyCitDb252ZXJzaW9uIHByaW9yaXR5OiA0
CitDb252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogV2l0aGluIDI0LTQ4IGhvdXJzCitD
b252ZXJzaW9uIHJlcXVlc3Qgc2VudDogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXIt
cHJpb3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NmVmYmExOTk2MDhkZjhhMWVkMDcwMGQ3NTI3NmI3MmYwOTQ5NWVmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZl
cnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhRE9DVFlQ
RSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1
ZSBpbnRlcm5hbDpBZENsaWNrQXR0cmlidXRpb25FbmFibGVkPXRydWUgXSAtLT4KKzxodG1sIGxh
bmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxl
PTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGlt
ZW91dChydW5UZXN0LCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCB0aGUg
YXR0cmlidXRpb24gaXMgbm90IHVwZGF0ZWQgaWYgaXQgZ2V0cyBhIHNlY29uZCBjb252ZXJzaW9u
IHdpdGggbG93ZXIgcHJpb3JpdHkuPC9kaXY+Cis8YSBpZD0idGFyZ2V0TGluayI+TGluazwvYT48
YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBjb25zdCBwYXRoID0g
Ii9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0
eS5odG1sIjsKKyAgICBjb25zdCBjb25maWd1cmF0aW9uID0gWworICAgICAgICB7CisgICAgICAg
ICAgICBocmVmOiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIiArIHBhdGggKyAiP3N0ZXBUd28iLAor
ICAgICAgICAgICAgYWRjYW1wYWlnbmlkOiAiMyIsCisgICAgICAgICAgICBhZGRlc3RpbmF0aW9u
OiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIgorICAgICAgICB9CisgICAgXTsKKworICAgIGZ1bmN0
aW9uIGNvbmZpZ3VyZUxpbmsoaW5kZXgpIHsKKyAgICAgICAgbGV0IGxpbmtFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKTsKKyAgICAgICAgbGlua0VsZW1lbnQu
c2V0QXR0cmlidXRlKCJocmVmIiwgY29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7CisgICAgICAg
IGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRjYW1wYWlnbmlkIiwgY29uZmlndXJhdGlvbltp
bmRleF0uYWRjYW1wYWlnbmlkKTsKKyAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJh
ZGRlc3RpbmF0aW9uIiwgY29uZmlndXJhdGlvbltpbmRleF0uYWRkZXN0aW5hdGlvbik7CisgICAg
fQorCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNl
bnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAg
ICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50
aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbnZlcnQocHJpb3JpdHksIGNhbGxiYWNrKSB7
CisgICAgICAgIGxldCBwaXhlbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4
ZWwiKTsKKyAgICAgICAgaWYgKHBpeGVsRWxlbWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQocGl4ZWxFbGVtZW50KTsKKworICAgICAgICBsZXQgaW1hZ2VFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgIGltYWdlRWxlbWVudC5z
cmMgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2Vz
L3JlZGlyZWN0VG9Db252ZXJzaW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiZwcmlvcml0eT0iICsg
cHJpb3JpdHk7CisgICAgICAgIGltYWdlRWxlbWVudC5pZCA9ICJwaXhlbCI7CisgICAgICAgIGlt
YWdlRWxlbWVudC5vbmVycm9yID0gY2FsbGJhY2s7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cubG9jYXRpb24uc2VhcmNoID09PSAiIikgeworICAgICAgICAgICAgICAgIC8vIEFkIGNsaWNr
IDEyNy4wLjAuMSDigJM+IGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBjb25maWd1cmVMaW5r
KDApOworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOworICAg
ICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP3N0ZXBUd28i
KSB7CisgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgYWQgY2xpY2sgd2l0aCBwcmlvcml0
eSA0LgorICAgICAgICAgICAgICAgIGNvbnZlcnQoIjA0IiwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFkIGNsaWNrIHdpdGggcHJpb3JpdHkgMy4KKyAg
ICAgICAgICAgICAgICAgICAgY29udmVydCgiMDMiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5u
ZXJUZXh0ID0gIkZBSUwgVW5rbm93biB3aW5kb3cubG9jYXRpb24uc2VhcmNoID09ICIgKyB3aW5k
b3cubG9jYXRpb24uc2VhcmNoICsgIi4iOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRl
c3RSdW5uZXIuIjsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
c2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252
ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IDNlYTkwMTIxYTI5YTYzMDM5NGRmZjk5
MjZlMmI5YmFlODMzMGZhYWIuLjc3ZTI4YjAxZGFmNjY1YjIwYThhZWI1MTk4YzdkNTc3ZDU4NDAx
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9u
LWNvbnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTksMTEgKzksNSBAQCBDb252ZXJz
aW9uIHJlY2VpdmVkLgogSFRUUF9IT1NUOiAxMjcuMC4wLjE6ODAwMAogUkVRVUVTVF9VUkk6IC9h
ZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucGhwP2NvbnZlcnNp
b249MTImY2FtcGFpZ249MwogTm8gY29va2llcyBpbiBjb252ZXJzaW9uIHJlcXVlc3QuCi1XZWJD
b3JlOjpBZENsaWNrQXR0cmlidXRpb24gMQotU291cmNlOiAxMjcuMC4wLjEKLURlc3RpbmF0aW9u
OiBsb2NhbGhvc3QKLUNhbXBhaWduIElEOiAzCi1Db252ZXJzaW9uIGRhdGE6IDEyCi1Db252ZXJz
aW9uIHByaW9yaXR5OiAwCi1Db252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogV2l0aGlu
IDI0LTQ4IGhvdXJzCi1Db252ZXJzaW9uIHJlcXVlc3Qgc2VudDogdHJ1ZQorCitObyBzdG9yZWQg
QWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1
ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5k
LWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sCmluZGV4IDAwMDk4N2ZhYzliMjZi
MDI2NjA0MzEyNGU0N2FmYzg2NDEwMTkzNmUuLmVhMjI2OThiNGY5OTI3ZjhkZjIwMWQwYjdlODY5
YzUwNDc1NWZiZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0
dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlv
bi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbApAQCAtMTgsNiArMTgsOCBAQAogICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFt
ZXNBc1RleHQoKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZSh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJz
aW9uVVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHA/bm9uY2U9IiArIG5vbmNlKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyh0cnVlKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElE
KSB7CkBAIC01Myw4ICs1NSw2IEBACiAgICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50Lm9uZXJy
b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ29udmVyc2lvbkRh
dGFJZnJhbWVBbmRGaW5pc2goKTsKICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3Rpbmco
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZl
cnNpb25SZXBvcnQucGhwP25vbmNlPSIgKyBub25jZSk7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVzdGluZyh0cnVlKTsK
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgi
dGFyZ2V0TGluayIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0
cmlidXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDhhYjdmOWUzZDk1MjU1ZjJmY2Q5NTEwM2Q5YzZi
NjNkZmJkZWI2N2UuLmNmZDMxYTk3YmYxY2ZhY2Y2NTUyYmY1ZjIyNGUyMTMxNDBlMDFhOTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3Jl
LWFkLWNsaWNrLWF0dHJpYnV0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1hZC1jbGljay1hdHRyaWJ1dGlvbi1leHBl
Y3RlZC50eHQKQEAgLTEsNiArMSw3IEBACiBUZXN0cyBzdG9yYWdlIG9mIGFkIGNsaWNrIGF0dHJp
YnV0aW9uLgogCiAKK1VuY29udmVydGVkIEFkIENsaWNrIEF0dHJpYnV0aW9uczoKIFdlYkNvcmU6
OkFkQ2xpY2tBdHRyaWJ1dGlvbiAxCiBTb3VyY2U6IDEyNy4wLjAuMQogRGVzdGluYXRpb246IGxv
Y2FsaG9zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>