<?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>142998</bug_id>
          
          <creation_ts>2015-03-23 21:30:48 -0700</creation_ts>
          <short_desc>Make URL filter patterns matching consistent and add a simple canonicalization step</short_desc>
          <delta_ts>2015-03-24 16:25:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1079547</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-23 21:30:48 -0700</bug_when>
    <thetext>Make URL filter patterns matching consistent and add a simple canonicalization step</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079551</commentid>
    <comment_count>1</comment_count>
      <attachid>249311</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-23 21:37:50 -0700</bug_when>
    <thetext>Created attachment 249311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079644</commentid>
    <comment_count>2</comment_count>
      <attachid>249311</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-24 10:53:30 -0700</bug_when>
    <thetext>Comment on attachment 249311
Patch

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

Hooray! Fewer DFA nodes!  This looks good, but there are a few things that need to be addressed.

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:260
&gt; +            // &quot;.*&quot; is the only simple term matching any string.
&gt; +            return isUniversalTransition() &amp;&amp; m_quantifier == AtomQuantifier::ZeroOrMore;

You forgot about our good friend .?

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:273
&gt; +                // -(.)*, (.+)*, (.?)* etc.

Put some parsing test cases in for these.
testPatternStatus(&quot;(.?)*&quot;, ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
etc.

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:768
&gt; +        Term canonicalDotStart(Term::UniversalTransition);

canonicalDotStar

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:774
&gt; +            bool isAfterDotStart = false;

isAfterDotStar

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:777
&gt; +                    m_sunkTerms.remove(termIndex);

This is removing from the middle of a vector, which could be slow.  I think we should use a Deque for m_sunkTerms, only remove the first term while it matches everything, then prepend the canonicalDotStar if we removed anything.

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:795
&gt; +        if (m_sunkTerms.size() &gt; 2 &amp;&amp; m_sunkTerms.last().isEndOfLineAssertion() &amp;&amp; m_sunkTerms[m_sunkTerms.size() - 1].isKnownToMatchAnyString())

m_sunkTerms[m_sunkTerms.size() - 2].isKnownToMatchAnyString(), right?

&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:348
&gt; +    const char* termsKnownToMatchAnythingFilter = &quot;[{\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre1.*post1$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre2(.*)post2$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre3(.*)?post3$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre4(.*)+post4$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre5(.*)*post5$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre6(.)*post6$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre7(.+)*post7$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre8(.?)*post8$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre9(.+)?post9$\&quot;}}, {\&quot;action\&quot;:{\&quot;type\&quot;:\&quot;block\&quot;},\&quot;trigger\&quot;:{\&quot;url-filter\&quot;:\&quot;^pre9(.?)+post9$\&quot;}}]&quot;;

Put each action on its own line here and elsewhere.  This will match the other tests.
Also, you have two pre9/post9 pairs.  Replace one with pre0/post0 and add a test for it.

&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:355
&gt; +    testRequest(backend, mainDocumentRequest(&quot;pre1://webkit.org/post1&quot;), { ContentExtensions::ActionType::BlockLoad });

Put some failures in like pre1://webkit.org/post2

&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:416
&gt; +    // The patten must finish with cat, with any number of of

any number of s&apos;s following it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079723</commentid>
    <comment_count>3</comment_count>
      <attachid>249311</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-24 14:23:27 -0700</bug_when>
    <thetext>Comment on attachment 249311
Patch

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

&gt;&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:260
&gt;&gt; +            return isUniversalTransition() &amp;&amp; m_quantifier == AtomQuantifier::ZeroOrMore;
&gt; 
&gt; You forgot about our good friend .?

I think you are mixing this with matchesAtLeastOneCharacter(). &quot;.?&quot; does not match any string. It only match a string of size 0 or 1.

&gt;&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:777
&gt;&gt; +                    m_sunkTerms.remove(termIndex);
&gt; 
&gt; This is removing from the middle of a vector, which could be slow.  I think we should use a Deque for m_sunkTerms, only remove the first term while it matches everything, then prepend the canonicalDotStar if we removed anything.

I don&apos;t think it is worth speculating the performance of this yet. This should be dwarfed by any operations of the DFA graph since it is so much bigger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079724</commentid>
    <comment_count>4</comment_count>
      <attachid>249353</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-24 14:25:21 -0700</bug_when>
    <thetext>Created attachment 249353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079757</commentid>
    <comment_count>5</comment_count>
      <attachid>249353</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-24 16:00:11 -0700</bug_when>
    <thetext>Comment on attachment 249353
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:458
&gt; +    // The patten must finish with cat, with any number of &apos;s&apos; following it, but no other character.

pattern</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079768</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-24 16:25:15 -0700</bug_when>
    <thetext>Committed r181917: &lt;http://trac.webkit.org/changeset/181917&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249311</attachid>
            <date>2015-03-23 21:37:50 -0700</date>
            <delta_ts>2015-03-24 14:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142998-20150323213714.patch</filename>
            <type>text/plain</type>
            <size>29349</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU3YTI1MGMzNGUzMGVh
ZjZlOGNlMWQ1ZTk0NmU3ZWU2NDQ5MmRmYy4uMDcxNzk1NmU5OGY2YjcxMDE4MjEzODY0ZDYzNjBl
ZjUyOGVmMWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTAzLTIzICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVVJMIGZp
bHRlciBwYXR0ZXJucyBtYXRjaGluZyBjb25zaXN0ZW50IGFuZCBhZGQgYSBzaW1wbGUgY2Fub25p
Y2FsaXphdGlvbiBzdGVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI5OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHR3byBjaGFuZ2VzIHRvIHRoZSB1cmwgZmlsdGVyIGlu
cHV0OgorICAgICAgICAtTWFrZSB0aGUgbWF0Y2hpbmcgIlNlYXJjaCIgYnkgZGVmYXVsdCwgdGhl
IHBhdHRlcm4gY2FuIG5vdyBhcHBlYXIgYW55d2hlcmUKKyAgICAgICAgIGluIHRoZSBVUkwgYnkg
ZGVmYXVsdC4KKyAgICAgICAgLU1ha2UgdGhlIGlucHV0IGEgbGl0dGxlIGxlc3MgZnJhZ2lsZTog
ZG8gbm90IGV4cGxvZGUgb24gdmFsaWQgaW5wdXQKKyAgICAgICAgIHRoYXQgaXMgbm90IGZvcm1h
dHRlZCBpbiBhIGNlcnRhaW4gd2F5LgorCisgICAgICAgIFRvIGltcGxlbWVudCB0aGUgc2VhcmNo
IGJlaGF2aW9yLCBJIHNpbXBseSBhZGQgYW4gaW1wbGljdCAiLioiIGluIGZyb250IG9mIHRoZSBw
YXR0ZXJucworICAgICAgICB3aGVuIHRoYXQgbWFrZSBzZW5zZS4KKworICAgICAgICBUbyBtYWtl
IHRoZSBpbnB1dCBtb3JlIHNvbGlkLCB3ZSBkbyBzb21lIGxpdHRsZSBtb2RpZmljYXRpb24gb24g
dGhlIGlucHV0OgorICAgICAgICAtUmVtb3ZlIGR1cGxpY2F0ZWQgIi4qIi4KKyAgICAgICAgLVJl
bW92ZSBtYXRjaGluZyBzdWZmaXhlcyB0aGF0IGRvIG5vdCBicmluZyBuZXcgaW5mb3JtYXRpb24u
CisgICAgICAgIC1VbmlmeSBhbGwgdGhlICIuKiIgaW4gdGhlIHNhbWUgZm9ybWF0LgorCisgICAg
ICAgIFdoeSBkbyB0aGF0IGhlcmU/IFRoYXQgc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCBhIGdyYXBo
IGFuYWx5c2lzIG9uIHRoZSBtYWNoaW5lLgorCisgICAgICAgIFRoZSByZWFzb24gaXMgdGhpcyBp
cyBpbmNyZWRpYmx5IGNoZWFwIGNvbXBhcmVkIHRvIHRoZSBncmFwaCBhbmFseXNpcy4gQW55IHN0
YXRlCisgICAgICAgIHJlbW92ZWQgdXBmcm9udCB3aWxsIHNhdmUgdGhlIGhhbmRsaW5nIG9mIHNl
dmVyYWwgaHVuZHJlZCBub2RlcyBpbiB0aGUgZGV0ZXJtaW5pc3RpYworICAgICAgICBncmFwaC4K
KworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VGVybTo6aXNLbm93blRvTWF0Y2hBbnlT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OmlzVW5p
dmVyc2FsVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
R3JhcGhCdWlsZGVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6R3JhcGhCdWlsZGVyOjphc3NlcnRpb25CT0wpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpzaW1wbGlmeVN1bmtUZXJtcyk6CisKIDIw
MTUtMDMtMjMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBGaXggYXBpIHRlc3RzIGFmdGVyIHIxODE4NzYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAppbmRleCBkMGZlZjg3
M2ZhODFlNWExMTRmMmMyYTUwMTQyN2VmM2YxZTlmZjdmLi43ZWI3NjBiNGZhNTYwZjcxZWE3YjNh
ZDkwZGQ4ZjU4NDhhNDJlMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKQEAgLTI0NCw2ICsyNDQsNTAgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICAvLyBNYXRjaGVzIGFueSBzdHJp
bmcsIHRoZSBlbXB0eSBzdHJpbmcgaW5jbHVkZWQuCisgICAgLy8gVGhpcyBpcyB2ZXJ5IGNvbnNl
cnZhdGl2ZS4gUGF0dGVybnMgbWF0Y2hpbmcgYW55IHN0cmluZyBjYW4gcmV0dXJuIGZhbHNlIGhl
cmUuCisgICAgYm9vbCBpc0tub3duVG9NYXRjaEFueVN0cmluZygpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKworICAgICAgICBzd2l0Y2ggKG1fdGVybVR5cGUpIHsK
KyAgICAgICAgY2FzZSBUZXJtVHlwZTo6RW1wdHk6CisgICAgICAgIGNhc2UgVGVybVR5cGU6OkRl
bGV0ZWQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFRlcm1UeXBlOjpDaGFyYWN0ZXJTZXQ6CisgICAgICAgICAgICAv
LyAiLioiIGlzIHRoZSBvbmx5IHNpbXBsZSB0ZXJtIG1hdGNoaW5nIGFueSBzdHJpbmcuCisgICAg
ICAgICAgICByZXR1cm4gaXNVbml2ZXJzYWxUcmFuc2l0aW9uKCkgJiYgbV9xdWFudGlmaWVyID09
IEF0b21RdWFudGlmaWVyOjpaZXJvT3JNb3JlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVGVybVR5cGU6Okdyb3VwOiB7CisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgaW5maW5p
dGVseSBtYW55IHdheXMgdG8gbWF0Y2ggYW55dGhpbmcgd2l0aCBncm91cHMsIHdlIGp1c3QgaGFu
ZGxlIHNpbXBsZSBjYXNlcworICAgICAgICAgICAgaWYgKG1fYXRvbURhdGEuZ3JvdXAudGVybXMu
c2l6ZSgpICE9IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICBjb25zdCBUZXJtJiBmaXJzdFRlcm1Jbkdyb3VwID0gbV9hdG9tRGF0YS5ncm91cC50ZXJtcy5m
aXJzdCgpOworICAgICAgICAgICAgLy8gLSguKikgd2l0aCBhbnkgcXVhbnRpZmllci4KKyAgICAg
ICAgICAgIGlmIChmaXJzdFRlcm1Jbkdyb3VwLmlzS25vd25Ub01hdGNoQW55U3RyaW5nKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChmaXJzdFRlcm1J
bkdyb3VwLmlzVW5pdmVyc2FsVHJhbnNpdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gLSgu
KSosICguKykqLCAoLj8pKiBldGMuCisgICAgICAgICAgICAgICAgaWYgKG1fcXVhbnRpZmllciA9
PSBBdG9tUXVhbnRpZmllcjo6WmVyb09yTW9yZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyAtKC4rKT8uCisgICAgICAgICAgICAgICAgaWYg
KG1fcXVhbnRpZmllciA9PSBBdG9tUXVhbnRpZmllcjo6WmVyb09yT25lICYmIGZpcnN0VGVybUlu
R3JvdXAubV9xdWFudGlmaWVyID09IEF0b21RdWFudGlmaWVyOjpPbmVPck1vcmUpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gLSguPykrLgor
ICAgICAgICAgICAgICAgIGlmIChtX3F1YW50aWZpZXIgPT0gQXRvbVF1YW50aWZpZXI6Ok9uZU9y
TW9yZSAmJiBmaXJzdFRlcm1Jbkdyb3VwLm1fcXVhbnRpZmllciA9PSBBdG9tUXVhbnRpZmllcjo6
WmVyb09yT25lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKwogICAgIFRlcm0mIG9wZXJhdG9yPShjb25zdCBUZXJtJiBvdGhl
cikKICAgICB7CiAgICAgICAgIGRlc3Ryb3koKTsKQEAgLTMwOCwxMSArMzUyLDI0IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgLy8gVGhpcyBpcyBleGFjdCBmb3IgY2hhcmFjdGVy
IHNldHMgYnV0IGNvbnNlcnZhdGl2ZSBmb3IgZ3JvdXBzLgorICAgIC8vIFRoZSByZXR1cm4gdmFs
dWUgY2FuIGJlIGZhbHNlIGZvciBhIGdyb3VwIGVxdWl2YWxlbnQgdG8gYSB1bml2ZXJzYWwgdHJh
bnNpdGlvbi4KICAgICBib29sIGlzVW5pdmVyc2FsVHJhbnNpdGlvbigpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gbV90ZXJtVHlwZSA9PSBUZXJtVHlwZTo6Q2hhcmFjdGVyU2V0Ci0gICAg
ICAgICAgICAmJiAoKG1fYXRvbURhdGEuY2hhcmFjdGVyU2V0LmludmVydGVkICYmICFtX2F0b21E
YXRhLmNoYXJhY3RlclNldC5jaGFyYWN0ZXJzLmJpdENvdW50KCkpCi0gICAgICAgICAgICAgICAg
fHwgKCFtX2F0b21EYXRhLmNoYXJhY3RlclNldC5pbnZlcnRlZCAmJiBtX2F0b21EYXRhLmNoYXJh
Y3RlclNldC5jaGFyYWN0ZXJzLmJpdENvdW50KCkgPT0gMTI4KSk7CisgICAgICAgIEFTU0VSVChp
c1ZhbGlkKCkpOworCisgICAgICAgIHN3aXRjaCAobV90ZXJtVHlwZSkgeworICAgICAgICBjYXNl
IFRlcm1UeXBlOjpFbXB0eToKKyAgICAgICAgY2FzZSBUZXJtVHlwZTo6RGVsZXRlZDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVGVybVR5cGU6OkNoYXJhY3RlclNldDoKKyAgICAgICAgICAgIHJldHVybiAobV9hdG9t
RGF0YS5jaGFyYWN0ZXJTZXQuaW52ZXJ0ZWQgJiYgIW1fYXRvbURhdGEuY2hhcmFjdGVyU2V0LmNo
YXJhY3RlcnMuYml0Q291bnQoKSkKKyAgICAgICAgICAgICAgICB8fCAoIW1fYXRvbURhdGEuY2hh
cmFjdGVyU2V0LmludmVydGVkICYmIG1fYXRvbURhdGEuY2hhcmFjdGVyU2V0LmNoYXJhY3RlcnMu
Yml0Q291bnQoKSA9PSAxMjgpOworICAgICAgICBjYXNlIFRlcm1UeXBlOjpHcm91cDoKKyAgICAg
ICAgICAgIHJldHVybiBtX2F0b21EYXRhLmdyb3VwLnRlcm1zLnNpemUoKSA9PSAxICYmIG1fYXRv
bURhdGEuZ3JvdXAudGVybXMuZmlyc3QoKS5pc1VuaXZlcnNhbFRyYW5zaXRpb24oKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZ2VuZXJh
dGVTdWJncmFwaEZvckF0b20oTkZBJiBuZmEsIHVpbnQ2NF90IHBhdHRlcm5JZCwgdW5zaWduZWQg
c291cmNlKSBjb25zdApAQCAtNDU5LDYgKzUxNiw4IEBAIHB1YmxpYzoKIAogICAgICAgICBzaW5r
RmxvYXRpbmdUZXJtSWZOZWNlc3NhcnkoKTsKIAorICAgICAgICBzaW1wbGlmeVN1bmtUZXJtcygp
OworCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRlcm1zIHdpdGhv
dXQgPyBvciAqLgogICAgICAgICBib29sIG1hdGNoZXNFdmVyeXRoaW5nID0gdHJ1ZTsKICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiB0ZXJtIDogbV9zdW5rVGVybXMpIHsKQEAgLTQ2Nyw4ICs1MjYs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtYXRjaGVzRXZlcnl0aGluZykKKyAgICAgICAgaWYgKG1hdGNo
ZXNFdmVyeXRoaW5nKSB7CiAgICAgICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6TWF0Y2hl
c0V2ZXJ5dGhpbmcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiB0ZXJtIDogbV9zdW5rVGVybXMpIHsKICAgICAgICAgICAgIEFTU0VS
VChtX2xhc3RQcmVmaXhUcmVlRW50cnkpOwpAQCAtNDg0LDEyICs1NDUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xhc3RQ
cmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLnNldCh0ZXJtLCBXVEY6Om1vdmUobmV4dFByZWZp
eFRyZWVFbnRyeSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFtX25ld1ByZWZpeFN1
YnRyZWVSb290KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV3UHJlZml4U3VidHJlZVJvb3Qg
PSBtX2xhc3RQcmVmaXhUcmVlRW50cnk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV3UHJlZml4
U3RhcmluZ1BvaW50ID0gdGVybTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
CisKICAgICAgICAgICAgICAgICBtX2xhc3RQcmVmaXhUcmVlRW50cnkgPSBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9zdWJ0cmVl
RW5kID0gbV9sYXN0UHJlZml4VHJlZUVudHJ5LT5uZmFOb2RlOwpAQCAtNTY0LDggKzYyMCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGlmIChtX3N1YnRyZWVTdGFydCAhPSBtX3N1YnRyZWVFbmQgfHwgbV9mbG9hdGlu
Z1Rlcm0uaXNWYWxpZCgpIHx8ICFtX29wZW5Hcm91cHMuaXNFbXB0eSgpKQorICAgICAgICBpZiAo
bV9zdWJ0cmVlU3RhcnQgIT0gbV9zdWJ0cmVlRW5kIHx8IG1fZmxvYXRpbmdUZXJtLmlzVmFsaWQo
KSB8fCAhbV9vcGVuR3JvdXBzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZmFpbChVUkxGaWx0
ZXJQYXJzZXI6Ok1pc3BsYWNlZFN0YXJ0T2ZMaW5lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIG1faGFzQmVnaW5uaW5nT2ZMaW5lQXNzZXJ0aW9uID0gdHJ1ZTsK
ICAgICB9CiAKICAgICB2b2lkIGFzc2VydGlvbkVPTCgpCkBAIC02NzEsOSArNzMxLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgaWYgKG1fbmV3UHJlZml4U3VidHJlZVJvb3QpCi0gICAgICAgICAgICBtX25ld1ByZWZp
eFN1YnRyZWVSb290LT5uZXh0UGF0dGVybi5yZW1vdmUobV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQp
OwotCiAgICAgICAgIG1fcGFyc2VTdGF0dXMgPSByZWFzb247CiAgICAgfQogCkBAIC03MDEsNiAr
NzU4LDUwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fZmxvYXRpbmdUZXJtID0gVGVybSgpOwogICAg
IH0KIAorICAgIHZvaWQgc2ltcGxpZnlTdW5rVGVybXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2Zsb2F0aW5nVGVybS5pc1ZhbGlkKCkpOworCisgICAgICAgIGlmIChtX3N1bmtUZXJtcy5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVGVybSBjYW5vbmljYWxE
b3RTdGFydChUZXJtOjpVbml2ZXJzYWxUcmFuc2l0aW9uKTsKKyAgICAgICAgY2Fub25pY2FsRG90
U3RhcnQucXVhbnRpZnkoQXRvbVF1YW50aWZpZXI6Olplcm9Pck1vcmUpOworCisgICAgICAgIC8v
IFJlcGxhY2UgZXZlcnkgIi4qIi1saWtlIHRlcm1zIGJ5IG91ciBjYW5vbmljYWwgdmVyc2lvbi4g
UmVtb3ZlIGFueSBkdXBsaWNhdGUgIi4qIi4KKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWdu
ZWQgdGVybUluZGV4ID0gMDsKKyAgICAgICAgICAgIGJvb2wgaXNBZnRlckRvdFN0YXJ0ID0gZmFs
c2U7CisgICAgICAgICAgICB3aGlsZSAodGVybUluZGV4IDwgbV9zdW5rVGVybXMuc2l6ZSgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzQWZ0ZXJEb3RTdGFydCAmJiBtX3N1bmtUZXJtc1t0ZXJt
SW5kZXhdLmlzS25vd25Ub01hdGNoQW55U3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9zdW5rVGVybXMucmVtb3ZlKHRlcm1JbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpc0FmdGVyRG90U3RhcnQg
PSBmYWxzZTsKKworICAgICAgICAgICAgICAgIGlmIChtX3N1bmtUZXJtc1t0ZXJtSW5kZXhdLmlz
S25vd25Ub01hdGNoQW55U3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdW5rVGVy
bXNbdGVybUluZGV4XSA9IGNhbm9uaWNhbERvdFN0YXJ0OworICAgICAgICAgICAgICAgICAgICBp
c0FmdGVyRG90U3RhcnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICArK3Rlcm1JbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEFk
ZCBvdXIgIi4qIiBpbiBmcm9udCBpZiBuZWVkZWQuCisgICAgICAgIGlmICghbV9oYXNCZWdpbm5p
bmdPZkxpbmVBc3NlcnRpb24gJiYgIW1fc3Vua1Rlcm1zLmZpcnN0KCkuaXNLbm93blRvTWF0Y2hB
bnlTdHJpbmcoKSkKKyAgICAgICAgICAgIG1fc3Vua1Rlcm1zLmluc2VydCgwLCBjYW5vbmljYWxE
b3RTdGFydCk7CisKKyAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nICIuKiQiLgorICAgICAgICBp
ZiAobV9zdW5rVGVybXMuc2l6ZSgpID4gMiAmJiBtX3N1bmtUZXJtcy5sYXN0KCkuaXNFbmRPZkxp
bmVBc3NlcnRpb24oKSAmJiBtX3N1bmtUZXJtc1ttX3N1bmtUZXJtcy5zaXplKCkgLSAxXS5pc0tu
b3duVG9NYXRjaEFueVN0cmluZygpKQorICAgICAgICAgICAgbV9zdW5rVGVybXMuc2hyaW5rKG1f
c3Vua1Rlcm1zLnNpemUoKSAtIDIpOworCisgICAgICAgIC8vIFJlbW92ZSBpcnJlbGV2YW50IHRl
cm1zIHRoYXQgY2FuIG1hdGNoIGVtcHR5LiBGb3IgZXhhbXBsZSBpbiAiZm9vYj8iLCBtYXRjaGlu
ZyAiYiIgaXMgaXJyZWxldmFudC4KKyAgICAgICAgaWYgKG1fc3Vua1Rlcm1zLmxhc3QoKS5pc0Vu
ZE9mTGluZUFzc2VydGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3aGlsZSAo
IW1fc3Vua1Rlcm1zLmlzRW1wdHkoKSAmJiAhbV9zdW5rVGVybXMubGFzdCgpLm1hdGNoZXNBdExl
YXN0T25lQ2hhcmFjdGVyKCkpCisgICAgICAgICAgICBtX3N1bmtUZXJtcy5yZW1vdmVMYXN0KCk7
CisgICAgfQorCiAgICAgTkZBJiBtX25mYTsKICAgICBib29sIG1fcGF0dGVybklzQ2FzZVNlbnNp
dGl2ZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3BhdHRlcm5JZDsKQEAgLTcxMiw5ICs4MTMsOSBA
QCBwcml2YXRlOgogICAgIERlcXVlPFRlcm0+IG1fb3Blbkdyb3VwczsKICAgICBWZWN0b3I8VGVy
bT4gbV9zdW5rVGVybXM7CiAgICAgVGVybSBtX2Zsb2F0aW5nVGVybTsKKyAgICBib29sIG1faGFz
QmVnaW5uaW5nT2ZMaW5lQXNzZXJ0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vz
c2VkRW5kT2ZMaW5lQXNzZXJ0aW9uIHsgZmFsc2UgfTsKIAotICAgIFByZWZpeFRyZWVFbnRyeSog
bV9uZXdQcmVmaXhTdWJ0cmVlUm9vdCA9IG51bGxwdHI7CiAgICAgVGVybSBtX25ld1ByZWZpeFN0
YXJpbmdQb2ludDsKIAogICAgIFVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgbV9wYXJzZVN0
YXR1czsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA0ODk1YjVlMWVjNjI0YWI5M2I1YjQ4ZTg5ZTI0YjFjNjQxMTg2MWU5Li5kZTUxOGE3NDc2MGUw
Mjg3N2ZmMzlhMmU5NjA0NjM1MzVkZTUxZDkwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDMtMjMgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBVUkwgZmls
dGVyIHBhdHRlcm5zIG1hdGNoaW5nIGNvbnNpc3RlbnQgYW5kIGFkZCBhIHNpbXBsZSBjYW5vbmlj
YWxpemF0aW9uIHN0ZXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0Mjk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cDoKKwogMjAxNS0wMy0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWdyZXNzaW9uKHIxODEyNTcpOiBXVEZfV29ya1F1ZXVlLlNpbXBsZSBpcyBmbGFr
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRF
eHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAKaW5kZXggNDExYWFiMGJmNTJjN2YyZTg1MGRlYjEyOTY2ZTc4NzkxMTJm
NWQyNy4uOGVlM2MzYjRhODQxM2IyZWU5Yzk1OWNmMzg5YmU3M2U5MzBmNzQzMSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUmVzb3VyY2VMb2FkSW5mbyBtYWluRG9jdW1lbnRS
ZXF1ZXN0KGNvbnN0IGNoYXIqIHVybCwgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZQogICAgIHJl
dHVybiB7IFVSTChVUkwoKSwgdXJsKSwgVVJMKFVSTCgpLCB1cmwpLCByZXNvdXJjZVR5cGUgfTsK
IH0KIAotY29uc3QgY2hhciogYmFzaWNGaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qd2Via2l0Lm9yZ1wifX1d
IjsKK2NvbnN0IGNoYXIqIGJhc2ljRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCJ9fV0iOwog
CiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIEJhc2ljKQogewpAQCAtMTMwLDcgKzEzMCw3
IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQmFzaWMpCiAKIFRFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgUmFuZ2VCYXNpYykKIHsKLSAgICBjb25zdCBjaGFyKiByYW5nZUJhc2lj
RmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCIuKndbMC05XWNcIiwgXCJ1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0
aXZlXCI6dHJ1ZX19LHtcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrLWNvb2tpZXNcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLipbQS1IXVthLXpdY2tvXCIsIFwidXJsLWZpbHRl
ci1pcy1jYXNlLXNlbnNpdGl2ZVwiOnRydWV9fV0iOworICAgIGNvbnN0IGNoYXIqIHJhbmdlQmFz
aWNGaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwi
OntcInVybC1maWx0ZXJcIjpcIndbMC05XWNcIiwgXCJ1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0
aXZlXCI6dHJ1ZX19LHtcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrLWNvb2tpZXNcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiW0EtSF1bYS16XWNrb1wiLCBcInVybC1maWx0ZXIt
aXMtY2FzZS1zZW5zaXRpdmVcIjp0cnVlfX1dIjsKICAgICBhdXRvIGV4dGVuc2lvbkRhdGEgPSBD
b250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KHJhbmdlQmFzaWNGaWx0ZXIpOwogICAg
IGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0
ZShXVEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOwogCkBAIC0xNTcsNyArMTU3LDcgQEAgVEVTVF9G
KENvbnRlbnRFeHRlbnNpb25UZXN0LCBSYW5nZUJhc2ljKQogVEVTVF9GKENvbnRlbnRFeHRlbnNp
b25UZXN0LCBSYW5nZUV4Y2x1c2lvbkdlbmVyYXRpbmdVbml2ZXJzYWxUcmFuc2l0aW9uKQogewog
ICAgIC8vIFRyYW5zaXRpb24gb2YgdGhlIHR5cGUgKFteWF1YKSBlZmZpY3RpdmVseSB0cmFuc2l0
aW9uIG9uIGV2ZXJ5IGlucHV0LgotICAgIGNvbnN0IGNoYXIqIHJhbmdlRXhjbHVzaW9uR2VuZXJh
dGluZ1VuaXZlcnNhbFRyYW5zaXRpb25GaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qW15hXSthZm9vYmFyXCJ9
fV0iOworICAgIGNvbnN0IGNoYXIqIHJhbmdlRXhjbHVzaW9uR2VuZXJhdGluZ1VuaXZlcnNhbFRy
YW5zaXRpb25GaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcIlteYV0rYWZvb2JhclwifX1dIjsKICAgICBhdXRvIGV4
dGVuc2lvbkRhdGEgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KHJhbmdlRXhj
bHVzaW9uR2VuZXJhdGluZ1VuaXZlcnNhbFRyYW5zaXRpb25GaWx0ZXIpOwogICAgIGF1dG8gZXh0
ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShXVEY6Om1v
dmUoZXh0ZW5zaW9uRGF0YSkpOwogCkBAIC0xNzgsMTAgKzE3OCw5IEBAIFRFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgUmFuZ2VFeGNsdXNpb25HZW5lcmF0aW5nVW5pdmVyc2FsVHJhbnNpdGlv
bikKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8v
dzNjLm9yZy9BQWZvb2JhciIpLCB7IH0pOwogfQogCi1jb25zdCBjaGFyKiBwYXR0ZXJuc1N0YXJ0
aW5nV2l0aEdyb3VwRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoaHR0cDovL3doYXR3Z1xcXFwub3JnLyk/d2Vi
a2l0XDEzNFwxMzQub3JnXCJ9fV0iOwotCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFBh
dHRlcm5TdGFydGluZ1dpdGhHcm91cCkKIHsKKyAgICBjb25zdCBjaGFyKiBwYXR0ZXJuc1N0YXJ0
aW5nV2l0aEdyb3VwRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGh0dHA6Ly93aGF0d2dcXFxcLm9yZy8pP3dl
YmtpdFwxMzRcMTM0Lm9yZ1wifX1dIjsKICAgICBhdXRvIGV4dGVuc2lvbkRhdGEgPSBDb250ZW50
RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KHBhdHRlcm5zU3RhcnRpbmdXaXRoR3JvdXBGaWx0
ZXIpOwogICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNp
b246OmNyZWF0ZShXVEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOwogCkBAIC0xOTUsMTAgKzE5NCwx
MCBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFBhdHRlcm5TdGFydGluZ1dpdGhHcm91
cCkKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8v
d2hhdHdnLm9yZyIpLCB7IH0pOwogfQogCi1jb25zdCBjaGFyKiBwYXR0ZXJuTmVzdGVkR3JvdXBz
RmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJodHRwOi8vd2Via2l0XFxcXC5vcmcvKGZvbyhiYXIpKikrXCJ9fV0i
OwotCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFBhdHRlcm5OZXN0ZWRHcm91cHMpCiB7
CisgICAgY29uc3QgY2hhciogcGF0dGVybk5lc3RlZEdyb3Vwc0ZpbHRlciA9ICJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXmh0
dHA6Ly93ZWJraXRcXFxcLm9yZy8oZm9vKGJhcikqKStcIn19XSI7CisKICAgICBhdXRvIGV4dGVu
c2lvbkRhdGEgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KHBhdHRlcm5OZXN0
ZWRHcm91cHNGaWx0ZXIpOwogICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENv
bnRlbnRFeHRlbnNpb246OmNyZWF0ZShXVEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOwogCkBAIC0y
MTgsMTAgKzIxNywxMCBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFBhdHRlcm5OZXN0
ZWRHcm91cHMpCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
aHR0cDovL3dlYmtpdC5vcmcvZm9iYXIiKSwgeyB9KTsKIH0KIAotY29uc3QgY2hhciogbWF0Y2hQ
YXN0RW5kT2ZTdHJpbmdGaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4rXCJ9fV0iOwotCiBURVNUX0YoQ29udGVu
dEV4dGVuc2lvblRlc3QsIE1hdGNoUGFzdEVuZE9mU3RyaW5nKQogeworICAgIGNvbnN0IGNoYXIq
IG1hdGNoUGFzdEVuZE9mU3RyaW5nRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuK1wifX1dIjsKKwogICAgIGF1
dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QobWF0
Y2hQYXN0RW5kT2ZTdHJpbmdGaWx0ZXIpOwogICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlD
b21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShXVEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkp
OwogCkBAIC0yNTgsMTAgKzI1Nyw5IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgU3Rh
cnRPZkxpbmVBc3NlcnRpb24pCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiaHR0cDovL2Zvb2Jhci5vcmcvIiksIHsgfSk7CiB9CiAKLWNvbnN0IGNoYXIqIGVu
ZE9mTGluZUFzc2VydGlvbkZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLipmb29iYXIkXCJ9fV0iOwotCiBURVNU
X0YoQ29udGVudEV4dGVuc2lvblRlc3QsIEVuZE9mTGluZUFzc2VydGlvbikKIHsKKyAgICBjb25z
dCBjaGFyKiBlbmRPZkxpbmVBc3NlcnRpb25GaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVc
IjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImZvb2JhciRcIn19XSI7
CiAgICAgYXV0byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxl
TGlzdChlbmRPZkxpbmVBc3NlcnRpb25GaWx0ZXIpOwogICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5N
ZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShXVEY6Om1vdmUoZXh0ZW5zaW9u
RGF0YSkpOwogCkBAIC0yNzgsNyArMjc2LDcgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0
LCBFbmRPZkxpbmVBc3NlcnRpb24pCiAKIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgRW5k
T2ZMaW5lQXNzZXJ0aW9uV2l0aEludmVydGVkQ2hhcmFjdGVyU2V0KQogewotICAgIGNvbnN0IGNo
YXIqIGVuZE9mTGluZUFzc2VydGlvbldpdGhJbnZlcnRlZENoYXJhY3RlclNldEZpbHRlciA9ICJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiLipbXnldJFwifX1dIjsKKyAgICBjb25zdCBjaGFyKiBlbmRPZkxpbmVBc3NlcnRpb25X
aXRoSW52ZXJ0ZWRDaGFyYWN0ZXJTZXRGaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIlteeV0kXCJ9fV0iOwogICAg
IGF1dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3Qo
ZW5kT2ZMaW5lQXNzZXJ0aW9uV2l0aEludmVydGVkQ2hhcmFjdGVyU2V0RmlsdGVyKTsKICAgICBh
dXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUo
V1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKIApAQCAtMjk1LDEzICsyOTMsMTQxIEBAIFRFU1Rf
RihDb250ZW50RXh0ZW5zaW9uVGVzdCwgRW5kT2ZMaW5lQXNzZXJ0aW9uV2l0aEludmVydGVkQ2hh
cmFjdGVyU2V0KQogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Imh0dHA6Ly93ZWJraXQub3JnL2Zvb2JhcnkiKSwgeyB9KTsKICAgICB0ZXN0UmVxdWVzdChiYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy9mb29iYXJZIiksIHsg
fSk7CiB9Ci0gICAgCi1jb25zdCBjaGFyKiBsb2FkVHlwZUZpbHRlciA9ICJbe1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLip3ZWJr
aXQub3JnXCIsXCJsb2FkLXR5cGVcIjpbXCJ0aGlyZC1wYXJ0eVwiXX19LCIKLSAgICAie1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
Lip3aGF0d2cub3JnXCIsXCJsb2FkLXR5cGVcIjpbXCJmaXJzdC1wYXJ0eVwiXX19LCIKLSAgICAi
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiLiphbHdheXNibG9jay5wZGZcIn19XSI7CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9u
VGVzdCwgUHJlZml4SW5maXhTdWZmaXhFeGFjdE1hdGNoKQoreworICAgIGNvbnN0IGNoYXIqIHBy
ZWZpeEluZml4U3VmZml4RXhhY3RNYXRjaEZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiaW5maXhcIn19LCB7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCJecHJlZml4XCJ9fSwge1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2Vy
XCI6e1widXJsLWZpbHRlclwiOlwic3VmZml4JFwifX0sIHtcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl5odHRwOi8vZXhhY3RcXFxc
Lm9yZy8kXCJ9fV0iOworICAgIGF1dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRlbnNpb25z
Ojpjb21waWxlUnVsZUxpc3QocHJlZml4SW5maXhTdWZmaXhFeGFjdE1hdGNoRmlsdGVyKTsKKyAg
ICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVh
dGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKKworICAgIENvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKKyAgICBiYWNrZW5kLmFkZENvbnRlbnRF
eHRlbnNpb24oIlByZWZpeEluZml4U3VmZml4RXhhY3RNYXRjaCIsIGV4dGVuc2lvbik7CisKKyAg
ICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJpbmZpeDovL3dlYmtp
dC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
KyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vaW5m
aXgub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7
CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly93
ZWJraXQub3JnL2luZml4IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2Nr
TG9hZCB9KTsKKworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
InByZWZpeDovL3dlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJodHRwczovL3ByZWZpeC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly93ZWJraXQub3JnL3ByZWZpeCIpLCB7IH0p
OworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6
Ly93ZWJraXQub3JnL3N1ZmZpeCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiaHR0cHM6Ly9zdWZmaXgub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInN1ZmZpeDovL3dlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAg
ICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vZXhhY3Qu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL2V4YWN0
Lm9yZy9vb3BzIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgRHVw
bGljYXRlZE1hdGNoQWxsVGVybXNJblZhcmlvdXNGb3JtYXQpCit7CisgICAgY29uc3QgY2hhciog
ZHVwbGljYXRlZE1hdGNoQWxsVGVybXNJblZhcmlvdXNGb3JtYXRGaWx0ZXIgPSAiW3tcImFjdGlv
blwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4q
LiooLikqKC4qKSguKykqKC4/KSppbmZpeFwifX0sIHtcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInByZSguPykrKC4rKT9wb3N0XCJ9
fV0iOworICAgIGF1dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxl
UnVsZUxpc3QoZHVwbGljYXRlZE1hdGNoQWxsVGVybXNJblZhcmlvdXNGb3JtYXRGaWx0ZXIpOwor
ICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNy
ZWF0ZShXVEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOworCisgICAgQ29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCBiYWNrZW5kOworICAgIGJhY2tlbmQuYWRkQ29udGVu
dEV4dGVuc2lvbigiRHVwbGljYXRlZE1hdGNoQWxsVGVybXNJblZhcmlvdXNGb3JtYXQiLCBleHRl
bnNpb24pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
aW5maXg6Ly93ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiaHR0cDovL2luZml4Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHBzOi8vd2Via2l0Lm9yZy9pbmZpeCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJwcmU6Ly93ZWJraXQub3JnL3Bvc3QiKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9wcmVwb3N0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vcHJlLm9yZy9wb3N0dGFpbCIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
YmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly9wcmUucHJlL3Bvc3R0YWlsIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3ByZS5vcmcvcG9z
dHRhaWxwb3N0IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBz
Oi8vcG9zdC5vcmcvcHJlIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiaHR0cHM6Ly9wcmUub3JnL3ByZSIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vcG9zdC5vcmcvcG9zdCIp
LCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFRlcm1zS25vd25Ub01h
dGNoQW55dGhpbmcpCit7CisgICAgY29uc3QgY2hhciogdGVybXNLbm93blRvTWF0Y2hBbnl0aGlu
Z0ZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwiXnByZTEuKnBvc3QxJFwifX0sIHtcImFjdGlvblwiOntcInR5cGVc
IjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl5wcmUyKC4qKXBvc3Qy
JFwifX0sIHtcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIl5wcmUzKC4qKT9wb3N0MyRcIn19LCB7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJecHJlNCguKikrcG9zdDQk
XCJ9fSwge1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwiXnByZTUoLiopKnBvc3Q1JFwifX0sIHtcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl5wcmU2KC4pKnBvc3Q2JFwi
fX0sIHtcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIl5wcmU3KC4rKSpwb3N0NyRcIn19LCB7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJecHJlOCguPykqcG9zdDgkXCJ9
fSwge1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiXnByZTkoLispP3Bvc3Q5JFwifX0sIHtcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl5wcmU5KC4/KStwb3N0OSRcIn19
XSI7CisgICAgYXV0byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVS
dWxlTGlzdCh0ZXJtc0tub3duVG9NYXRjaEFueXRoaW5nRmlsdGVyKTsKKyAgICBhdXRvIGV4dGVu
c2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3Zl
KGV4dGVuc2lvbkRhdGEpKTsKKworICAgIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQgYmFja2VuZDsKKyAgICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oIlRl
cm1zS25vd25Ub01hdGNoQW55dGhpbmciLCBleHRlbnNpb24pOworCisgICAgdGVzdFJlcXVlc3Qo
YmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgicHJlMTovL3dlYmtpdC5vcmcvcG9zdDEiKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTI6Ly93ZWJraXQub3JnL3Bv
c3QyIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJwcmUzOi8vd2Via2l0
Lm9yZy9wb3N0MyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQg
fSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgicHJlNDov
L3dlYmtpdC5vcmcvcG9zdDQiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
InByZTU6Ly93ZWJraXQub3JnL3Bvc3Q1IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJwcmU2Oi8vd2Via2l0Lm9yZy9wb3N0NiIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgicHJlNzovL3dlYmtpdC5vcmcvcG9zdDciKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTg6Ly93ZWJraXQub3JnL3Bvc3Q4IiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChi
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJwcmU5Oi8vd2Via2l0Lm9yZy9wb3N0OSIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cit9CisKK1RFU1Rf
RihDb250ZW50RXh0ZW5zaW9uVGVzdCwgVHJhaWxpbmdEb3RTdGFyKQoreworICAgIGNvbnN0IGNo
YXIqIHRyYWlsaW5nRG90U3RhckZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxv
Y2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiZm9vLiokXCJ9fSwge1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYmFy
KC4qKSRcIn19XSI7CisgICAgYXV0byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6
OmNvbXBpbGVSdWxlTGlzdCh0cmFpbGluZ0RvdFN0YXJGaWx0ZXIpOworICAgIGF1dG8gZXh0ZW5z
aW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShXVEY6Om1vdmUo
ZXh0ZW5zaW9uRGF0YSkpOworCisgICAgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCBiYWNrZW5kOworICAgIGJhY2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbigiVHJh
aWxpbmdEb3RTdGFyIiwgZXh0ZW5zaW9uKTsKKworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImZvbzovL3dlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL2Zvby5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5mb28vIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvZm9vIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKworICAgIHRlc3RSZXF1ZXN0
KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImJhcjovL3dlYmtpdC5vcmcvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL2Jhci5vcmcvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5iYXIvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmFy
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKK30KKwor
VEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBUcmFpbGluZ1Rlcm1zQ2FycnlpbmdOb0RhdGEp
Cit7CisgICAgY29uc3QgY2hhciogdHJhaWxpbmdUZXJtc0NhcnJ5aW5nTm9EYXRhRmlsdGVyID0g
Ilt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmls
dGVyXCI6XCJmb29iP2E/cj9cIn19LCB7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJiYXpvKG9rKT9hPyRcIn19LCB7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJjYXRz
KiRcIn19XSI7CisgICAgYXV0byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNv
bXBpbGVSdWxlTGlzdCh0cmFpbGluZ1Rlcm1zQ2FycnlpbmdOb0RhdGFGaWx0ZXIpOworICAgIGF1
dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShX
VEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOworCisgICAgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRl
bnRFeHRlbnNpb25zQmFja2VuZCBiYWNrZW5kOworICAgIGJhY2tlbmQuYWRkQ29udGVudEV4dGVu
c2lvbigiVHJhaWxpbmdUZXJtc0NhcnJ5aW5nTm9EYXRhIiwgZXh0ZW5zaW9uKTsKKworICAgIHRl
c3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9y
Zy8iKSwgeyB9KTsKKworICAgIC8vIEFueXRoaW5nIGlzIGZpbmUgYWZ0ZXIgZm9vLgorICAgIHRl
c3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9y
Zy9mb28iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Vi
a2l0Lm9yZy9mb29iIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRw
czovL3dlYmtpdC5vcmcvZm9vYyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiaHR0cHM6Ly93ZWJraXQub3JnL2Zvb2JhIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvZm9vYmFyIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvZm9vYmFyLXN0dWZmIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKworICAgIC8vIEJh
em9va2EgaGFzIHRvIGJlIGF0IHRoZSB0YWlsIHdpdGhvdXQgYW55IGNoYXJhY3RlciBub3QgZGVm
aW5lZCBieSB0aGUgZmlsdGVyLgorICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9iYXoiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6byIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly93ZWJraXQub3Jn
L2Jhem9hIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
KyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dl
YmtpdC5vcmcvYmF6b2IiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6b28iKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcv
YmF6b29rIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
KyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dl
YmtpdC5vcmcvYmF6b29rYiIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9iYXpvb2thIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6b29rYWEiKSwg
eyB9KTsKKworICAgIC8vIFRoZSBwYXR0ZW4gbXVzdCBmaW5pc2ggd2l0aCBjYXQsIHdpdGggYW55
IG51bWJlciBvZiBvZgorICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHBzOi8vY2F0Lm9yZy8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL2NhdHMub3JnLyIpLCB7IH0pOworICAgIHRlc3RS
ZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9j
YXQiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0
Lm9yZy9jYXRzIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczov
L3dlYmtpdC5vcmcvY2F0c3MiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Imh0dHBzOi8vd2Via2l0Lm9yZy9jYXRzc3MiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworfQogCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIExv
YWRUeXBlKQogeworICAgIGNvbnN0IGNoYXIqIGxvYWRUeXBlRmlsdGVyID0gIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJr
aXQub3JnXCIsXCJsb2FkLXR5cGVcIjpbXCJ0aGlyZC1wYXJ0eVwiXX19LCIKKyAgICAgICAgIntc
ImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIndoYXR3Zy5vcmdcIixcImxvYWQtdHlwZVwiOltcImZpcnN0LXBhcnR5XCJdfX0sIgorICAg
ICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwiYWx3YXlzYmxvY2sucGRmXCJ9fV0iOworCiAgICAgYXV0byBleHRlbnNpb25E
YXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChsb2FkVHlwZUZpbHRlcik7
CiAgICAgYXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6
Y3JlYXRlKFdURjo6bW92ZShleHRlbnNpb25EYXRhKSk7CiAgICAgICAgIApAQCAtMzE3LDEyICs0
NDMsMTIgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBMb2FkVHlwZSkKICAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vZm9vYmFyLm9yZy9h
bHdheXNibG9jay5wZGYiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOwogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHtVUkwoVVJMKCksICJodHRwOi8vZm9v
YmFyLm9yZy9hbHdheXNibG9jay5wZGYiKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF9mb29iYXIu
b3JnL2Fsd2F5c2Jsb2NrLnBkZiIpLCBSZXNvdXJjZVR5cGU6OkRvY3VtZW50fSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwogfQotICAgIAotY29uc3QgY2hh
ciogcmVzb3VyY2VUeXBlRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKmJsb2NrX2FsbF90eXBlcy5vcmdcIixc
InJlc291cmNlLXR5cGVcIjpbXCJkb2N1bWVudFwiLFwiaW1hZ2VcIixcInN0eWxlLXNoZWV0XCIs
XCJzY3JpcHRcIixcImZvbnRcIixcInJhd1wiLFwic3ZnLWRvY3VtZW50XCIsXCJtZWRpYVwiXX19
LCIKLSAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiLipibG9ja19vbmx5X2ltYWdlc1wiLFwicmVzb3VyY2UtdHlwZVwiOltc
ImltYWdlXCJdfX1dIjsKLSAgICAKKwogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBSZXNv
dXJjZVR5cGUpCiB7CisgICAgY29uc3QgY2hhciogcmVzb3VyY2VUeXBlRmlsdGVyID0gIlt7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCJibG9ja19hbGxfdHlwZXMub3JnXCIsXCJyZXNvdXJjZS10eXBlXCI6W1wiZG9jdW1lbnRcIixc
ImltYWdlXCIsXCJzdHlsZS1zaGVldFwiLFwic2NyaXB0XCIsXCJmb250XCIsXCJyYXdcIixcInN2
Zy1kb2N1bWVudFwiLFwibWVkaWFcIl19fSwiCisgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImJsb2NrX29ubHlfaW1hZ2Vz
XCIsXCJyZXNvdXJjZS10eXBlXCI6W1wiaW1hZ2VcIl19fV0iOworCiAgICAgYXV0byBleHRlbnNp
b25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChyZXNvdXJjZVR5cGVG
aWx0ZXIpOwogICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRl
bnNpb246OmNyZWF0ZShXVEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249353</attachid>
            <date>2015-03-24 14:25:21 -0700</date>
            <delta_ts>2015-03-24 16:00:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142998-20150324142444.patch</filename>
            <type>text/plain</type>
            <size>32496</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU3YTI1MGMzNGUzMGVh
ZjZlOGNlMWQ1ZTk0NmU3ZWU2NDQ5MmRmYy4uMDcxNzk1NmU5OGY2YjcxMDE4MjEzODY0ZDYzNjBl
ZjUyOGVmMWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTAzLTIzICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVVJMIGZp
bHRlciBwYXR0ZXJucyBtYXRjaGluZyBjb25zaXN0ZW50IGFuZCBhZGQgYSBzaW1wbGUgY2Fub25p
Y2FsaXphdGlvbiBzdGVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI5OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHR3byBjaGFuZ2VzIHRvIHRoZSB1cmwgZmlsdGVyIGlu
cHV0OgorICAgICAgICAtTWFrZSB0aGUgbWF0Y2hpbmcgIlNlYXJjaCIgYnkgZGVmYXVsdCwgdGhl
IHBhdHRlcm4gY2FuIG5vdyBhcHBlYXIgYW55d2hlcmUKKyAgICAgICAgIGluIHRoZSBVUkwgYnkg
ZGVmYXVsdC4KKyAgICAgICAgLU1ha2UgdGhlIGlucHV0IGEgbGl0dGxlIGxlc3MgZnJhZ2lsZTog
ZG8gbm90IGV4cGxvZGUgb24gdmFsaWQgaW5wdXQKKyAgICAgICAgIHRoYXQgaXMgbm90IGZvcm1h
dHRlZCBpbiBhIGNlcnRhaW4gd2F5LgorCisgICAgICAgIFRvIGltcGxlbWVudCB0aGUgc2VhcmNo
IGJlaGF2aW9yLCBJIHNpbXBseSBhZGQgYW4gaW1wbGljdCAiLioiIGluIGZyb250IG9mIHRoZSBw
YXR0ZXJucworICAgICAgICB3aGVuIHRoYXQgbWFrZSBzZW5zZS4KKworICAgICAgICBUbyBtYWtl
IHRoZSBpbnB1dCBtb3JlIHNvbGlkLCB3ZSBkbyBzb21lIGxpdHRsZSBtb2RpZmljYXRpb24gb24g
dGhlIGlucHV0OgorICAgICAgICAtUmVtb3ZlIGR1cGxpY2F0ZWQgIi4qIi4KKyAgICAgICAgLVJl
bW92ZSBtYXRjaGluZyBzdWZmaXhlcyB0aGF0IGRvIG5vdCBicmluZyBuZXcgaW5mb3JtYXRpb24u
CisgICAgICAgIC1VbmlmeSBhbGwgdGhlICIuKiIgaW4gdGhlIHNhbWUgZm9ybWF0LgorCisgICAg
ICAgIFdoeSBkbyB0aGF0IGhlcmU/IFRoYXQgc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCBhIGdyYXBo
IGFuYWx5c2lzIG9uIHRoZSBtYWNoaW5lLgorCisgICAgICAgIFRoZSByZWFzb24gaXMgdGhpcyBp
cyBpbmNyZWRpYmx5IGNoZWFwIGNvbXBhcmVkIHRvIHRoZSBncmFwaCBhbmFseXNpcy4gQW55IHN0
YXRlCisgICAgICAgIHJlbW92ZWQgdXBmcm9udCB3aWxsIHNhdmUgdGhlIGhhbmRsaW5nIG9mIHNl
dmVyYWwgaHVuZHJlZCBub2RlcyBpbiB0aGUgZGV0ZXJtaW5pc3RpYworICAgICAgICBncmFwaC4K
KworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VGVybTo6aXNLbm93blRvTWF0Y2hBbnlT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OmlzVW5p
dmVyc2FsVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
R3JhcGhCdWlsZGVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6R3JhcGhCdWlsZGVyOjphc3NlcnRpb25CT0wpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpzaW1wbGlmeVN1bmtUZXJtcyk6CisKIDIw
MTUtMDMtMjMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBGaXggYXBpIHRlc3RzIGFmdGVyIHIxODE4NzYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAppbmRleCBkMGZlZjg3
M2ZhODFlNWExMTRmMmMyYTUwMTQyN2VmM2YxZTlmZjdmLi4yNWE5MDlmNDEzZjdlMTlmMjM2NGU1
MmYyMjBjZTdmYzkyMDY2MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKQEAgLTI0NCw2ICsyNDQsNTAgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICAvLyBNYXRjaGVzIGFueSBzdHJp
bmcsIHRoZSBlbXB0eSBzdHJpbmcgaW5jbHVkZWQuCisgICAgLy8gVGhpcyBpcyB2ZXJ5IGNvbnNl
cnZhdGl2ZS4gUGF0dGVybnMgbWF0Y2hpbmcgYW55IHN0cmluZyBjYW4gcmV0dXJuIGZhbHNlIGhl
cmUuCisgICAgYm9vbCBpc0tub3duVG9NYXRjaEFueVN0cmluZygpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKworICAgICAgICBzd2l0Y2ggKG1fdGVybVR5cGUpIHsK
KyAgICAgICAgY2FzZSBUZXJtVHlwZTo6RW1wdHk6CisgICAgICAgIGNhc2UgVGVybVR5cGU6OkRl
bGV0ZWQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFRlcm1UeXBlOjpDaGFyYWN0ZXJTZXQ6CisgICAgICAgICAgICAv
LyAiLioiIGlzIHRoZSBvbmx5IHNpbXBsZSB0ZXJtIG1hdGNoaW5nIGFueSBzdHJpbmcuCisgICAg
ICAgICAgICByZXR1cm4gaXNVbml2ZXJzYWxUcmFuc2l0aW9uKCkgJiYgbV9xdWFudGlmaWVyID09
IEF0b21RdWFudGlmaWVyOjpaZXJvT3JNb3JlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVGVybVR5cGU6Okdyb3VwOiB7CisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgaW5maW5p
dGVseSBtYW55IHdheXMgdG8gbWF0Y2ggYW55dGhpbmcgd2l0aCBncm91cHMsIHdlIGp1c3QgaGFu
ZGxlIHNpbXBsZSBjYXNlcworICAgICAgICAgICAgaWYgKG1fYXRvbURhdGEuZ3JvdXAudGVybXMu
c2l6ZSgpICE9IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICBjb25zdCBUZXJtJiBmaXJzdFRlcm1Jbkdyb3VwID0gbV9hdG9tRGF0YS5ncm91cC50ZXJtcy5m
aXJzdCgpOworICAgICAgICAgICAgLy8gLSguKikgd2l0aCBhbnkgcXVhbnRpZmllci4KKyAgICAg
ICAgICAgIGlmIChmaXJzdFRlcm1Jbkdyb3VwLmlzS25vd25Ub01hdGNoQW55U3RyaW5nKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChmaXJzdFRlcm1J
bkdyb3VwLmlzVW5pdmVyc2FsVHJhbnNpdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gLSgu
KSosICguKykqLCAoLj8pKiBldGMuCisgICAgICAgICAgICAgICAgaWYgKG1fcXVhbnRpZmllciA9
PSBBdG9tUXVhbnRpZmllcjo6WmVyb09yTW9yZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyAtKC4rKT8uCisgICAgICAgICAgICAgICAgaWYg
KG1fcXVhbnRpZmllciA9PSBBdG9tUXVhbnRpZmllcjo6WmVyb09yT25lICYmIGZpcnN0VGVybUlu
R3JvdXAubV9xdWFudGlmaWVyID09IEF0b21RdWFudGlmaWVyOjpPbmVPck1vcmUpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gLSguPykrLgor
ICAgICAgICAgICAgICAgIGlmIChtX3F1YW50aWZpZXIgPT0gQXRvbVF1YW50aWZpZXI6Ok9uZU9y
TW9yZSAmJiBmaXJzdFRlcm1Jbkdyb3VwLm1fcXVhbnRpZmllciA9PSBBdG9tUXVhbnRpZmllcjo6
WmVyb09yT25lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKwogICAgIFRlcm0mIG9wZXJhdG9yPShjb25zdCBUZXJtJiBvdGhl
cikKICAgICB7CiAgICAgICAgIGRlc3Ryb3koKTsKQEAgLTMwOCwxMSArMzUyLDI0IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgLy8gVGhpcyBpcyBleGFjdCBmb3IgY2hhcmFjdGVy
IHNldHMgYnV0IGNvbnNlcnZhdGl2ZSBmb3IgZ3JvdXBzLgorICAgIC8vIFRoZSByZXR1cm4gdmFs
dWUgY2FuIGJlIGZhbHNlIGZvciBhIGdyb3VwIGVxdWl2YWxlbnQgdG8gYSB1bml2ZXJzYWwgdHJh
bnNpdGlvbi4KICAgICBib29sIGlzVW5pdmVyc2FsVHJhbnNpdGlvbigpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gbV90ZXJtVHlwZSA9PSBUZXJtVHlwZTo6Q2hhcmFjdGVyU2V0Ci0gICAg
ICAgICAgICAmJiAoKG1fYXRvbURhdGEuY2hhcmFjdGVyU2V0LmludmVydGVkICYmICFtX2F0b21E
YXRhLmNoYXJhY3RlclNldC5jaGFyYWN0ZXJzLmJpdENvdW50KCkpCi0gICAgICAgICAgICAgICAg
fHwgKCFtX2F0b21EYXRhLmNoYXJhY3RlclNldC5pbnZlcnRlZCAmJiBtX2F0b21EYXRhLmNoYXJh
Y3RlclNldC5jaGFyYWN0ZXJzLmJpdENvdW50KCkgPT0gMTI4KSk7CisgICAgICAgIEFTU0VSVChp
c1ZhbGlkKCkpOworCisgICAgICAgIHN3aXRjaCAobV90ZXJtVHlwZSkgeworICAgICAgICBjYXNl
IFRlcm1UeXBlOjpFbXB0eToKKyAgICAgICAgY2FzZSBUZXJtVHlwZTo6RGVsZXRlZDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVGVybVR5cGU6OkNoYXJhY3RlclNldDoKKyAgICAgICAgICAgIHJldHVybiAobV9hdG9t
RGF0YS5jaGFyYWN0ZXJTZXQuaW52ZXJ0ZWQgJiYgIW1fYXRvbURhdGEuY2hhcmFjdGVyU2V0LmNo
YXJhY3RlcnMuYml0Q291bnQoKSkKKyAgICAgICAgICAgICAgICB8fCAoIW1fYXRvbURhdGEuY2hh
cmFjdGVyU2V0LmludmVydGVkICYmIG1fYXRvbURhdGEuY2hhcmFjdGVyU2V0LmNoYXJhY3RlcnMu
Yml0Q291bnQoKSA9PSAxMjgpOworICAgICAgICBjYXNlIFRlcm1UeXBlOjpHcm91cDoKKyAgICAg
ICAgICAgIHJldHVybiBtX2F0b21EYXRhLmdyb3VwLnRlcm1zLnNpemUoKSA9PSAxICYmIG1fYXRv
bURhdGEuZ3JvdXAudGVybXMuZmlyc3QoKS5pc1VuaXZlcnNhbFRyYW5zaXRpb24oKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZ2VuZXJh
dGVTdWJncmFwaEZvckF0b20oTkZBJiBuZmEsIHVpbnQ2NF90IHBhdHRlcm5JZCwgdW5zaWduZWQg
c291cmNlKSBjb25zdApAQCAtNDU5LDYgKzUxNiw4IEBAIHB1YmxpYzoKIAogICAgICAgICBzaW5r
RmxvYXRpbmdUZXJtSWZOZWNlc3NhcnkoKTsKIAorICAgICAgICBzaW1wbGlmeVN1bmtUZXJtcygp
OworCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRlcm1zIHdpdGhv
dXQgPyBvciAqLgogICAgICAgICBib29sIG1hdGNoZXNFdmVyeXRoaW5nID0gdHJ1ZTsKICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiB0ZXJtIDogbV9zdW5rVGVybXMpIHsKQEAgLTQ2Nyw4ICs1MjYs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtYXRjaGVzRXZlcnl0aGluZykKKyAgICAgICAgaWYgKG1hdGNo
ZXNFdmVyeXRoaW5nKSB7CiAgICAgICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6TWF0Y2hl
c0V2ZXJ5dGhpbmcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiB0ZXJtIDogbV9zdW5rVGVybXMpIHsKICAgICAgICAgICAgIEFTU0VS
VChtX2xhc3RQcmVmaXhUcmVlRW50cnkpOwpAQCAtNDg0LDEyICs1NDUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xhc3RQ
cmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLnNldCh0ZXJtLCBXVEY6Om1vdmUobmV4dFByZWZp
eFRyZWVFbnRyeSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFtX25ld1ByZWZpeFN1
YnRyZWVSb290KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV3UHJlZml4U3VidHJlZVJvb3Qg
PSBtX2xhc3RQcmVmaXhUcmVlRW50cnk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV3UHJlZml4
U3RhcmluZ1BvaW50ID0gdGVybTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
CisKICAgICAgICAgICAgICAgICBtX2xhc3RQcmVmaXhUcmVlRW50cnkgPSBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9zdWJ0cmVl
RW5kID0gbV9sYXN0UHJlZml4VHJlZUVudHJ5LT5uZmFOb2RlOwpAQCAtNTY0LDggKzYyMCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGlmIChtX3N1YnRyZWVTdGFydCAhPSBtX3N1YnRyZWVFbmQgfHwgbV9mbG9hdGlu
Z1Rlcm0uaXNWYWxpZCgpIHx8ICFtX29wZW5Hcm91cHMuaXNFbXB0eSgpKQorICAgICAgICBpZiAo
bV9zdWJ0cmVlU3RhcnQgIT0gbV9zdWJ0cmVlRW5kIHx8IG1fZmxvYXRpbmdUZXJtLmlzVmFsaWQo
KSB8fCAhbV9vcGVuR3JvdXBzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZmFpbChVUkxGaWx0
ZXJQYXJzZXI6Ok1pc3BsYWNlZFN0YXJ0T2ZMaW5lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIG1faGFzQmVnaW5uaW5nT2ZMaW5lQXNzZXJ0aW9uID0gdHJ1ZTsK
ICAgICB9CiAKICAgICB2b2lkIGFzc2VydGlvbkVPTCgpCkBAIC02NzEsOSArNzMxLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgaWYgKG1fbmV3UHJlZml4U3VidHJlZVJvb3QpCi0gICAgICAgICAgICBtX25ld1ByZWZp
eFN1YnRyZWVSb290LT5uZXh0UGF0dGVybi5yZW1vdmUobV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQp
OwotCiAgICAgICAgIG1fcGFyc2VTdGF0dXMgPSByZWFzb247CiAgICAgfQogCkBAIC03MDEsNiAr
NzU4LDUwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fZmxvYXRpbmdUZXJtID0gVGVybSgpOwogICAg
IH0KIAorICAgIHZvaWQgc2ltcGxpZnlTdW5rVGVybXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2Zsb2F0aW5nVGVybS5pc1ZhbGlkKCkpOworCisgICAgICAgIGlmIChtX3N1bmtUZXJtcy5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVGVybSBjYW5vbmljYWxE
b3RTdGFyKFRlcm06OlVuaXZlcnNhbFRyYW5zaXRpb24pOworICAgICAgICBjYW5vbmljYWxEb3RT
dGFyLnF1YW50aWZ5KEF0b21RdWFudGlmaWVyOjpaZXJvT3JNb3JlKTsKKworICAgICAgICAvLyBS
ZXBsYWNlIGV2ZXJ5ICIuKiItbGlrZSB0ZXJtcyBieSBvdXIgY2Fub25pY2FsIHZlcnNpb24uIFJl
bW92ZSBhbnkgZHVwbGljYXRlICIuKiIuCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IHRlcm1JbmRleCA9IDA7CisgICAgICAgICAgICBib29sIGlzQWZ0ZXJEb3RTdGFyID0gZmFsc2U7
CisgICAgICAgICAgICB3aGlsZSAodGVybUluZGV4IDwgbV9zdW5rVGVybXMuc2l6ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzQWZ0ZXJEb3RTdGFyICYmIG1fc3Vua1Rlcm1zW3Rlcm1JbmRl
eF0uaXNLbm93blRvTWF0Y2hBbnlTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBtX3N1
bmtUZXJtcy5yZW1vdmUodGVybUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlzQWZ0ZXJEb3RTdGFyID0gZmFs
c2U7CisKKyAgICAgICAgICAgICAgICBpZiAobV9zdW5rVGVybXNbdGVybUluZGV4XS5pc0tub3du
VG9NYXRjaEFueVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3Vua1Rlcm1zW3Rl
cm1JbmRleF0gPSBjYW5vbmljYWxEb3RTdGFyOworICAgICAgICAgICAgICAgICAgICBpc0FmdGVy
RG90U3RhciA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrdGVy
bUluZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIG91ciAi
LioiIGluIGZyb250IGlmIG5lZWRlZC4KKyAgICAgICAgaWYgKCFtX2hhc0JlZ2lubmluZ09mTGlu
ZUFzc2VydGlvbiAmJiAhbV9zdW5rVGVybXMuZmlyc3QoKS5pc0tub3duVG9NYXRjaEFueVN0cmlu
ZygpKQorICAgICAgICAgICAgbV9zdW5rVGVybXMuaW5zZXJ0KDAsIGNhbm9uaWNhbERvdFN0YXIp
OworCisgICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyAiLiokIi4KKyAgICAgICAgaWYgKG1fc3Vu
a1Rlcm1zLnNpemUoKSA+IDIgJiYgbV9zdW5rVGVybXMubGFzdCgpLmlzRW5kT2ZMaW5lQXNzZXJ0
aW9uKCkgJiYgbV9zdW5rVGVybXNbbV9zdW5rVGVybXMuc2l6ZSgpIC0gMl0uaXNLbm93blRvTWF0
Y2hBbnlTdHJpbmcoKSkKKyAgICAgICAgICAgIG1fc3Vua1Rlcm1zLnNocmluayhtX3N1bmtUZXJt
cy5zaXplKCkgLSAyKTsKKworICAgICAgICAvLyBSZW1vdmUgaXJyZWxldmFudCB0ZXJtcyB0aGF0
IGNhbiBtYXRjaCBlbXB0eS4gRm9yIGV4YW1wbGUgaW4gImZvb2I/IiwgbWF0Y2hpbmcgImIiIGlz
IGlycmVsZXZhbnQuCisgICAgICAgIGlmIChtX3N1bmtUZXJtcy5sYXN0KCkuaXNFbmRPZkxpbmVB
c3NlcnRpb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2hpbGUgKCFtX3N1bmtU
ZXJtcy5pc0VtcHR5KCkgJiYgIW1fc3Vua1Rlcm1zLmxhc3QoKS5tYXRjaGVzQXRMZWFzdE9uZUNo
YXJhY3RlcigpKQorICAgICAgICAgICAgbV9zdW5rVGVybXMucmVtb3ZlTGFzdCgpOworICAgIH0K
KwogICAgIE5GQSYgbV9uZmE7CiAgICAgYm9vbCBtX3BhdHRlcm5Jc0Nhc2VTZW5zaXRpdmU7CiAg
ICAgY29uc3QgdWludDY0X3QgbV9wYXR0ZXJuSWQ7CkBAIC03MTIsOSArODEzLDkgQEAgcHJpdmF0
ZToKICAgICBEZXF1ZTxUZXJtPiBtX29wZW5Hcm91cHM7CiAgICAgVmVjdG9yPFRlcm0+IG1fc3Vu
a1Rlcm1zOwogICAgIFRlcm0gbV9mbG9hdGluZ1Rlcm07CisgICAgYm9vbCBtX2hhc0JlZ2lubmlu
Z09mTGluZUFzc2VydGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZEVuZE9m
TGluZUFzc2VydGlvbiB7IGZhbHNlIH07CiAKLSAgICBQcmVmaXhUcmVlRW50cnkqIG1fbmV3UHJl
Zml4U3VidHJlZVJvb3QgPSBudWxscHRyOwogICAgIFRlcm0gbV9uZXdQcmVmaXhTdGFyaW5nUG9p
bnQ7CiAKICAgICBVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIG1fcGFyc2VTdGF0dXM7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDg5NWI1
ZTFlYzYyNGFiOTNiNWI0OGU4OWUyNGIxYzY0MTE4NjFlOS4uZGU1MThhNzQ3NjBlMDI4NzdmZjM5
YTJlOTYwNDYzNTM1ZGU1MWQ5MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAzLTIzICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVVJMIGZpbHRlciBwYXR0
ZXJucyBtYXRjaGluZyBjb25zaXN0ZW50IGFuZCBhZGQgYSBzaW1wbGUgY2Fub25pY2FsaXphdGlv
biBzdGVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDI5OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisKIDIw
MTUtMDMtMjMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVncmVzc2lvbihyMTgxMjU3KTogV1RGX1dvcmtRdWV1ZS5TaW1wbGUgaXMgZmxha3kKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9u
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCmluZGV4IDQxMWFhYjBiZjUyYzdmMmU4NTBkZWIxMjk2NmU3ODc5MTEyZjVkMjcuLjk3
ZmRmOTRiZDBmYjAxYTg1NDgzZWFjNTcwZTFhMzA5NDdmNGJkZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIFJlc291cmNlTG9hZEluZm8gbWFpbkRvY3VtZW50UmVxdWVzdChj
b25zdCBjaGFyKiB1cmwsIFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUKICAgICByZXR1cm4geyBV
UkwoVVJMKCksIHVybCksIFVSTChVUkwoKSwgdXJsKSwgcmVzb3VyY2VUeXBlIH07CiB9CiAKLWNv
bnN0IGNoYXIqIGJhc2ljRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKndlYmtpdC5vcmdcIn19XSI7Citjb25z
dCBjaGFyKiBiYXNpY0ZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wifX1dIjsKIAogVEVTVF9G
KENvbnRlbnRFeHRlbnNpb25UZXN0LCBCYXNpYykKIHsKQEAgLTEzMCw3ICsxMzAsOCBAQCBURVNU
X0YoQ29udGVudEV4dGVuc2lvblRlc3QsIEJhc2ljKQogCiBURVNUX0YoQ29udGVudEV4dGVuc2lv
blRlc3QsIFJhbmdlQmFzaWMpCiB7Ci0gICAgY29uc3QgY2hhciogcmFuZ2VCYXNpY0ZpbHRlciA9
ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiLip3WzAtOV1jXCIsIFwidXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZVwiOnRy
dWV9fSx7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9jay1jb29raWVzXCJ9LFwidHJpZ2dlclwi
OntcInVybC1maWx0ZXJcIjpcIi4qW0EtSF1bYS16XWNrb1wiLCBcInVybC1maWx0ZXItaXMtY2Fz
ZS1zZW5zaXRpdmVcIjp0cnVlfX1dIjsKKyAgICBjb25zdCBjaGFyKiByYW5nZUJhc2ljRmlsdGVy
ID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwt
ZmlsdGVyXCI6XCJ3WzAtOV1jXCIsIFwidXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZVwiOnRy
dWV9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9jay1jb29raWVzXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIltBLUhdW2Etel1ja29cIiwgXCJ1cmwtZmls
dGVyLWlzLWNhc2Utc2Vuc2l0aXZlXCI6dHJ1ZX19XSI7CiAgICAgYXV0byBleHRlbnNpb25EYXRh
ID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChyYW5nZUJhc2ljRmlsdGVyKTsK
ICAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpj
cmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKIApAQCAtMTU3LDcgKzE1OCw3IEBAIFRF
U1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgUmFuZ2VCYXNpYykKIFRFU1RfRihDb250ZW50RXh0
ZW5zaW9uVGVzdCwgUmFuZ2VFeGNsdXNpb25HZW5lcmF0aW5nVW5pdmVyc2FsVHJhbnNpdGlvbikK
IHsKICAgICAvLyBUcmFuc2l0aW9uIG9mIHRoZSB0eXBlIChbXlhdWCkgZWZmaWN0aXZlbHkgdHJh
bnNpdGlvbiBvbiBldmVyeSBpbnB1dC4KLSAgICBjb25zdCBjaGFyKiByYW5nZUV4Y2x1c2lvbkdl
bmVyYXRpbmdVbml2ZXJzYWxUcmFuc2l0aW9uRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBl
XCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKlteYV0rYWZvb2Jh
clwifX1dIjsKKyAgICBjb25zdCBjaGFyKiByYW5nZUV4Y2x1c2lvbkdlbmVyYXRpbmdVbml2ZXJz
YWxUcmFuc2l0aW9uRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJbXmFdK2Fmb29iYXJcIn19XSI7CiAgICAgYXV0
byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChyYW5n
ZUV4Y2x1c2lvbkdlbmVyYXRpbmdVbml2ZXJzYWxUcmFuc2l0aW9uRmlsdGVyKTsKICAgICBhdXRv
IGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
Ojptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKIApAQCAtMTc4LDEwICsxNzksOSBAQCBURVNUX0YoQ29u
dGVudEV4dGVuc2lvblRlc3QsIFJhbmdlRXhjbHVzaW9uR2VuZXJhdGluZ1VuaXZlcnNhbFRyYW5z
aXRpb24pCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0
cDovL3czYy5vcmcvQUFmb29iYXIiKSwgeyB9KTsKIH0KIAotY29uc3QgY2hhciogcGF0dGVybnNT
dGFydGluZ1dpdGhHcm91cEZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGh0dHA6Ly93aGF0d2dcXFxcLm9yZy8p
P3dlYmtpdFwxMzRcMTM0Lm9yZ1wifX1dIjsKLQogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0
LCBQYXR0ZXJuU3RhcnRpbmdXaXRoR3JvdXApCiB7CisgICAgY29uc3QgY2hhciogcGF0dGVybnNT
dGFydGluZ1dpdGhHcm91cEZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihodHRwOi8vd2hhdHdnXFxcXC5vcmcv
KT93ZWJraXRcMTM0XDEzNC5vcmdcIn19XSI7CiAgICAgYXV0byBleHRlbnNpb25EYXRhID0gQ29u
dGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChwYXR0ZXJuc1N0YXJ0aW5nV2l0aEdyb3Vw
RmlsdGVyKTsKICAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKIApAQCAtMTk1LDEwICsx
OTUsMTAgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBQYXR0ZXJuU3RhcnRpbmdXaXRo
R3JvdXApCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0
cDovL3doYXR3Zy5vcmciKSwgeyB9KTsKIH0KIAotY29uc3QgY2hhciogcGF0dGVybk5lc3RlZEdy
b3Vwc0ZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2Vy
XCI6e1widXJsLWZpbHRlclwiOlwiaHR0cDovL3dlYmtpdFxcXFwub3JnLyhmb28oYmFyKSopK1wi
fX1dIjsKLQogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBQYXR0ZXJuTmVzdGVkR3JvdXBz
KQogeworICAgIGNvbnN0IGNoYXIqIHBhdHRlcm5OZXN0ZWRHcm91cHNGaWx0ZXIgPSAiW3tcImFj
dGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Il5odHRwOi8vd2Via2l0XFxcXC5vcmcvKGZvbyhiYXIpKikrXCJ9fV0iOworCiAgICAgYXV0byBl
eHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChwYXR0ZXJu
TmVzdGVkR3JvdXBzRmlsdGVyKTsKICAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKIApA
QCAtMjE4LDEwICsyMTgsMTAgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBQYXR0ZXJu
TmVzdGVkR3JvdXBzKQogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHA6Ly93ZWJraXQub3JnL2ZvYmFyIiksIHsgfSk7CiB9CiAKLWNvbnN0IGNoYXIqIG1h
dGNoUGFzdEVuZE9mU3RyaW5nRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuK1wifX1dIjsKLQogVEVTVF9GKENv
bnRlbnRFeHRlbnNpb25UZXN0LCBNYXRjaFBhc3RFbmRPZlN0cmluZykKIHsKKyAgICBjb25zdCBj
aGFyKiBtYXRjaFBhc3RFbmRPZlN0cmluZ0ZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLitcIn19XSI7CisKICAg
ICBhdXRvIGV4dGVuc2lvbkRhdGEgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0
KG1hdGNoUGFzdEVuZE9mU3RyaW5nRmlsdGVyKTsKICAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVt
b3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRh
dGEpKTsKIApAQCAtMjU4LDEwICsyNTgsOSBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3Qs
IFN0YXJ0T2ZMaW5lQXNzZXJ0aW9uKQogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly9mb29iYXIub3JnLyIpLCB7IH0pOwogfQogCi1jb25zdCBjaGFy
KiBlbmRPZkxpbmVBc3NlcnRpb25GaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qZm9vYmFyJFwifX1dIjsKLQog
VEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBFbmRPZkxpbmVBc3NlcnRpb24pCiB7CisgICAg
Y29uc3QgY2hhciogZW5kT2ZMaW5lQXNzZXJ0aW9uRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJmb29iYXIkXCJ9
fV0iOwogICAgIGF1dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxl
UnVsZUxpc3QoZW5kT2ZMaW5lQXNzZXJ0aW9uRmlsdGVyKTsKICAgICBhdXRvIGV4dGVuc2lvbiA9
IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVu
c2lvbkRhdGEpKTsKIApAQCAtMjc4LDcgKzI3Nyw3IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9u
VGVzdCwgRW5kT2ZMaW5lQXNzZXJ0aW9uKQogCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3Qs
IEVuZE9mTGluZUFzc2VydGlvbldpdGhJbnZlcnRlZENoYXJhY3RlclNldCkKIHsKLSAgICBjb25z
dCBjaGFyKiBlbmRPZkxpbmVBc3NlcnRpb25XaXRoSW52ZXJ0ZWRDaGFyYWN0ZXJTZXRGaWx0ZXIg
PSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIi4qW155XSRcIn19XSI7CisgICAgY29uc3QgY2hhciogZW5kT2ZMaW5lQXNzZXJ0
aW9uV2l0aEludmVydGVkQ2hhcmFjdGVyU2V0RmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBl
XCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJbXnldJFwifX1dIjsK
ICAgICBhdXRvIGV4dGVuc2lvbkRhdGEgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVM
aXN0KGVuZE9mTGluZUFzc2VydGlvbldpdGhJbnZlcnRlZENoYXJhY3RlclNldEZpbHRlcik7CiAg
ICAgYXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3Jl
YXRlKFdURjo6bW92ZShleHRlbnNpb25EYXRhKSk7CiAKQEAgLTI5NSwxMyArMjk0LDE4MyBAQCBU
RVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIEVuZE9mTGluZUFzc2VydGlvbldpdGhJbnZlcnRl
ZENoYXJhY3RlclNldCkKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy9mb29iYXJ5IiksIHsgfSk7CiAgICAgdGVzdFJlcXVlc3Qo
YmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvZm9vYmFyWSIp
LCB7IH0pOwogfQotICAgIAotY29uc3QgY2hhciogbG9hZFR5cGVGaWx0ZXIgPSAiW3tcImFjdGlv
blwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4q
d2Via2l0Lm9yZ1wiLFwibG9hZC10eXBlXCI6W1widGhpcmQtcGFydHlcIl19fSwiCi0gICAgIntc
ImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIi4qd2hhdHdnLm9yZ1wiLFwibG9hZC10eXBlXCI6W1wiZmlyc3QtcGFydHlcIl19fSwiCi0g
ICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIi4qYWx3YXlzYmxvY2sucGRmXCJ9fV0iOworCitURVNUX0YoQ29udGVudEV4dGVu
c2lvblRlc3QsIFByZWZpeEluZml4U3VmZml4RXhhY3RNYXRjaCkKK3sKKyAgICBjb25zdCBjaGFy
KiBwcmVmaXhJbmZpeFN1ZmZpeEV4YWN0TWF0Y2hGaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5
cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImluZml4XCJ9fSwi
CisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJecHJlZml4XCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJzdWZmaXgkXCJ9
fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJeaHR0cDovL2V4YWN0XFxcXC5vcmcvJFwifX1dIjsKKyAgICBh
dXRvIGV4dGVuc2lvbkRhdGEgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KHBy
ZWZpeEluZml4U3VmZml4RXhhY3RNYXRjaEZpbHRlcik7CisgICAgYXV0byBleHRlbnNpb24gPSBJ
bk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURjo6bW92ZShleHRlbnNp
b25EYXRhKSk7CisKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kIGJhY2tlbmQ7CisgICAgYmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJQcmVmaXhJbmZp
eFN1ZmZpeEV4YWN0TWF0Y2giLCBleHRlbnNpb24pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaW5maXg6Ly93ZWJraXQub3JnLyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL2luZml4Lm9yZy8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9pbmZpeCIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisKKyAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJwcmVmaXg6Ly93ZWJraXQub3Jn
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly9wcmVmaXgu
b3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHBzOi8vd2Via2l0Lm9yZy9wcmVmaXgiKSwgeyB9KTsKKworICAgIHRlc3RSZXF1ZXN0
KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9zdWZmaXgi
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRl
c3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vc3VmZml4Lm9y
Zy8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJzdWZmaXg6Ly93ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL2V4YWN0Lm9yZy8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9leGFjdC5vcmcvb29wcyIpLCB7IH0pOwor
fQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIER1cGxpY2F0ZWRNYXRjaEFsbFRlcm1z
SW5WYXJpb3VzRm9ybWF0KQoreworICAgIGNvbnN0IGNoYXIqIGR1cGxpY2F0ZWRNYXRjaEFsbFRl
cm1zSW5WYXJpb3VzRm9ybWF0RmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKi4qKC4pKiguKikoLispKiguPykq
aW5maXhcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwi
dHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInByZSguPykrKC4rKT9wb3N0XCJ9fV0iOworICAg
IGF1dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3Qo
ZHVwbGljYXRlZE1hdGNoQWxsVGVybXNJblZhcmlvdXNGb3JtYXRGaWx0ZXIpOworICAgIGF1dG8g
ZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShXVEY6
Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOworCisgICAgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRF
eHRlbnNpb25zQmFja2VuZCBiYWNrZW5kOworICAgIGJhY2tlbmQuYWRkQ29udGVudEV4dGVuc2lv
bigiRHVwbGljYXRlZE1hdGNoQWxsVGVybXNJblZhcmlvdXNGb3JtYXQiLCBleHRlbnNpb24pOwor
CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaW5maXg6Ly93
ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQg
fSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDov
L2luZml4Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2Fk
IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBz
Oi8vd2Via2l0Lm9yZy9pbmZpeCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJwcmU6Ly93ZWJraXQub3JnL3Bvc3QiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoImh0dHA6Ly9wcmVwb3N0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHBzOi8vcHJlLm9yZy9wb3N0dGFpbCIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly9wcmUucHJlL3Bvc3R0YWlsIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChi
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3ByZS5vcmcvcG9zdHRhaWxwb3N0
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKworICAg
IHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vcG9zdC5v
cmcvcHJlIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cHM6Ly9wcmUub3JnL3ByZSIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vcG9zdC5vcmcvcG9zdCIpLCB7IH0pOwor
fQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFRlcm1zS25vd25Ub01hdGNoQW55dGhp
bmcpCit7CisgICAgY29uc3QgY2hhciogdGVybXNLbm93blRvTWF0Y2hBbnl0aGluZ0ZpbHRlciA9
ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiXnByZTEuKnBvc3QxJFwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXnByZTIoLiopcG9z
dDIkXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJecHJlMyguKik/cG9zdDMkXCJ9fSwiCisgICAgICAg
ICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmls
dGVyXCI6XCJecHJlNCguKikrcG9zdDQkXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJecHJlNSguKikq
cG9zdDUkXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJecHJlNiguKSpwb3N0NiRcIn19LCIKKyAgICAg
ICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIl5wcmU3KC4rKSpwb3N0NyRcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl5wcmU4KC4/
KSpwb3N0OCRcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl5wcmU5KC4rKT9wb3N0OSRcIn19LCIKKyAg
ICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIl5wcmUwKC4/KStwb3N0MCRcIn19XSI7CisgICAgYXV0byBleHRlbnNpb25E
YXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCh0ZXJtc0tub3duVG9NYXRj
aEFueXRoaW5nRmlsdGVyKTsKKyAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKKworICAg
IENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKKyAg
ICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oIlRlcm1zS25vd25Ub01hdGNoQW55dGhpbmci
LCBleHRlbnNpb24pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgicHJlMTovL3dlYmtpdC5vcmcvcG9zdDEiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInByZTI6Ly93ZWJraXQub3JnL3Bvc3QyIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJwcmUzOi8vd2Via2l0Lm9yZy9wb3N0MyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgicHJlNDovL3dlYmtpdC5vcmcvcG9zdDQiKSwgeyBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTU6Ly93ZWJraXQub3JnL3Bvc3Q1
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJwcmU2Oi8vd2Via2l0Lm9y
Zy9wb3N0NiIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7
CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgicHJlNzovL3dl
YmtpdC5vcmcvcG9zdDciKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInBy
ZTg6Ly93ZWJraXQub3JnL3Bvc3Q4IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJwcmU5Oi8vd2Via2l0Lm9yZy9wb3N0OSIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgicHJlMDovL3dlYmtpdC5vcmcvcG9zdDAiKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgicHJlMTovL3dlYmtpdC5vcmcvcG9zdDIiKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJwcmUyOi8vd2Via2l0
Lm9yZy9wb3N0MyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInByZTM6Ly93ZWJraXQub3JnL3Bvc3Q0IiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgicHJlNDovL3dlYmtpdC5vcmcvcG9zdDUi
KSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJw
cmU1Oi8vd2Via2l0Lm9yZy9wb3N0NiIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTY6Ly93ZWJraXQub3JnL3Bvc3Q3IiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgicHJlNzovL3dlYmtp
dC5vcmcvcG9zdDgiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJwcmU4Oi8vd2Via2l0Lm9yZy9wb3N0OSIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTk6Ly93ZWJraXQub3JnL3Bvc3Qw
IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
cHJlMDovL3dlYmtpdC5vcmcvcG9zdDEiKSwgeyB9KTsKKworICAgIHRlc3RSZXF1ZXN0KGJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTA6Ly93ZWJraXQub3JnL3Bvc3QxIiksIHsgfSk7
CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgicHJlMTovL3dl
YmtpdC5vcmcvcG9zdDIiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJwcmUyOi8vd2Via2l0Lm9yZy9wb3N0MyIpLCB7IH0pOworICAgIHRlc3RS
ZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTM6Ly93ZWJraXQub3JnL3Bv
c3Q0IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgicHJlNDovL3dlYmtpdC5vcmcvcG9zdDUiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJwcmU1Oi8vd2Via2l0Lm9yZy9wb3N0NiIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInByZTY6Ly93
ZWJraXQub3JnL3Bvc3Q3IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgicHJlNzovL3dlYmtpdC5vcmcvcG9zdDgiKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJwcmU4Oi8vd2Via2l0Lm9yZy9w
b3N0OSIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInByZTk6Ly93ZWJraXQub3JnL3Bvc3QwIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgVHJhaWxpbmdEb3RTdGFyKQoreworICAgIGNvbnN0IGNoYXIqIHRyYWls
aW5nRG90U3RhckZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiZm9vLiokXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJi
YXIoLiopJFwifX1dIjsKKyAgICBhdXRvIGV4dGVuc2lvbkRhdGEgPSBDb250ZW50RXh0ZW5zaW9u
czo6Y29tcGlsZVJ1bGVMaXN0KHRyYWlsaW5nRG90U3RhckZpbHRlcik7CisgICAgYXV0byBleHRl
bnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURjo6bW92
ZShleHRlbnNpb25EYXRhKSk7CisKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kIGJhY2tlbmQ7CisgICAgYmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJU
cmFpbGluZ0RvdFN0YXIiLCBleHRlbnNpb24pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly93ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAg
dGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZm9vOi8vd2Via2l0Lm9y
Zy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vZm9vLm9y
Zy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0
LmZvby8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Vi
a2l0Lm9yZy9mb28iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2Fk
IH0pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYmFy
Oi8vd2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0
dHBzOi8vYmFyLm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0
dHBzOi8vd2Via2l0LmJhci8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Imh0dHBzOi8vd2Via2l0Lm9yZy9iYXIiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6QmxvY2tMb2FkIH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFRyYWls
aW5nVGVybXNDYXJyeWluZ05vRGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiB0cmFpbGluZ1Rlcm1z
Q2FycnlpbmdOb0RhdGFGaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImZvb2I/YT9yP1wifX0sIgorICAgICAgICAi
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiYmF6byhvayk/YT8kXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJjYXRzKiRcIn19XSI7Cisg
ICAgYXV0byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlz
dCh0cmFpbGluZ1Rlcm1zQ2FycnlpbmdOb0RhdGFGaWx0ZXIpOworICAgIGF1dG8gZXh0ZW5zaW9u
ID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShXVEY6Om1vdmUoZXh0
ZW5zaW9uRGF0YSkpOworCisgICAgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25z
QmFja2VuZCBiYWNrZW5kOworICAgIGJhY2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbigiVHJhaWxp
bmdUZXJtc0NhcnJ5aW5nTm9EYXRhIiwgZXh0ZW5zaW9uKTsKKworICAgIHRlc3RSZXF1ZXN0KGJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy8iKSwgeyB9KTsK
KworICAgIC8vIEFueXRoaW5nIGlzIGZpbmUgYWZ0ZXIgZm9vLgorICAgIHRlc3RSZXF1ZXN0KGJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9mb28iKSwgeyBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9mb29i
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5v
cmcvZm9vYyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7
CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly93
ZWJraXQub3JnL2Zvb2JhIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2Nr
TG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwczovL3dlYmtpdC5vcmcvZm9vYmFyIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvZm9vYmFyLXN0dWZmIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKworICAgIC8vIEJhem9va2EgaGFzIHRv
IGJlIGF0IHRoZSB0YWlsIHdpdGhvdXQgYW55IGNoYXJhY3RlciBub3QgZGVmaW5lZCBieSB0aGUg
ZmlsdGVyLgorICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0
dHBzOi8vd2Via2l0Lm9yZy9iYXoiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6byIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cHM6Ly93ZWJraXQub3JnL2Jhem9hIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6
b2IiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJodHRwczovL3dlYmtpdC5vcmcvYmF6b28iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6b29rIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6
b29rYiIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHBzOi8vd2Via2l0Lm9yZy9iYXpvb2thIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvYmF6b29rYWEiKSwgeyB9KTsKKworICAg
IC8vIFRoZSBwYXR0ZW4gbXVzdCBmaW5pc2ggd2l0aCBjYXQsIHdpdGggYW55IG51bWJlciBvZiAn
cycgZm9sbG93aW5nIGl0LCBidXQgbm8gb3RoZXIgY2hhcmFjdGVyLgorICAgIHRlc3RSZXF1ZXN0
KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vY2F0Lm9yZy8iKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL2Nh
dHMub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9jYXQiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9jYXRzIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwczovL3dlYmtpdC5vcmcvY2F0c3MiKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9jYXRzc3MiKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHBzOi8vd2Via2l0Lm9yZy9j
YXRzbyIpLCB7IH0pOworfQogCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIExvYWRUeXBl
KQogeworICAgIGNvbnN0IGNoYXIqIGxvYWRUeXBlRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3Jn
XCIsXCJsb2FkLXR5cGVcIjpbXCJ0aGlyZC1wYXJ0eVwiXX19LCIKKyAgICAgICAgIntcImFjdGlv
blwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndo
YXR3Zy5vcmdcIixcImxvYWQtdHlwZVwiOltcImZpcnN0LXBhcnR5XCJdfX0sIgorICAgICAgICAi
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiYWx3YXlzYmxvY2sucGRmXCJ9fV0iOworCiAgICAgYXV0byBleHRlbnNpb25EYXRhID0g
Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChsb2FkVHlwZUZpbHRlcik7CiAgICAg
YXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRl
KFdURjo6bW92ZShleHRlbnNpb25EYXRhKSk7CiAgICAgICAgIApAQCAtMzE3LDEyICs0ODYsMTIg
QEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBMb2FkVHlwZSkKICAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vZm9vYmFyLm9yZy9hbHdheXNi
bG9jay5wZGYiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OwogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHtVUkwoVVJMKCksICJodHRwOi8vZm9vYmFyLm9y
Zy9hbHdheXNibG9jay5wZGYiKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF9mb29iYXIub3JnL2Fs
d2F5c2Jsb2NrLnBkZiIpLCBSZXNvdXJjZVR5cGU6OkRvY3VtZW50fSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwogfQotICAgIAotY29uc3QgY2hhciogcmVz
b3VyY2VUeXBlRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKmJsb2NrX2FsbF90eXBlcy5vcmdcIixcInJlc291
cmNlLXR5cGVcIjpbXCJkb2N1bWVudFwiLFwiaW1hZ2VcIixcInN0eWxlLXNoZWV0XCIsXCJzY3Jp
cHRcIixcImZvbnRcIixcInJhd1wiLFwic3ZnLWRvY3VtZW50XCIsXCJtZWRpYVwiXX19LCIKLSAg
ICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiLipibG9ja19vbmx5X2ltYWdlc1wiLFwicmVzb3VyY2UtdHlwZVwiOltcImltYWdl
XCJdfX1dIjsKLSAgICAKKwogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBSZXNvdXJjZVR5
cGUpCiB7CisgICAgY29uc3QgY2hhciogcmVzb3VyY2VUeXBlRmlsdGVyID0gIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJibG9j
a19hbGxfdHlwZXMub3JnXCIsXCJyZXNvdXJjZS10eXBlXCI6W1wiZG9jdW1lbnRcIixcImltYWdl
XCIsXCJzdHlsZS1zaGVldFwiLFwic2NyaXB0XCIsXCJmb250XCIsXCJyYXdcIixcInN2Zy1kb2N1
bWVudFwiLFwibWVkaWFcIl19fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJibG9ja19vbmx5X2ltYWdlc1wi
LFwicmVzb3VyY2UtdHlwZVwiOltcImltYWdlXCJdfX1dIjsKKwogICAgIGF1dG8gZXh0ZW5zaW9u
RGF0YSA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QocmVzb3VyY2VUeXBlRmls
dGVyKTsKICAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKICAgICAgICAgCkBAIC00MjYs
NiArNTk1LDEzIEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgUGF0dGVybk1hdGNoaW5n
VGhlRW1wdHlTdHJpbmcpCiAgICAgdGVzdFBhdHRlcm5TdGF0dXMoIihbYS16XSopIiwgQ29udGVu
dEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXM6Ok1hdGNoZXNFdmVyeXRo
aW5nKTsKICAgICB0ZXN0UGF0dGVyblN0YXR1cygiKFthLXpdPykiLCBDb250ZW50RXh0ZW5zaW9u
czo6VVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6TWF0Y2hlc0V2ZXJ5dGhpbmcpOwogCisg
ICAgdGVzdFBhdHRlcm5TdGF0dXMoIiguKSoiLCBDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVy
UGFyc2VyOjpQYXJzZVN0YXR1czo6TWF0Y2hlc0V2ZXJ5dGhpbmcpOworICAgIHRlc3RQYXR0ZXJu
U3RhdHVzKCIoLispKiIsIENvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OlBhcnNl
U3RhdHVzOjpNYXRjaGVzRXZlcnl0aGluZyk7CisgICAgdGVzdFBhdHRlcm5TdGF0dXMoIiguPykq
IiwgQ29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXM6Ok1hdGNo
ZXNFdmVyeXRoaW5nKTsKKyAgICB0ZXN0UGF0dGVyblN0YXR1cygiKC4qKSoiLCBDb250ZW50RXh0
ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6TWF0Y2hlc0V2ZXJ5dGhpbmcp
OworICAgIHRlc3RQYXR0ZXJuU3RhdHVzKCIoLispPyIsIENvbnRlbnRFeHRlbnNpb25zOjpVUkxG
aWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzOjpNYXRjaGVzRXZlcnl0aGluZyk7CisgICAgdGVzdFBh
dHRlcm5TdGF0dXMoIiguPykrIiwgQ29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6
UGFyc2VTdGF0dXM6Ok1hdGNoZXNFdmVyeXRoaW5nKTsKKwogICAgIC8vIE5lc3RlZCBncm91cHMu
CiAgICAgdGVzdFBhdHRlcm5TdGF0dXMoIigoZm9vKT8oKC4pKikoYmFyKSopIiwgQ29udGVudEV4
dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXM6Ok1hdGNoZXNFdmVyeXRoaW5n
KTsKIH0K
</data>
<flag name="review"
          id="274153"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>