<?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>155010</bug_id>
          
          <creation_ts>2016-03-03 22:36:07 -0800</creation_ts>
          <short_desc>Update defineCustomElement according to the spec rewrite</short_desc>
          <delta_ts>2016-03-04 17:23:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170525</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-03 22:36:07 -0800</bug_when>
    <thetext>Rename document.defineCustomElement to document.defineElement
and disallow a single class from defining multiple custom elements.

Also remove the optional first argument from the HTMLElement constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170527</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-03 22:37:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/24970878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170533</commentid>
    <comment_count>2</comment_count>
      <attachid>272835</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-03 22:53:42 -0800</bug_when>
    <thetext>Created attachment 272835
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171089</commentid>
    <comment_count>3</comment_count>
      <attachid>272835</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 15:45:44 -0800</bug_when>
    <thetext>Comment on attachment 272835
Fixes the bug

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

r=me with questions

&gt; Source/WebCore/dom/CustomElementDefinitions.h:55
&gt; +    bool containsInterface(const JSC::JSObject*) const;

Would naming this &quot;containsConstructor&quot; make more sense?

&gt; Source/WebCore/dom/Document.idl:298
&gt; +    void defineElement(DOMString tagName, CustomElementInterface elementInterface);

The spec has:
void defineElement(DOMString type, Function constructor, optional ElementRegistrationOptions options);

Why the mismatch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171122</commentid>
    <comment_count>4</comment_count>
      <attachid>272835</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 17:15:08 -0800</bug_when>
    <thetext>Comment on attachment 272835
Fixes the bug

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

Thanks for the review!

&gt;&gt; Source/WebCore/dom/CustomElementDefinitions.h:55
&gt;&gt; +    bool containsInterface(const JSC::JSObject*) const;
&gt; 
&gt; Would naming this &quot;containsConstructor&quot; make more sense?

Renamed.

&gt;&gt; Source/WebCore/dom/Document.idl:298
&gt;&gt; +    void defineElement(DOMString tagName, CustomElementInterface elementInterface);
&gt; 
&gt; The spec has:
&gt; void defineElement(DOMString type, Function constructor, optional ElementRegistrationOptions options);
&gt; 
&gt; Why the mismatch?

Changed it to:

void defineElement(DOMString localName, Function constructor);

since we don&apos;t support the optional options argument which is used to subclass subclasses of HTMLElement; e.g. HTMLInputElement.
I&apos;ve also filed a Github issue to rename the first argument to localName: https://github.com/w3c/webcomponents/issues/416
since type is too generic name and doesn&apos;t match the argument name of createElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171124</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 17:23:31 -0800</bug_when>
    <thetext>Committed r197602: &lt;http://trac.webkit.org/changeset/197602&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272835</attachid>
            <date>2016-03-03 22:53:42 -0800</date>
            <delta_ts>2016-03-04 15:45:44 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-155010-20160303225328.patch</filename>
            <type>text/plain</type>
            <size>52828</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTAzLTAzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSBkZWZpbmVDdXN0b21F
bGVtZW50IGFjY29yZGluZyB0byB0aGUgc3BlYyByZXdyaXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI0OTcwODc4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGRlZmluZUN1c3RvbUVsZW1lbnQg
YW5kIEhUTUxDb25zdHJ1Y3RvciBwZXIgcmVjZW50IHJld3JpdGUgb2YgdGhlIHNwZWM6CisgICAg
ICAgIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvY3VzdG9tLyNkb20t
ZG9jdW1lbnQtZGVmaW5lZWxlbWVudAorICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
Y29tcG9uZW50cy9zcGVjL2N1c3RvbS8jaHRtbGVsZW1lbnQtY29uc3RydWN0b3IKKworICAgICAg
ICBkZWZpbmVDdXN0b21FbGVtZW50IGlzIG5vdyBjYWxsZWQgZGVmaW5lRWxlbWVudCBhbmQgd2Ug
ZGlzYWxsb3cgZGVmaW5pbmcgbXVsdGlwbGUgY3VzdG9tIGVsZW1lbnRzIHdpdGgKKyAgICAgICAg
YSBzaW5nbGUgY2xhc3MgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBkZWZpbmVFbGVtZW50Lgor
CisgICAgICAgIFRlc3Q6IGZhc3QvY3VzdG9tLWVsZW1lbnRzL0RvY3VtZW50LWRlZmluZUVsZW1l
bnQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpkZWZpbmVFbGVtZW50KTogUmVuYW1lZCBmcm9t
IGRlZmluZUN1c3RvbUVsZW1lbnQuIFRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBpbnRlcmZh
Y2UKKyAgICAgICAgYWxyZWFkeSBkZWZpbmVzIGFub3RoZXIgY3VzdG9tIGVsZW1lbnQuIEFsc28g
YWRkZWQgRklYTUUncyBmb3IgbWlzc2luZyBzdGVwcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNI
VE1MRWxlbWVudCk6IFJlbW92ZWQgdGhlIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYSB0YWcgbmFt
ZSBpbiB0aGUgZmlyc3QgYXJndW1lbnQgd2hlbgorICAgICAgICBhIHNpbmdsZSBjbGFzcyBkZWZp
bmVzIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyBzaW5jZSB0aGF0IG5vdyByZXN1bHRzIGluIGFu
IGV4Y2VwdGlvbiAoaW4gZGVmaW5lRWxlbWVudCkuCisKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxl
bWVudERlZmluaXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnREZWZp
bml0aW9uczo6Y29udGFpbnNJbnRlcmZhY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vQ3VzdG9t
RWxlbWVudERlZmluaXRpb25zLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVuYW1l
ZCBkZWZpbmVDdXN0b21FbGVtZW50IHRvIGRlZmluZUVsZW1lbnQuCisgICAgICAgICogaHRtbC9I
VE1MRWxlbWVudC5pZGw6IFJlbW92ZWQgdGhlIG9wdGlvbmFsIHRhZyBuYW1lIGZyb20gdGhlIGNv
bnN0cnVjdG9yLgorCiAyMDE2LTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVncmVzc2lvbihyMTk2NzcwKTogVW5hYmxlIHRvIHVzZSBIaXBDaGF0IE1h
YyBhcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAxOTc1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDcgKzEzNSw3IEBA
IEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWMKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLUpTVmFsdWUgSlNEb2N1bWVudDo6ZGVmaW5lQ3VzdG9t
RWxlbWVudChFeGVjU3RhdGUmIHN0YXRlKQorSlNWYWx1ZSBKU0RvY3VtZW50OjpkZWZpbmVFbGVt
ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUoc3RhdGUu
YXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKQEAgLTE2MywxNiArMTYzLDMx
IEBAIEpTVmFsdWUgSlNEb2N1bWVudDo6ZGVmaW5lQ3VzdG9tRWxlbWVudCgKICAgICAgICAgcmV0
dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3Qg
Y29udGFpbiBhbiB1cHBlciBjYXNlIGxldHRlciIpOwogICAgIH0KIAotICAgIFF1YWxpZmllZE5h
bWUgbmFtZShudWxsQXRvbSwgdGFnTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7
CiAgICAgYXV0byYgZGVmaW5pdGlvbnMgPSBkb2N1bWVudC5lbnN1cmVDdXN0b21FbGVtZW50RGVm
aW5pdGlvbnMoKTsKICAgICBpZiAoZGVmaW5pdGlvbnMuZmluZEludGVyZmFjZSh0YWdOYW1lKSkg
ewogICAgICAgICB0aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCAiQ2Fubm90IGRlZmluZSBt
dWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSB0YWcgbmFtZSIpOwogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CisKKyAgICBpZiAoZGVmaW5pdGlvbnMuY29u
dGFpbnNJbnRlcmZhY2Uob2JqZWN0KSkgeworICAgICAgICB0aHJvd05vdFN1cHBvcnRlZEVycm9y
KHN0YXRlLCAiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUg
c2FtZSBjbGFzcyIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogMTAuIExldCBwcm90b3R5cGUgYmUgR2V0KGNvbnN0cnVjdG9yLCAicHJvdG90
eXBlIikuIFJldGhyb3cgYW55IGV4Y2VwdGlvbnMuCisgICAgLy8gRklYTUU6IDExLiBJZiBUeXBl
KHByb3RvdHlwZSkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgor
ICAgIC8vIEZJWE1FOiAxMi4gTGV0IGF0dGFjaGVkQ2FsbGJhY2sgYmUgR2V0KHByb3RvdHlwZSwg
ImF0dGFjaGVkQ2FsbGJhY2siKS4gUmV0aHJvdyBhbnkgZXhjZXB0aW9ucy4KKyAgICAvLyBGSVhN
RTogMTMuIExldCBkZXRhY2hlZENhbGxiYWNrIGJlIEdldChwcm90b3R5cGUsICJkZXRhY2hlZENh
bGxiYWNrIikuIFJldGhyb3cgYW55IGV4Y2VwdGlvbnMuCisgICAgLy8gRklYTUU6IDE0LiBMZXQg
YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIGJlIEdldChwcm90b3R5cGUsICJhdHRyaWJ1dGVDaGFu
Z2VkQ2FsbGJhY2siKS4gUmV0aHJvdyBhbnkgZXhjZXB0aW9ucy4KKworICAgIFF1YWxpZmllZE5h
bWUgbmFtZShudWxsQXRvbSwgdGFnTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7
CiAgICAgZGVmaW5pdGlvbnMuZGVmaW5lRWxlbWVudChuYW1lLCBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCgpKSk7CiAgICAgUHJpdmF0ZU5hbWUg
dW5pcXVlUHJpdmF0ZU5hbWU7CiAgICAgZ2xvYmFsT2JqZWN0KCktPnB1dERpcmVjdChnbG9iYWxP
YmplY3QoKS0+dm0oKSwgdW5pcXVlUHJpdmF0ZU5hbWUsIG9iamVjdCk7CiAKKyAgICAvLyBGSVhN
RTogMTcuIExldCBtYXAgYmUgcmVnaXN0cnkncyB1cGdyYWRlIGNhbmRpZGF0ZXMgbWFwLgorICAg
IC8vIEZJWE1FOiAxOC4gVXBncmFkZSBhIG5ld2x5LWRlZmluZWQgZWxlbWVudCBnaXZlbiBtYXAg
YW5kIGRlZmluaXRpb24uCisKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1
c3RvbS5jcHAJKHJldmlzaW9uIDE5NzUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyNSArNTQsOCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAgICAgSlNWYWx1ZSBu
ZXdUYXJnZXRWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBKU09iamVjdCogbmV3VGFy
Z2V0ID0gbmV3VGFyZ2V0VmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgUXVhbGlmaWVkTmFtZSBmdWxs
TmFtZSA9IGRlZmluaXRpb25zLT5maW5kTmFtZShuZXdUYXJnZXQpOwotICAgIGlmIChmdWxsTmFt
ZSA9PSBudWxsUU5hbWUoKSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICB9Ci0KLSAgICBpZiAoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgaWYg
KCFzdGF0ZS0+YXJndW1lbnQoMCkuZ2V0U3RyaW5nKHN0YXRlLCBuYW1lKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiVGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5v
dCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUiKTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8q
IGludGVyZmFjZSA9IGRlZmluaXRpb25zLT5maW5kSW50ZXJmYWNlKG5hbWUpOwotICAgICAgICBp
ZiAoIWludGVyZmFjZSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCAiVGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUi
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChuZXdUYXJnZXQgIT0gaW50ZXJmYWNlLT5jb25zdHJ1
Y3RvcigpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsICJBdHRl
bXB0IHRvIGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50IHdpdGggYSB3cm9uZyBpbnRlcmZhY2Ui
KTsKLSAgICAgICAgCi0gICAgICAgIGZ1bGxOYW1lID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
bmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7Ci0gICAgfQorICAgIGlmIChmdWxs
TmFtZSA9PSBudWxsUU5hbWUoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsICJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBhIGN1c3RvbSBlbGVtZW50Iik7CiAKICAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKICAg
ICBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVu
dD4odm0sICpnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnREZWZpbml0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHAJKHJldmlzaW9uIDE5NzUzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NCw2ICs5NCwxMSBAQCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnRE
CiAgICAgcmV0dXJuIGl0ID09IG1fbmFtZU1hcC5lbmQoKSA/IG51bGxwdHIgOiBpdC0+dmFsdWUu
aW50ZXJmYWNlLmdldCgpOwogfQogCitib29sIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y29u
dGFpbnNJbnRlcmZhY2UoY29uc3QgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY29uc3RydWN0b3JNYXAuY29udGFpbnMoY29uc3RydWN0b3IpOworfQor
CiBjb25zdCBRdWFsaWZpZWROYW1lJiBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmZpbmROYW1l
KGNvbnN0IEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yKSBjb25zdAogewogICAgIGF1dG8gaXQg
PSBtX2NvbnN0cnVjdG9yTWFwLmZpbmQoY29uc3RydWN0b3IpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaAkocmV2aXNpb24gMTk3NTMzKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZSogZmluZEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAg
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kSW50ZXJmYWNlKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJbnRlcmZhY2UoY29uc3QgSlNDOjpKU09iamVj
dCopIGNvbnN0OwogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGZpbmROYW1lKGNvbnN0IEpTQzo6
SlNPYmplY3QqKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgTmFtZVN0YXR1cyB7IFZhbGlkLCBD
b25mbGljdHNXaXRoQnVpbHRpbk5hbWVzLCBOb0h5cGhlbiwgQ29udGFpbnNVcHBlckNhc2UgfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMTk3NTMzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDcgKzI5NSw3
IEBACiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFT
Q1JJUFQKICAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb24sIENvbmRpdGlvbmFsPUNVU1RPTV9F
TEVNRU5UU10KLSAgICB2b2lkIGRlZmluZUN1c3RvbUVsZW1lbnQoRE9NU3RyaW5nIHRhZ05hbWUs
IEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UgZWxlbWVudEludGVyZmFjZSk7CisgICAgdm9pZCBkZWZp
bmVFbGVtZW50KERPTVN0cmluZyB0YWdOYW1lLCBDdXN0b21FbGVtZW50SW50ZXJmYWNlIGVsZW1l
bnRJbnRlcmZhY2UpOwogI2VuZGlmCiAKICAgICAvLyBQYWdlIHZpc2liaWxpdHkgQVBJLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHJldmlzaW9uIDE5NzUzMykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3
ICsyMCw3IEBACiAKIFsKICNpZiBkZWZpbmVkKEVOQUJMRV9DVVNUT01fRUxFTUVOVFMpICYmIEVO
QUJMRV9DVVNUT01fRUxFTUVOVFMKLSAgICBDdXN0b21Db25zdHJ1Y3RvcihvcHRpb25hbCBET01T
dHJpbmcgbG9jYWxOYW1lKSwKKyAgICBDdXN0b21Db25zdHJ1Y3RvcigpLAogI2VuZGlmCiAgICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEpTQ3VzdG9tUHVzaEV2ZW50SGFuZGxlclNj
b3BlLApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NTMzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDMtMDMgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRlIGRlZmluZUN1c3RvbUVsZW1l
bnQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjIHJld3JpdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjQ5NzA4Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHRoZSB0ZXN0cyBmb3IgdGhlIHJlbmFtZSBhbmQgc2VtYW50aWNzIGNoYW5nZSBv
ZiBkZWZpbmVDdXN0b21FbGVtZW50IGFuZCBIVE1MRWxlbWVudCBjb25zdHJ1Y3Rvci4KKworICAg
ICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL0RvY3VtZW50LWNyZWF0ZUVsZW1lbnQuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVDdXN0b21FbGVt
ZW50LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50
cy9Eb2N1bWVudC1kZWZpbmVDdXN0b21FbGVtZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
ZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtZGVmaW5lRWxlbWVudC1leHBlY3RlZC50eHQ6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1k
ZWZpbmVDdXN0b21FbGVtZW50LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1l
bGVtZW50cy9Eb2N1bWVudC1kZWZpbmVFbGVtZW50Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVDdXN0b21FbGVtZW50Lmh0
bWwuCisgICAgICAgIEFsc28gYWRkZWQgYSB0ZXN0IGNhc2UgZm9yIGRlZmluaW5nIG11bHRpcGxl
IGN1c3RvbSBlbGVtZW50cyB3aXRoIGEgc2luZ2xlIGNsYXNzLCB3aGljaCBtdXN0IHRocm93Lgor
ICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL0hUTUxFbGVtZW50LWNvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9IVE1MRWxlbWVudC1j
b25zdHJ1Y3Rvci5odG1sOgorICAgICAgICBSZW1vdmVkIHRlc3QgY2FzZXMgZm9yIHRoZSB0YWcg
bmFtZSBpbiB0aGUgZmlyc3QgYXJndW1lbnQgYXMgd2VsbCBhcyBvbmVzIHRoYXQgYXNzb2NpYXRl
IGEgc2luZ2xlIGNsYXNzIHdpdGggbXVsdGlwbGUgdGFnIG5hbWVzLgorICAgICAgICAqIGZhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudC1p
bi1kb2N1bWVudC13cml0ZS5odG1sOgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Bh
cnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudC1zeW5jaHJvbm91c2x5Lmh0bWw6
CisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3Rz
LWN1c3RvbS1lbGVtZW50cy5odG1sOgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Bh
cnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24tZWxlbWVudC5odG1sOgorICAgICAgICAq
IGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1dGVzLWFuZC1j
aGlsZHJlbi5odG1sOgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJz
ZXItdXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9jdXN0b20t
ZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLXJlZ2lzdHJ5LW9mLW93bmVyLWRvY3VtZW50Lmh0
bWw6CisKIDIwMTYtMDMtMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+
CiAKICAgICAgICAgW0VTNl0gQWRkIHN1cHBvcnQgZm9yIFN5bWJvbC50b1ByaW1pdGl2ZQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3JlYXRlRWxlbWVu
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0Rv
Y3VtZW50LWNyZWF0ZUVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTk3NTMzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3JlYXRlRWxlbWVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGFzc2Vy
dF90cnVlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JykgaW5zdGFu
Y2VvZiBIVE1MRWxlbWVudCk7CiAgICAgYXNzZXJ0X2ZhbHNlKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ215LWN1c3RvbS1lbGVtZW50JykgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQpOwogCi0g
ICAgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1
c3RvbUVsZW1lbnQpOworICAgIGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVt
ZW50JywgTXlDdXN0b21FbGVtZW50KTsKICAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOwogICAgIGFzc2VydF90cnVlKGluc3RhbmNl
IGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50KTsKICAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNl
LmxvY2FsTmFtZSwgJ215LWN1c3RvbS1lbGVtZW50Jyk7CkBAIC0zMyw3ICszMyw3IEBAIHRlc3Qo
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHtmb286ICdiYXInfTsKICAgICAgICAg
fQogICAgIH07Ci0gICAgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnb2JqZWN0LWN1c3Rv
bS1lbGVtZW50JywgT2JqZWN0Q3VzdG9tRWxlbWVudCk7CisgICAgZG9jdW1lbnQuZGVmaW5lRWxl
bWVudCgnb2JqZWN0LWN1c3RvbS1lbGVtZW50JywgT2JqZWN0Q3VzdG9tRWxlbWVudCk7CiAKICAg
ICB2YXIgaW5zdGFuY2UgPSBuZXcgT2JqZWN0Q3VzdG9tRWxlbWVudDsKICAgICBhc3NlcnRfdHJ1
ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE9iamVjdCk7CkBAIC00OSw3ICs0OSw3IEBAIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdo
ZWxsbycpOwogICAgICAgICB9CiAgICAgfTsKLSAgICBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVt
ZW50KCd0ZXh0LWN1c3RvbS1lbGVtZW50JywgVGV4dEN1c3RvbUVsZW1lbnQpOworICAgIGRvY3Vt
ZW50LmRlZmluZUVsZW1lbnQoJ3RleHQtY3VzdG9tLWVsZW1lbnQnLCBUZXh0Q3VzdG9tRWxlbWVu
dCk7CiAgICAgYXNzZXJ0X3RydWUobmV3IFRleHRDdXN0b21FbGVtZW50IGluc3RhbmNlb2YgVGV4
dCk7CiAgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvYmplY3QtY3Vz
dG9tLWVsZW1lbnQnKSwgbnVsbCk7CiB9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJl
dHVybiBudWxsIHdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciByZXR1cm5zIGEgVGV4
dCBub2RlJyk7CkBAIC02NCw3ICs2NCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZWRFbGVtZW50OwogICAgICAgICB9CiAgICAgfTsKLSAgICBkb2N1bWVu
dC5kZWZpbmVDdXN0b21FbGVtZW50KCdkaXYtY3VzdG9tLWVsZW1lbnQnLCBEaXZDdXN0b21FbGVt
ZW50KTsKKyAgICBkb2N1bWVudC5kZWZpbmVFbGVtZW50KCdkaXYtY3VzdG9tLWVsZW1lbnQnLCBE
aXZDdXN0b21FbGVtZW50KTsKICAgICBhc3NlcnRfdHJ1ZShuZXcgRGl2Q3VzdG9tRWxlbWVudCBp
bnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50KTsKIAogICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2Rpdi1jdXN0b20tZWxlbWVudCcpOwpAQCAtODIsNyArODIsNyBAQCB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb25Ub1Rocm93
OwogICAgICAgICB9CiAgICAgfTsKLSAgICBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCd0
aHJvdy1jdXN0b20tZWxlbWVudCcsIFRocm93Q3VzdG9tRWxlbWVudCk7CisgICAgZG9jdW1lbnQu
ZGVmaW5lRWxlbWVudCgndGhyb3ctY3VzdG9tLWVsZW1lbnQnLCBUaHJvd0N1c3RvbUVsZW1lbnQp
OwogCiAgICAgYXNzZXJ0X3Rocm93cyhudWxsLCBmdW5jdGlvbiAoKSB7IG5ldyBUaHJvd0N1c3Rv
bUVsZW1lbnQ7IH0pOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9E
b2N1bWVudC1kZWZpbmVDdXN0b21FbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVDdXN0b21FbGVt
ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk3NTMzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvRG9jdW1lbnQtZGVmaW5lQ3VzdG9tRWxlbWVudC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotCi1QQVNTIENoZWNrIHRoZSBleGlzdGVu
Y2Ugb2YgZGVmaW5lQ3VzdG9tRWxlbWVudCBvbiBEb2N1bWVudCBpbnRlcmZhY2UgCi1QQVNTIGRv
Y3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxkIHRocm93IHdpdGggYW4gaW52YWxpZCBu
YW1lIAotUEFTUyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IHNob3VsZCB0aHJvdyB3aXRo
IGEgZHVwbGljYXRlIG5hbWUgCi1QQVNTIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVz
dCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGFu
IGFzc29jaWF0ZWQgaW5lcnQgdGVtcGxhdGUgZG9jdW1lbnQgCi1QQVNTIGRvY3VtZW50LmRlZmlu
ZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGNv
bnRleHQgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgRE9NSW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERv
Y3VtZW50IAotUEFTUyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBO
b3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBjb250ZXh0IG9iamVjdCBpcyBjcmVhdGVkIGJ5IERP
TUltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50IAotUEFTUyBkb2N1bWVudC5kZWZpbmVDdXN0
b21FbGVtZW50IHNob3VsZCB0aHJvdyB3aGVuIHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBub3Qg
YSBjb25zdHJ1Y3RvciAKLVBBU1MgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBzaG91bGQg
ZGVmaW5lIGFuIGluc3RhbnRpYXRhYmxlIGN1c3RvbSBlbGVtZW50IAotCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVDdXN0b21FbGVtZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1l
bnQtZGVmaW5lQ3VzdG9tRWxlbWVudC5odG1sCShyZXZpc2lvbiAxOTc1MzMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVDdXN0b21FbGVtZW50Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTx0aXRsZT5DdXN0b20gRWxlbWVudHM6IEV4dGVuc2lvbnMgdG8gRG9jdW1l
bnQgaW50ZXJmYWNlPC90aXRsZT4KLTxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2Ug
Tml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgotPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IHNob3VsZCBkZWZpbmUgYSBj
dXN0b20gZWxlbWVudCI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0ibG9n
Ij48L2Rpdj4KLTxzY3JpcHQ+Ci0KLXRlc3QoZnVuY3Rpb24gKCkgewotICAgIGFzc2VydF90cnVl
KCdkZWZpbmVDdXN0b21FbGVtZW50JyBpbiBEb2N1bWVudC5wcm90b3R5cGUsICciZGVmaW5lQ3Vz
dG9tRWxlbWVudCIgZXhpc3RzIG9uIERvY3VtZW50LnByb3RvdHlwZScpOwotICAgIGFzc2VydF90
cnVlKCdkZWZpbmVDdXN0b21FbGVtZW50JyBpbiBkb2N1bWVudCwgJyJkZWZpbmVDdXN0b21FbGVt
ZW50IiBleGlzdHMgb24gZG9jdW1lbnQnKTsKLX0sICdDaGVjayB0aGUgZXhpc3RlbmNlIG9mIGRl
ZmluZUN1c3RvbUVsZW1lbnQgb24gRG9jdW1lbnQgaW50ZXJmYWNlJyk7Ci0KLXRlc3QoZnVuY3Rp
b24gKCkgewotICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9
OwotCi0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU3ludGF4RXJyb3InfSwgZnVuY3Rpb24g
KCkgeyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KG51bGwsIE15Q3VzdG9tRWxlbWVudCk7
IH0sCi0gICAgICAgICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBT
eW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgaXMgbnVsbCcpOwotICAgIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ1N5bnRheEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuZGVmaW5lQ3Vz
dG9tRWxlbWVudCgnJywgTXlDdXN0b21FbGVtZW50KTsgfSwKLSAgICAgICAgJ2RvY3VtZW50LmRl
ZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFN5bnRheEVycm9yIGlmIHRoZSB0YWcgbmFt
ZSBpcyBlbXB0eScpOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1N5bnRheEVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnYWJjJywgTXlDdXN0
b21FbGVtZW50KTsgfSwKLSAgICAgICAgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVz
dCB0aHJvdyBhIFN5bnRheEVycm9yIGlmIHRoZSB0YWcgbmFtZSBkb2VzIG5vdCBjb250YWluICIt
IicpOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1N5bnRheEVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnYS1CYycsIE15Q3VzdG9tRWxlbWVu
dCk7IH0sCi0gICAgICAgICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cg
YSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgY29udGFpbnMgYW4gdXBwZXIgY2FzZSBsZXR0
ZXInKTsKLQotICAgIHZhciBidWlsdGluVGFnTmFtZXMgPSBbCi0gICAgICAgICdhbm5vdGF0aW9u
LXhtbCcsCi0gICAgICAgICdjb2xvci1wcm9maWxlJywKLSAgICAgICAgJ2ZvbnQtZmFjZScsCi0g
ICAgICAgICdmb250LWZhY2Utc3JjJywKLSAgICAgICAgJ2ZvbnQtZmFjZS11cmknLAotICAgICAg
ICAnZm9udC1mYWNlLWZvcm1hdCcsCi0gICAgICAgICdmb250LWZhY2UtbmFtZScsCi0gICAgICAg
ICdtaXNzaW5nLWdseXBoJwotICAgIF07Ci0KLSAgICBmb3IgKHZhciB0YWdOYW1lIG9mIGJ1aWx0
aW5UYWdOYW1lcykgewotICAgICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50YXhFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQodGFnTmFtZSwg
TXlDdXN0b21FbGVtZW50KTsgfSwKLSAgICAgICAgICAgICdkb2N1bWVudC5kZWZpbmVDdXN0b21F
bGVtZW50IG11c3QgdGhyb3cgYSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgaXMgIicgKyB0
YWdOYW1lICsgJyInKTsKLSAgICB9Ci0KLX0sICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50
IHNob3VsZCB0aHJvdyB3aXRoIGFuIGludmFsaWQgbmFtZScpOwotCi10ZXN0KGZ1bmN0aW9uICgp
IHsKLSAgICBjbGFzcyBTb21lQ3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9Owot
ICAgIGNsYXNzIE90aGVyQ3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9OwotCi0g
ICAgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnc29tZS1jdXN0b20tZWxlbWVudCcsIFNv
bWVDdXN0b21FbGVtZW50KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0
ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ3Nv
bWUtY3VzdG9tLWVsZW1lbnQnLCBPdGhlckN1c3RvbUVsZW1lbnQpOyB9LAotICAgICAgICAnZG9j
dW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Ig
aWYgdGhlIHNwZWNpZmllZCB0YWcgbmFtZSBpcyBhbHJlYWR5IHVzZWQnKTsKLQotfSwgJ2RvY3Vt
ZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxkIHRocm93IHdpdGggYSBkdXBsaWNhdGUgbmFt
ZScpOwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBjbGFzcyBTb21lQ3VzdG9tRWxlbWVudCBl
eHRlbmRzIEhUTUxFbGVtZW50IHt9OwotCi0gICAgdmFyIHRlbXBsYXRlQ29udGVudE93bmVyRG9j
dW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpLmNvbnRlbnQub3duZXJE
b2N1bWVudDsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9
LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlbXBsYXRlQ29udGVudE93bmVyRG9jdW1lbnQuZGVm
aW5lQ3VzdG9tRWxlbWVudCgnc29tZS1jdXN0b20tZWxlbWVudCcsIFNvbWVDdXN0b21FbGVtZW50
KTsKLSAgICB9KTsKLQotfSwgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJv
dyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGFuIGFzc29j
aWF0ZWQgaW5lcnQgdGVtcGxhdGUgZG9jdW1lbnQnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0g
ICAgY2xhc3MgU29tZUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKLQotICAg
IHZhciB3aW5kb3dsZXNzRG9jdW1lbnQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVI
VE1MRG9jdW1lbnQoKTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRF
cnJvcid9LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHdpbmRvd2xlc3NEb2N1bWVudC5kZWZpbmVD
dXN0b21FbGVtZW50KCdzb21lLWN1c3RvbS1lbGVtZW50JywgU29tZUN1c3RvbUVsZW1lbnQpOwot
ICAgIH0pOwotCi19LCAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgY3JlYXRlZCBieSBE
T01JbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQnKTsKLQotdGVzdChmdW5jdGlvbiAo
KSB7Ci0gICAgY2xhc3MgU29tZUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsK
LQotICAgIHZhciB3aW5kb3dsZXNzRG9jdW1lbnQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5j
cmVhdGVEb2N1bWVudCgnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdodG1sJywgbnVs
bCkKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgIHdpbmRvd2xlc3NEb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50
KCdzb21lLWN1c3RvbS1lbGVtZW50JywgU29tZUN1c3RvbUVsZW1lbnQpOwotICAgIH0pOwotCi19
LCAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVk
RXJyb3Igd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgY3JlYXRlZCBieSBET01JbXBsZW1lbnRh
dGlvbi5jcmVhdGVEb2N1bWVudCcpOwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5kZWZp
bmVDdXN0b21FbGVtZW50KCdpbnZhbGlkLWVsZW1lbnQnLCAxKTsgfSwKLSAgICAgICAgJ2RvY3Vt
ZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSBl
bGVtZW50IGludGVyZmFjZSBpcyBhIG51bWJlcicpOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1l
bnQoJ2ludmFsaWQtZWxlbWVudCcsICcxMjMnKTsgfSwKLSAgICAgICAgJ2RvY3VtZW50LmRlZmlu
ZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlu
dGVyZmFjZSBpcyBhIHN0cmluZycpOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVF
cnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ2ludmFs
aWQtZWxlbWVudCcsIHt9KTsgfSwKLSAgICAgICAgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1l
bnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBh
biBvYmplY3QnKTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdpbnZhbGlkLWVsZW1lbnQn
LCBbXSk7IH0sCi0gICAgICAgICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhy
b3cgYSBUeXBlRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpbnRlcmZhY2UgaXMgYW4gYXJyYXknKTsK
LX0sICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IHNob3VsZCB0aHJvdyB3aGVuIHRoZSBl
bGVtZW50IGludGVyZmFjZSBpcyBub3QgYSBjb25zdHJ1Y3RvcicpOwotCi10ZXN0KGZ1bmN0aW9u
ICgpIHsKLSAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsK
LSAgICBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15
Q3VzdG9tRWxlbWVudCk7Ci0KLSAgICB2YXIgaW5zdGFuY2UgPSBuZXcgTXlDdXN0b21FbGVtZW50
OwotICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50LAot
ICAgICAgICAnQW4gaW5zdGFuY2Ugb2YgYSBjdXN0b20gSFRNTCBlbGVtZW50IGJlIGFuIGluc3Rh
bmNlIG9mIHRoZSBhc3NvY2lhdGVkIGludGVyZmFjZScpOwotCi0gICAgYXNzZXJ0X3RydWUoaW5z
dGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwKLSAgICAgICAgJ0FuIGluc3RhbmNlIG9mIGEg
Y3VzdG9tIEhUTUwgZWxlbWVudCBtdXN0IGluaGVyaXQgZnJvbSBIVE1MRWxlbWVudCcpOwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdteS1jdXN0b20tZWxlbWVudCcs
Ci0gICAgICAgICdBbiBpbnN0YW5jZSBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3QgdXNlIHRoZSBh
c3NvY2lhdGVkIHRhZyBuYW1lJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLm5hbWVz
cGFjZVVSSSwgJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLAotICAgICAgICAnQSBjdXN0
b20gZWxlbWVudCBIVE1MIG11c3QgdXNlIEhUTUwgbmFtZXNwYWNlJyk7Ci0KLX0sICdkb2N1bWVu
dC5kZWZpbmVDdXN0b21FbGVtZW50IHNob3VsZCBkZWZpbmUgYW4gaW5zdGFudGlhdGFibGUgY3Vz
dG9tIGVsZW1lbnQnKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVFbGVtZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9E
b2N1bWVudC1kZWZpbmVFbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk3NTMzKQkoZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVDdXN0b21F
bGVtZW50LWV4cGVjdGVkLnR4dDoxOTc1MzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9Eb2N1bWVudC1kZWZpbmVFbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEwIEBACisKK1BBU1MgQ2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBkZWZpbmVD
dXN0b21FbGVtZW50IG9uIERvY3VtZW50IGludGVyZmFjZSAKK1BBU1MgZG9jdW1lbnQuZGVmaW5l
Q3VzdG9tRWxlbWVudCBzaG91bGQgdGhyb3cgd2l0aCBhbiBpbnZhbGlkIG5hbWUgCitQQVNTIGRv
Y3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxkIHRocm93IHdpdGggYSBkdXBsaWNhdGUg
bmFtZSAKK1BBU1MgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgTm90
U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgYW4gYXNzb2NpYXRlZCBp
bmVydCB0ZW1wbGF0ZSBkb2N1bWVudCAKK1BBU1MgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVu
dCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgY29udGV4dCBvYmplY3Qg
aXMgY3JlYXRlZCBieSBET01JbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQgCitQQVNT
IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVy
cm9yIHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgRE9NSW1wbGVtZW50YXRp
b24uY3JlYXRlRG9jdW1lbnQgCitQQVNTIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hv
dWxkIHRocm93IHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIG5vdCBhIGNvbnN0cnVjdG9y
IAorUEFTUyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IHNob3VsZCBkZWZpbmUgYW4gaW5z
dGFudGlhdGFibGUgY3VzdG9tIGVsZW1lbnQgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL0RvY3VtZW50LWRlZmluZUVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RvY3VtZW50LWRlZmluZUVs
ZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVFbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMSwxMSBAQAogCi1QQVNTIENoZWNrIHRoZSBleGlzdGVuY2Ugb2Yg
ZGVmaW5lQ3VzdG9tRWxlbWVudCBvbiBEb2N1bWVudCBpbnRlcmZhY2UgCi1QQVNTIGRvY3VtZW50
LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxkIHRocm93IHdpdGggYW4gaW52YWxpZCBuYW1lIAot
UEFTUyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IHNob3VsZCB0aHJvdyB3aXRoIGEgZHVw
bGljYXRlIG5hbWUgCi1QQVNTIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJv
dyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGFuIGFzc29j
aWF0ZWQgaW5lcnQgdGVtcGxhdGUgZG9jdW1lbnQgCi1QQVNTIGRvY3VtZW50LmRlZmluZUN1c3Rv
bUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGNvbnRleHQg
b2JqZWN0IGlzIGNyZWF0ZWQgYnkgRE9NSW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50
IAotUEFTUyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBw
b3J0ZWRFcnJvciB3aGVuIHRoZSBjb250ZXh0IG9iamVjdCBpcyBjcmVhdGVkIGJ5IERPTUltcGxl
bWVudGF0aW9uLmNyZWF0ZURvY3VtZW50IAotUEFTUyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVt
ZW50IHNob3VsZCB0aHJvdyB3aGVuIHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBub3QgYSBjb25z
dHJ1Y3RvciAKLVBBU1MgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBzaG91bGQgZGVmaW5l
IGFuIGluc3RhbnRpYXRhYmxlIGN1c3RvbSBlbGVtZW50IAorUEFTUyBDaGVjayB0aGUgZXhpc3Rl
bmNlIG9mIGRlZmluZUVsZW1lbnQgb24gRG9jdW1lbnQgaW50ZXJmYWNlIAorUEFTUyBkb2N1bWVu
dC5kZWZpbmVFbGVtZW50IHNob3VsZCB0aHJvdyB3aXRoIGFuIGludmFsaWQgbmFtZSAKK1BBU1Mg
ZG9jdW1lbnQuZGVmaW5lRWxlbWVudCBzaG91bGQgdGhyb3cgd2hlbiB0aGVyZSBpcyBhbHJlYWR5
IGEgY3VzdG9tIGVsZW1lbnQgb2YgdGhlIHNhbWUgbmFtZSAKK1BBU1MgZG9jdW1lbnQuZGVmaW5l
RWxlbWVudCBzaG91bGQgdGhyb3cgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY3VzdG9tIGVsZW1l
bnQgd2l0aCB0aGUgc2FtZSBjbGFzcyAKK1BBU1MgZG9jdW1lbnQuZGVmaW5lRWxlbWVudCBtdXN0
IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgYW4g
YXNzb2NpYXRlZCBpbmVydCB0ZW1wbGF0ZSBkb2N1bWVudCAKK1BBU1MgZG9jdW1lbnQuZGVmaW5l
RWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgY29udGV4dCBv
YmplY3QgaXMgY3JlYXRlZCBieSBET01JbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQg
CitQQVNTIGRvY3VtZW50LmRlZmluZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVy
cm9yIHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgRE9NSW1wbGVtZW50YXRp
b24uY3JlYXRlRG9jdW1lbnQgCitQQVNTIGRvY3VtZW50LmRlZmluZUVsZW1lbnQgc2hvdWxkIHRo
cm93IHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIG5vdCBhIGNvbnN0cnVjdG9yIAorUEFT
UyBkb2N1bWVudC5kZWZpbmVFbGVtZW50IHNob3VsZCBkZWZpbmUgYW4gaW5zdGFudGlhdGFibGUg
Y3VzdG9tIGVsZW1lbnQgCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L0RvY3VtZW50LWRlZmluZUVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVFbGVtZW50Lmh0bWwJKHJldmlzaW9u
IDE5NzUzMykJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQt
ZGVmaW5lQ3VzdG9tRWxlbWVudC5odG1sOjE5NzUzMykKKysrIExheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL0RvY3VtZW50LWRlZmluZUVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkN1c3RvbSBFbGVtZW50czogRXh0ZW5zaW9ucyB0byBEb2N1bWVudCBpbnRlcmZhY2U8L3RpdGxl
PgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86
cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9ImRvY3VtZW50
LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxkIGRlZmluZSBhIGN1c3RvbSBlbGVtZW50Ij4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4K
KwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoJ2RlZmluZUN1c3RvbUVsZW1l
bnQnIGluIERvY3VtZW50LnByb3RvdHlwZSwgJyJkZWZpbmVDdXN0b21FbGVtZW50IiBleGlzdHMg
b24gRG9jdW1lbnQucHJvdG90eXBlJyk7CisgICAgYXNzZXJ0X3RydWUoJ2RlZmluZUN1c3RvbUVs
ZW1lbnQnIGluIGRvY3VtZW50LCAnImRlZmluZUN1c3RvbUVsZW1lbnQiIGV4aXN0cyBvbiBkb2N1
bWVudCcpOworfSwgJ0NoZWNrIHRoZSBleGlzdGVuY2Ugb2YgZGVmaW5lQ3VzdG9tRWxlbWVudCBv
biBEb2N1bWVudCBpbnRlcmZhY2UnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
TXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge307CisKKyAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmlu
ZUN1c3RvbUVsZW1lbnQobnVsbCwgTXlDdXN0b21FbGVtZW50KTsgfSwKKyAgICAgICAgJ2RvY3Vt
ZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFN5bnRheEVycm9yIGlmIHRoZSB0
YWcgbmFtZSBpcyBudWxsJyk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU3ludGF4RXJy
b3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCcnLCBNeUN1
c3RvbUVsZW1lbnQpOyB9LAorICAgICAgICAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBt
dXN0IHRocm93IGEgU3ludGF4RXJyb3IgaWYgdGhlIHRhZyBuYW1lIGlzIGVtcHR5Jyk7CisgICAg
YXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU3ludGF4RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1
bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdhYmMnLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAorICAg
ICAgICAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgU3ludGF4RXJy
b3IgaWYgdGhlIHRhZyBuYW1lIGRvZXMgbm90IGNvbnRhaW4gIi0iJyk7CisgICAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnU3ludGF4RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5kZWZp
bmVDdXN0b21FbGVtZW50KCdhLUJjJywgTXlDdXN0b21FbGVtZW50KTsgfSwKKyAgICAgICAgJ2Rv
Y3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFN5bnRheEVycm9yIGlmIHRo
ZSB0YWcgbmFtZSBjb250YWlucyBhbiB1cHBlciBjYXNlIGxldHRlcicpOworCisgICAgdmFyIGJ1
aWx0aW5UYWdOYW1lcyA9IFsKKyAgICAgICAgJ2Fubm90YXRpb24teG1sJywKKyAgICAgICAgJ2Nv
bG9yLXByb2ZpbGUnLAorICAgICAgICAnZm9udC1mYWNlJywKKyAgICAgICAgJ2ZvbnQtZmFjZS1z
cmMnLAorICAgICAgICAnZm9udC1mYWNlLXVyaScsCisgICAgICAgICdmb250LWZhY2UtZm9ybWF0
JywKKyAgICAgICAgJ2ZvbnQtZmFjZS1uYW1lJywKKyAgICAgICAgJ21pc3NpbmctZ2x5cGgnCisg
ICAgXTsKKworICAgIGZvciAodmFyIHRhZ05hbWUgb2YgYnVpbHRpblRhZ05hbWVzKSB7CisgICAg
ICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1N5bnRheEVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
ZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCh0YWdOYW1lLCBNeUN1c3RvbUVsZW1lbnQpOyB9
LAorICAgICAgICAgICAgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBh
IFN5bnRheEVycm9yIGlmIHRoZSB0YWcgbmFtZSBpcyAiJyArIHRhZ05hbWUgKyAnIicpOworICAg
IH0KKworfSwgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxkIHRocm93IHdpdGgg
YW4gaW52YWxpZCBuYW1lJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIFNvbWVD
dXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge307CisgICAgY2xhc3MgT3RoZXJDdXN0
b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge307CisKKyAgICBkb2N1bWVudC5kZWZpbmVD
dXN0b21FbGVtZW50KCdzb21lLWN1c3RvbS1lbGVtZW50JywgU29tZUN1c3RvbUVsZW1lbnQpOwor
ICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnc29tZS1jdXN0b20tZWxlbWVudCcs
IE90aGVyQ3VzdG9tRWxlbWVudCk7IH0sCisgICAgICAgICdkb2N1bWVudC5kZWZpbmVDdXN0b21F
bGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciBpZiB0aGUgc3BlY2lmaWVkIHRh
ZyBuYW1lIGlzIGFscmVhZHkgdXNlZCcpOworCit9LCAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxl
bWVudCBzaG91bGQgdGhyb3cgd2l0aCBhIGR1cGxpY2F0ZSBuYW1lJyk7CisKK3Rlc3QoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIFNvbWVDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQg
e307CisKKyAgICB2YXIgdGVtcGxhdGVDb250ZW50T3duZXJEb2N1bWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJykuY29udGVudC5vd25lckRvY3VtZW50OworICAgIGFzc2Vy
dF90aHJvd3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdGVtcGxhdGVDb250ZW50T3duZXJEb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdz
b21lLWN1c3RvbS1lbGVtZW50JywgU29tZUN1c3RvbUVsZW1lbnQpOworICAgIH0pOworCit9LCAn
ZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJy
b3Igd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgYW4gYXNzb2NpYXRlZCBpbmVydCB0ZW1wbGF0
ZSBkb2N1bWVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBTb21lQ3VzdG9t
RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9OworCisgICAgdmFyIHdpbmRvd2xlc3NEb2N1
bWVudCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOworICAg
IGFzc2VydF90aHJvd3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgd2luZG93bGVzc0RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ3NvbWUt
Y3VzdG9tLWVsZW1lbnQnLCBTb21lQ3VzdG9tRWxlbWVudCk7CisgICAgfSk7CisKK30sICdkb2N1
bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3
aGVuIHRoZSBjb250ZXh0IG9iamVjdCBpcyBjcmVhdGVkIGJ5IERPTUltcGxlbWVudGF0aW9uLmNy
ZWF0ZUhUTUxEb2N1bWVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBTb21l
Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9OworCisgICAgdmFyIHdpbmRvd2xl
c3NEb2N1bWVudCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCdodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2h0bWwnLCBudWxsKQorICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
d2luZG93bGVzc0RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ3NvbWUtY3VzdG9tLWVsZW1l
bnQnLCBTb21lQ3VzdG9tRWxlbWVudCk7CisgICAgfSk7CisKK30sICdkb2N1bWVudC5kZWZpbmVD
dXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBjb250
ZXh0IG9iamVjdCBpcyBjcmVhdGVkIGJ5IERPTUltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50
Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5
cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ2lu
dmFsaWQtZWxlbWVudCcsIDEpOyB9LAorICAgICAgICAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxl
bWVudCBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlz
IGEgbnVtYmVyJyk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1
bmN0aW9uICgpIHsgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnaW52YWxpZC1lbGVtZW50
JywgJzEyMycpOyB9LAorICAgICAgICAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0
IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIGEgc3RyaW5n
Jyk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgp
IHsgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnaW52YWxpZC1lbGVtZW50Jywge30pOyB9
LAorICAgICAgICAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgVHlw
ZUVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIGFuIG9iamVjdCcpOworICAgIGFz
c2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50
LmRlZmluZUN1c3RvbUVsZW1lbnQoJ2ludmFsaWQtZWxlbWVudCcsIFtdKTsgfSwKKyAgICAgICAg
J2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBhbiBhcnJheScpOworfSwgJ2RvY3VtZW50LmRlZmlu
ZUN1c3RvbUVsZW1lbnQgc2hvdWxkIHRocm93IHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlz
IG5vdCBhIGNvbnN0cnVjdG9yJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIE15
Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9OworICAgIGRvY3VtZW50LmRlZmlu
ZUN1c3RvbUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKwor
ICAgIHZhciBpbnN0YW5jZSA9IG5ldyBNeUN1c3RvbUVsZW1lbnQ7CisgICAgYXNzZXJ0X3RydWUo
aW5zdGFuY2UgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQsCisgICAgICAgICdBbiBpbnN0YW5j
ZSBvZiBhIGN1c3RvbSBIVE1MIGVsZW1lbnQgYmUgYW4gaW5zdGFuY2Ugb2YgdGhlIGFzc29jaWF0
ZWQgaW50ZXJmYWNlJyk7CisKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhU
TUxFbGVtZW50LAorICAgICAgICAnQW4gaW5zdGFuY2Ugb2YgYSBjdXN0b20gSFRNTCBlbGVtZW50
IG11c3QgaW5oZXJpdCBmcm9tIEhUTUxFbGVtZW50Jyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGlu
c3RhbmNlLmxvY2FsTmFtZSwgJ215LWN1c3RvbS1lbGVtZW50JywKKyAgICAgICAgJ0FuIGluc3Rh
bmNlIG9mIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCB1c2UgdGhlIGFzc29jaWF0ZWQgdGFnIG5hbWUn
KTsKKworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubmFtZXNwYWNlVVJJLCAnaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCcsCisgICAgICAgICdBIGN1c3RvbSBlbGVtZW50IEhUTUwgbXVz
dCB1c2UgSFRNTCBuYW1lc3BhY2UnKTsKKworfSwgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1l
bnQgc2hvdWxkIGRlZmluZSBhbiBpbnN0YW50aWF0YWJsZSBjdXN0b20gZWxlbWVudCcpOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL0RvY3VtZW50LWRlZmluZUVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1kZWZpbmVFbGVtZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RvY3Vt
ZW50LWRlZmluZUVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIDxo
ZWFkPgogPHRpdGxlPkN1c3RvbSBFbGVtZW50czogRXh0ZW5zaW9ucyB0byBEb2N1bWVudCBpbnRl
cmZhY2U8L3RpdGxlPgogPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBo
cmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9ImRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxkIGRlZmluZSBhIGN1c3RvbSBl
bGVtZW50Ij4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iZG9jdW1lbnQuZGVmaW5lRWxl
bWVudCBzaG91bGQgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiPgogPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxsaW5rIHJlbD0nc3R5
bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+CkBAIC0xMywy
MSArMTMsMjEgQEAKIDxzY3JpcHQ+CiAKIHRlc3QoZnVuY3Rpb24gKCkgewotICAgIGFzc2VydF90
cnVlKCdkZWZpbmVDdXN0b21FbGVtZW50JyBpbiBEb2N1bWVudC5wcm90b3R5cGUsICciZGVmaW5l
Q3VzdG9tRWxlbWVudCIgZXhpc3RzIG9uIERvY3VtZW50LnByb3RvdHlwZScpOwotICAgIGFzc2Vy
dF90cnVlKCdkZWZpbmVDdXN0b21FbGVtZW50JyBpbiBkb2N1bWVudCwgJyJkZWZpbmVDdXN0b21F
bGVtZW50IiBleGlzdHMgb24gZG9jdW1lbnQnKTsKLX0sICdDaGVjayB0aGUgZXhpc3RlbmNlIG9m
IGRlZmluZUN1c3RvbUVsZW1lbnQgb24gRG9jdW1lbnQgaW50ZXJmYWNlJyk7CisgICAgYXNzZXJ0
X3RydWUoJ2RlZmluZUVsZW1lbnQnIGluIERvY3VtZW50LnByb3RvdHlwZSwgJyJkZWZpbmVFbGVt
ZW50IiBleGlzdHMgb24gRG9jdW1lbnQucHJvdG90eXBlJyk7CisgICAgYXNzZXJ0X3RydWUoJ2Rl
ZmluZUVsZW1lbnQnIGluIGRvY3VtZW50LCAnImRlZmluZUVsZW1lbnQiIGV4aXN0cyBvbiBkb2N1
bWVudCcpOworfSwgJ0NoZWNrIHRoZSBleGlzdGVuY2Ugb2YgZGVmaW5lRWxlbWVudCBvbiBEb2N1
bWVudCBpbnRlcmZhY2UnKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY2xhc3MgTXlDdXN0
b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge307CiAKLSAgICBhc3NlcnRfdGhyb3dzKHsn
bmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3Rv
bUVsZW1lbnQobnVsbCwgTXlDdXN0b21FbGVtZW50KTsgfSwKLSAgICAgICAgJ2RvY3VtZW50LmRl
ZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFN5bnRheEVycm9yIGlmIHRoZSB0YWcgbmFt
ZSBpcyBudWxsJyk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU3ludGF4RXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCcnLCBNeUN1c3RvbUVs
ZW1lbnQpOyB9LAotICAgICAgICAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRo
cm93IGEgU3ludGF4RXJyb3IgaWYgdGhlIHRhZyBuYW1lIGlzIGVtcHR5Jyk7Ci0gICAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnU3ludGF4RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5k
ZWZpbmVDdXN0b21FbGVtZW50KCdhYmMnLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAotICAgICAgICAn
ZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgU3ludGF4RXJyb3IgaWYg
dGhlIHRhZyBuYW1lIGRvZXMgbm90IGNvbnRhaW4gIi0iJyk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnU3ludGF4RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5kZWZpbmVDdXN0
b21FbGVtZW50KCdhLUJjJywgTXlDdXN0b21FbGVtZW50KTsgfSwKLSAgICAgICAgJ2RvY3VtZW50
LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFN5bnRheEVycm9yIGlmIHRoZSB0YWcg
bmFtZSBjb250YWlucyBhbiB1cHBlciBjYXNlIGxldHRlcicpOworICAgIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ1N5bnRheEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuZGVmaW5lRWxl
bWVudChudWxsLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAorICAgICAgICAnZG9jdW1lbnQuZGVmaW5l
RWxlbWVudCBtdXN0IHRocm93IGEgU3ludGF4RXJyb3IgaWYgdGhlIHRhZyBuYW1lIGlzIG51bGwn
KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJycsIE15Q3VzdG9tRWxlbWVudCk7IH0sCisgICAg
ICAgICdkb2N1bWVudC5kZWZpbmVFbGVtZW50IG11c3QgdGhyb3cgYSBTeW50YXhFcnJvciBpZiB0
aGUgdGFnIG5hbWUgaXMgZW1wdHknKTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50
YXhFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ2FiYycsIE15
Q3VzdG9tRWxlbWVudCk7IH0sCisgICAgICAgICdkb2N1bWVudC5kZWZpbmVFbGVtZW50IG11c3Qg
dGhyb3cgYSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgZG9lcyBub3QgY29udGFpbiAiLSIn
KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ2EtQmMnLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAor
ICAgICAgICAnZG9jdW1lbnQuZGVmaW5lRWxlbWVudCBtdXN0IHRocm93IGEgU3ludGF4RXJyb3Ig
aWYgdGhlIHRhZyBuYW1lIGNvbnRhaW5zIGFuIHVwcGVyIGNhc2UgbGV0dGVyJyk7CiAKICAgICB2
YXIgYnVpbHRpblRhZ05hbWVzID0gWwogICAgICAgICAnYW5ub3RhdGlvbi14bWwnLApAQCAtNDEs
NjYgKzQxLDc1IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIF07CiAKICAgICBmb3IgKHZhciB0
YWdOYW1lIG9mIGJ1aWx0aW5UYWdOYW1lcykgewotICAgICAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3RvbUVs
ZW1lbnQodGFnTmFtZSwgTXlDdXN0b21FbGVtZW50KTsgfSwKLSAgICAgICAgICAgICdkb2N1bWVu
dC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBTeW50YXhFcnJvciBpZiB0aGUgdGFn
IG5hbWUgaXMgIicgKyB0YWdOYW1lICsgJyInKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnU3ludGF4RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5kZWZpbmVFbGVtZW50
KHRhZ05hbWUsIE15Q3VzdG9tRWxlbWVudCk7IH0sCisgICAgICAgICAgICAnZG9jdW1lbnQuZGVm
aW5lRWxlbWVudCBtdXN0IHRocm93IGEgU3ludGF4RXJyb3IgaWYgdGhlIHRhZyBuYW1lIGlzICIn
ICsgdGFnTmFtZSArICciJyk7CiAgICAgfQogCi19LCAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxl
bWVudCBzaG91bGQgdGhyb3cgd2l0aCBhbiBpbnZhbGlkIG5hbWUnKTsKK30sICdkb2N1bWVudC5k
ZWZpbmVFbGVtZW50IHNob3VsZCB0aHJvdyB3aXRoIGFuIGludmFsaWQgbmFtZScpOwogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBTb21lQ3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxF
bGVtZW50IHt9OwogICAgIGNsYXNzIE90aGVyQ3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVt
ZW50IHt9OwogCi0gICAgZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnc29tZS1jdXN0b20t
ZWxlbWVudCcsIFNvbWVDdXN0b21FbGVtZW50KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3Rv
bUVsZW1lbnQoJ3NvbWUtY3VzdG9tLWVsZW1lbnQnLCBPdGhlckN1c3RvbUVsZW1lbnQpOyB9LAot
ICAgICAgICAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3Vw
cG9ydGVkRXJyb3IgaWYgdGhlIHNwZWNpZmllZCB0YWcgbmFtZSBpcyBhbHJlYWR5IHVzZWQnKTsK
KyAgICBkb2N1bWVudC5kZWZpbmVFbGVtZW50KCdzb21lLWN1c3RvbS1lbGVtZW50JywgU29tZUN1
c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVy
cm9yJ30sIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnc29tZS1jdXN0b20t
ZWxlbWVudCcsIE90aGVyQ3VzdG9tRWxlbWVudCk7IH0sCisgICAgICAgICdkb2N1bWVudC5kZWZp
bmVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciBpZiB0aGUgc3BlY2lmaWVk
IHRhZyBuYW1lIGlzIGFscmVhZHkgdXNlZCcpOwogCi19LCAnZG9jdW1lbnQuZGVmaW5lQ3VzdG9t
RWxlbWVudCBzaG91bGQgdGhyb3cgd2l0aCBhIGR1cGxpY2F0ZSBuYW1lJyk7Cit9LCAnZG9jdW1l
bnQuZGVmaW5lRWxlbWVudCBzaG91bGQgdGhyb3cgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY3Vz
dG9tIGVsZW1lbnQgb2YgdGhlIHNhbWUgbmFtZScpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBBbm90aGVyQ3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9OworCisg
ICAgZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnYW5vdGhlci1jdXN0b20tZWxlbWVudCcsIEFub3Ro
ZXJDdXN0b21FbGVtZW50KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0
ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ3NvbWUtb3Ro
ZXItZWxlbWVudCcsIEFub3RoZXJDdXN0b21FbGVtZW50KTsgfSwKKyAgICAgICAgJ2RvY3VtZW50
LmRlZmluZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIGlmIHRoZSBzcGVj
aWZpZWQgY2xhc3MgYWxyZWFkeSBkZWZpbmVzIGFuIGVsZW1lbnQnKTsKKworfSwgJ2RvY3VtZW50
LmRlZmluZUVsZW1lbnQgc2hvdWxkIHRocm93IHdoZW4gdGhlcmUgaXMgYWxyZWFkeSBhIGN1c3Rv
bSBlbGVtZW50IHdpdGggdGhlIHNhbWUgY2xhc3MnKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAg
ICAgY2xhc3MgU29tZUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKIAogICAg
IHZhciB0ZW1wbGF0ZUNvbnRlbnRPd25lckRvY3VtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGVtcGxhdGUnKS5jb250ZW50Lm93bmVyRG9jdW1lbnQ7CiAgICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgewotICAgICAgICB0ZW1w
bGF0ZUNvbnRlbnRPd25lckRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ3NvbWUtY3VzdG9t
LWVsZW1lbnQnLCBTb21lQ3VzdG9tRWxlbWVudCk7CisgICAgICAgIHRlbXBsYXRlQ29udGVudE93
bmVyRG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnc29tZS1jdXN0b20tZWxlbWVudCcsIFNvbWVDdXN0
b21FbGVtZW50KTsKICAgICB9KTsKIAotfSwgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQg
bXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlz
IGFuIGFzc29jaWF0ZWQgaW5lcnQgdGVtcGxhdGUgZG9jdW1lbnQnKTsKK30sICdkb2N1bWVudC5k
ZWZpbmVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBjb250
ZXh0IG9iamVjdCBpcyBhbiBhc3NvY2lhdGVkIGluZXJ0IHRlbXBsYXRlIGRvY3VtZW50Jyk7CiAK
IHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIFNvbWVDdXN0b21FbGVtZW50IGV4dGVuZHMg
SFRNTEVsZW1lbnQge307CiAKICAgICB2YXIgd2luZG93bGVzc0RvY3VtZW50ID0gZG9jdW1lbnQu
aW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCk7CiAgICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgewotICAgICAgICB3aW5k
b3dsZXNzRG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnc29tZS1jdXN0b20tZWxlbWVudCcs
IFNvbWVDdXN0b21FbGVtZW50KTsKKyAgICAgICAgd2luZG93bGVzc0RvY3VtZW50LmRlZmluZUVs
ZW1lbnQoJ3NvbWUtY3VzdG9tLWVsZW1lbnQnLCBTb21lQ3VzdG9tRWxlbWVudCk7CiAgICAgfSk7
CiAKLX0sICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBw
b3J0ZWRFcnJvciB3aGVuIHRoZSBjb250ZXh0IG9iamVjdCBpcyBjcmVhdGVkIGJ5IERPTUltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCcpOworfSwgJ2RvY3VtZW50LmRlZmluZUVsZW1l
bnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0
IGlzIGNyZWF0ZWQgYnkgRE9NSW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50Jyk7CiAK
IHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIFNvbWVDdXN0b21FbGVtZW50IGV4dGVuZHMg
SFRNTEVsZW1lbnQge307CiAKICAgICB2YXIgd2luZG93bGVzc0RvY3VtZW50ID0gZG9jdW1lbnQu
aW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnLCAnaHRtbCcsIG51bGwpCiAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnTm90U3VwcG9y
dGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgewotICAgICAgICB3aW5kb3dsZXNzRG9jdW1lbnQuZGVm
aW5lQ3VzdG9tRWxlbWVudCgnc29tZS1jdXN0b20tZWxlbWVudCcsIFNvbWVDdXN0b21FbGVtZW50
KTsKKyAgICAgICAgd2luZG93bGVzc0RvY3VtZW50LmRlZmluZUVsZW1lbnQoJ3NvbWUtY3VzdG9t
LWVsZW1lbnQnLCBTb21lQ3VzdG9tRWxlbWVudCk7CiAgICAgfSk7CiAKLX0sICdkb2N1bWVudC5k
ZWZpbmVDdXN0b21FbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRo
ZSBjb250ZXh0IG9iamVjdCBpcyBjcmVhdGVkIGJ5IERPTUltcGxlbWVudGF0aW9uLmNyZWF0ZURv
Y3VtZW50Jyk7Cit9LCAnZG9jdW1lbnQuZGVmaW5lRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3Vw
cG9ydGVkRXJyb3Igd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgY3JlYXRlZCBieSBET01JbXBs
ZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCcpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBh
c3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVu
dC5kZWZpbmVDdXN0b21FbGVtZW50KCdpbnZhbGlkLWVsZW1lbnQnLCAxKTsgfSwKLSAgICAgICAg
J2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBhIG51bWJlcicpOwotICAgIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3Rv
bUVsZW1lbnQoJ2ludmFsaWQtZWxlbWVudCcsICcxMjMnKTsgfSwKLSAgICAgICAgJ2RvY3VtZW50
LmRlZmluZUN1c3RvbUVsZW1lbnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSBlbGVt
ZW50IGludGVyZmFjZSBpcyBhIHN0cmluZycpOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzog
J1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQo
J2ludmFsaWQtZWxlbWVudCcsIHt9KTsgfSwKLSAgICAgICAgJ2RvY3VtZW50LmRlZmluZUN1c3Rv
bUVsZW1lbnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSBlbGVtZW50IGludGVyZmFj
ZSBpcyBhbiBvYmplY3QnKTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3In
fSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdpbnZhbGlkLWVs
ZW1lbnQnLCBbXSk7IH0sCi0gICAgICAgICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IG11
c3QgdGhyb3cgYSBUeXBlRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpbnRlcmZhY2UgaXMgYW4gYXJy
YXknKTsKLX0sICdkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50IHNob3VsZCB0aHJvdyB3aGVu
IHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBub3QgYSBjb25zdHJ1Y3RvcicpOworICAgIGFzc2Vy
dF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRl
ZmluZUVsZW1lbnQoJ2ludmFsaWQtZWxlbWVudCcsIDEpOyB9LAorICAgICAgICAnZG9jdW1lbnQu
ZGVmaW5lRWxlbWVudCBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaW50
ZXJmYWNlIGlzIGEgbnVtYmVyJyk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVy
cm9yJ30sIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnaW52YWxpZC1lbGVt
ZW50JywgJzEyMycpOyB9LAorICAgICAgICAnZG9jdW1lbnQuZGVmaW5lRWxlbWVudCBtdXN0IHRo
cm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIGEgc3RyaW5nJyk7
CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
ZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnaW52YWxpZC1lbGVtZW50Jywge30pOyB9LAorICAgICAg
ICAnZG9jdW1lbnQuZGVmaW5lRWxlbWVudCBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhl
IGVsZW1lbnQgaW50ZXJmYWNlIGlzIGFuIG9iamVjdCcpOworICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmRlZmluZUVsZW1lbnQo
J2ludmFsaWQtZWxlbWVudCcsIFtdKTsgfSwKKyAgICAgICAgJ2RvY3VtZW50LmRlZmluZUVsZW1l
bnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBh
biBhcnJheScpOworfSwgJ2RvY3VtZW50LmRlZmluZUVsZW1lbnQgc2hvdWxkIHRocm93IHdoZW4g
dGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7CiAKIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50
IHt9OwotICAgIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50
JywgTXlDdXN0b21FbGVtZW50KTsKKyAgICBkb2N1bWVudC5kZWZpbmVFbGVtZW50KCdteS1jdXN0
b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CiAKICAgICB2YXIgaW5zdGFuY2UgPSBuZXcg
TXlDdXN0b21FbGVtZW50OwogICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlD
dXN0b21FbGVtZW50LApAQCAtMTE1LDcgKzEyNCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAg
IGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubmFtZXNwYWNlVVJJLCAnaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCcsCiAgICAgICAgICdBIGN1c3RvbSBlbGVtZW50IEhUTUwgbXVzdCB1c2UgSFRN
TCBuYW1lc3BhY2UnKTsKIAotfSwgJ2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQgc2hvdWxk
IGRlZmluZSBhbiBpbnN0YW50aWF0YWJsZSBjdXN0b20gZWxlbWVudCcpOworfSwgJ2RvY3VtZW50
LmRlZmluZUVsZW1lbnQgc2hvdWxkIGRlZmluZSBhbiBpbnN0YW50aWF0YWJsZSBjdXN0b20gZWxl
bWVudCcpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL0hUTUxFbGVtZW50LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9IVE1MRWxlbWVudC1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5NzUzMykKKysrIExheW91dFRlc3RzL2Zh
c3QvY3VzdG9tLWVsZW1lbnRzL0hUTUxFbGVtZW50LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDYgQEAKIFBBU1MgSFRNTEVsZW1lbnQgY29uc3RydWN0
b3IgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZXJlIGlzIG5vIGRlcml2ZWQgY2xhc3Mg
CiBQQVNTIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cgVHlwZUVycm9yIHdoZW4g
Y3VzdG9tIGVsZW1lbnQgaXMgbm90IHdlbGwgZGVmaW5lZCAKIFBBU1MgSFRNTEVsZW1lbnQgY29u
c3RydWN0b3IgbXVzdCBpbmZlciB0aGUgdGFnIG5hbWUgZnJvbSB0aGUgZWxlbWVudCBpbnRlcmZh
Y2UgCi1QQVNTIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgYWxsb3cgYXNzb2NpYXRpbmcg
YW4gZWxlbWVudCBpbnRlcmZhY2Ugd2l0aCBtdWx0aXBsZSB0YWcgbmFtZXMgCiBQQVNTIEhUTUxF
bGVtZW50IGNvbnN0cnVjdG9yIG11c3QgYWxsb3cgc3ViY2xhc3NpbmcgYSBjdXN0b20gZWxlbWVu
dCAKIFBBU1MgSFRNTEVsZW1lbnQgY29uc3RydWN0b3IgbXVzdCBhbGxvdyBzdWJjbGFzc2luZyBh
biB1c2VyLWRlZmluZWQgc3ViY2xhc3Mgb2YgSFRNTEVsZW1lbnQgCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0hUTUxFbGVtZW50LWNvbnN0cnVjdG9yLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvSFRNTEVsZW1lbnQt
Y29uc3RydWN0b3IuaHRtbAkocmV2aXNpb24gMTk3NTMzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvSFRNTEVsZW1lbnQtY29uc3RydWN0b3IuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTQsMzQgKzE0LDE5IEBACiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIFNv
bWVEZWZpbmVkRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9OwotICAgIGRvY3VtZW50LmRl
ZmluZUN1c3RvbUVsZW1lbnQoJ2RlZmluZWQtZWxlbWVudCcsIFNvbWVEZWZpbmVkRWxlbWVudCk7
CisgICAgZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnZGVmaW5lZC1lbGVtZW50JywgU29tZURlZmlu
ZWRFbGVtZW50KTsKICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBuZXcgSFRNTEVsZW1lbnQoJ2RlZmluZWQtZWxlbWVudCcpOyB9KTsKIH0sICdI
VE1MRWxlbWVudCBjb25zdHJ1Y3RvciBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlcmUg
aXMgbm8gZGVyaXZlZCBjbGFzcycpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBT
b21lQ3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9OwogICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IG5ldyBTb21lQ3VzdG9tRWxl
bWVudDsgfSwKLSAgICAgICAgJ0luc3RhbnRpYXRpbmcgYSBjdXN0b20gZWxlbWVudCB3aXRob3V0
IGNhbGxpbmcgZGVmaW5lQ3VzdG9tRWxlbWVudCBtdXN0IHRocm93IFR5cGVFcnJvcicpOwotCi0g
ICAgY2xhc3MgQW5vdGhlckN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7Ci0gICAg
ICAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcignc29tZS1lbGVtZW50Jyk7IH0KLSAgICB9OwotICAg
IGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ2Fub3RoZXItZWxlbWVudCcsIEFub3RoZXJD
dXN0b21FbGVtZW50KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBuZXcgQW5vdGhlckN1c3RvbUVsZW1lbnQ7IH0sCi0gICAgICAgICdDYWxs
aW5nIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIHdpdGggYSBtaXNtYXRjaGluZyB0YWcgbmFtZSB0
aHJvdyBUeXBlRXJyb3InKTsKLQotICAgIGNsYXNzIFlldEFub3RoZXJDdXN0b21FbGVtZW50IGV4
dGVuZHMgSFRNTEVsZW1lbnQgewotICAgICAgICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoMSk7IH0K
LSAgICB9OwotICAgIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ3lldC1hbm90aGVyLWVs
ZW1lbnQnLCBZZXRBbm90aGVyQ3VzdG9tRWxlbWVudCk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgbmV3IFlldEFub3RoZXJDdXN0b21FbGVt
ZW50OyB9LAotICAgICAgICAnQ2FsbGluZyBIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciB3aXRoIGEg
YmFkIHRhZyBuYW1lIHRocm93IFR5cGVFcnJvcicpOwotCisgICAgICAgICdJbnN0YW50aWF0aW5n
IGEgY3VzdG9tIGVsZW1lbnQgd2l0aG91dCBjYWxsaW5nIGRlZmluZUVsZW1lbnQgbXVzdCB0aHJv
dyBUeXBlRXJyb3InKTsKIH0sICdIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciBtdXN0IHRocm93IFR5
cGVFcnJvciB3aGVuIGN1c3RvbSBlbGVtZW50IGlzIG5vdCB3ZWxsIGRlZmluZWQnKTsKIAogdGVz
dChmdW5jdGlvbiAoKSB7CiAgICAgY2xhc3MgQ3VzdG9tRWxlbWVudFdpdGhJbmZlcnJlZFRhZ05h
bWUgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKLSAgICBkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVt
ZW50KCdpbmZlcnJlZC1uYW1lJywgQ3VzdG9tRWxlbWVudFdpdGhJbmZlcnJlZFRhZ05hbWUpOwor
ICAgIGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ2luZmVycmVkLW5hbWUnLCBDdXN0b21FbGVtZW50
V2l0aEluZmVycmVkVGFnTmFtZSk7CiAKICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ3VzdG9tRWxl
bWVudFdpdGhJbmZlcnJlZFRhZ05hbWU7CiAgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFu
Y2VvZiBFbGVtZW50LCAnQSBjdXN0b20gZWxlbWVudCBtdXN0IGluaGVyaXQgZnJvbSBFbGVtZW50
Jyk7CkBAIC01OSwzMiArNDQsMTkgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiB9LCAnSFRNTEVsZW1l
bnQgY29uc3RydWN0b3IgbXVzdCBpbmZlciB0aGUgdGFnIG5hbWUgZnJvbSB0aGUgZWxlbWVudCBp
bnRlcmZhY2UnKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgY2xhc3MgRWxlbWVudFdpdGhN
dWx0aXBsZVRhZ05hbWVzIGV4dGVuZHMgSFRNTEVsZW1lbnQgeyB9OwotICAgIGRvY3VtZW50LmRl
ZmluZUN1c3RvbUVsZW1lbnQoJ2N1c3RvbS1lbGVtZW50LTEnLCBFbGVtZW50V2l0aE11bHRpcGxl
VGFnTmFtZXMpOwotICAgIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ2N1c3RvbS1lbGVt
ZW50LTInLCBFbGVtZW50V2l0aE11bHRpcGxlVGFnTmFtZXMpOwotCi0gICAgdmFyIGluc3RhbmNl
MSA9IG5ldyBFbGVtZW50V2l0aE11bHRpcGxlVGFnTmFtZXMoJ2N1c3RvbS1lbGVtZW50LTEnKTsK
LSAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZTEgaW5zdGFuY2VvZiBFbGVtZW50V2l0aE11bHRpcGxl
VGFnTmFtZXMpOwotICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UxLmxvY2FsTmFtZSwgJ2N1c3Rv
bS1lbGVtZW50LTEnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlMS5ub2RlTmFtZSwgJ0NV
U1RPTS1FTEVNRU5ULTEnKTsKLQotICAgIHZhciBpbnN0YW5jZTIgPSBuZXcgRWxlbWVudFdpdGhN
dWx0aXBsZVRhZ05hbWVzKCdjdXN0b20tZWxlbWVudC0yJyk7Ci0gICAgYXNzZXJ0X3RydWUoaW5z
dGFuY2UyIGluc3RhbmNlb2YgRWxlbWVudFdpdGhNdWx0aXBsZVRhZ05hbWVzKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGluc3RhbmNlMi5sb2NhbE5hbWUsICdjdXN0b20tZWxlbWVudC0yJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhpbnN0YW5jZTIubm9kZU5hbWUsICdDVVNUT00tRUxFTUVOVC0yJyk7Ci0K
LSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBu
ZXcgRWxlbWVudFdpdGhNdWx0aXBsZVRhZ05hbWVzOyB9LAotICAgICAgICAnSW5zdGFudGlhdGlu
ZyBhbiBlbGVtZW50IGludGVyZmFjZSBhc3NvY2lhdGVkIHdpdGggbXVsdGlwbGUgdGFnIG5hbWVz
IHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgdGFnIG5hbWUgbXVzdCB0aHJvdyBUeXBlRXJyb3InKTsK
LQotfSwgJ0hUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgYWxsb3cgYXNzb2NpYXRpbmcgYW4g
ZWxlbWVudCBpbnRlcmZhY2Ugd2l0aCBtdWx0aXBsZSB0YWcgbmFtZXMnKTsKLQotdGVzdChmdW5j
dGlvbiAoKSB7CiAgICAgY2xhc3MgQ29uY3JldGVDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVs
ZW1lbnQgeyB9OwogICAgIGNsYXNzIFN1YkN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBDb25jcmV0ZUN1
c3RvbUVsZW1lbnQgeyB9OwotICAgIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ2NvbmNy
ZXRlLWN1c3RvbS1lbGVtZW50JywgQ29uY3JldGVDdXN0b21FbGVtZW50KTsKLSAgICBkb2N1bWVu
dC5kZWZpbmVDdXN0b21FbGVtZW50KCdzdWItY3VzdG9tLWVsZW1lbnQnLCBTdWJDdXN0b21FbGVt
ZW50KTsKKyAgICBkb2N1bWVudC5kZWZpbmVFbGVtZW50KCdjb25jcmV0ZS1jdXN0b20tZWxlbWVu
dCcsIENvbmNyZXRlQ3VzdG9tRWxlbWVudCk7CisgICAgZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgn
c3ViLWN1c3RvbS1lbGVtZW50JywgU3ViQ3VzdG9tRWxlbWVudCk7CisKKyAgICB2YXIgaW5zdGFu
Y2UgPSBuZXcgQ29uY3JldGVDdXN0b21FbGVtZW50KCk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBDb25jcmV0ZUN1c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF9mYWxzZShp
bnN0YW5jZSBpbnN0YW5jZW9mIFN1YkN1c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMo
aW5zdGFuY2UubG9jYWxOYW1lLCAnY29uY3JldGUtY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGluc3RhbmNlLm5vZGVOYW1lLCAnQ09OQ1JFVEUtQ1VTVE9NLUVMRU1FTlQnKTsK
IAogICAgIHZhciBpbnN0YW5jZSA9IG5ldyBTdWJDdXN0b21FbGVtZW50KCk7CisgICAgYXNzZXJ0
X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25jcmV0ZUN1c3RvbUVsZW1lbnQpOwogICAgIGFz
c2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgU3ViQ3VzdG9tRWxlbWVudCk7CiAgICAgYXNz
ZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdzdWItY3VzdG9tLWVsZW1lbnQnKTsKICAg
ICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLm5vZGVOYW1lLCAnU1VCLUNVU1RPTS1FTEVNRU5UJyk7
CkBAIC05NCw5ICs2NiwxMCBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKIHRlc3QoZnVuY3Rpb24gKCkg
ewogICAgIGNsYXNzIEFic3RyYWN0Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsg
fTsKICAgICBjbGFzcyBDb25jcmV0ZVN1YkN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBBYnN0cmFjdEN1
c3RvbUVsZW1lbnQgeyB9OwotICAgIGRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ2NvbmNy
ZXRlLXN1Yi1jdXN0b20tZWxlbWVudCcsIENvbmNyZXRlU3ViQ3VzdG9tRWxlbWVudCk7CisgICAg
ZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnY29uY3JldGUtc3ViLWN1c3RvbS1lbGVtZW50JywgQ29u
Y3JldGVTdWJDdXN0b21FbGVtZW50KTsKIAogICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25jcmV0
ZVN1YkN1c3RvbUVsZW1lbnQoKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9m
IEFic3RyYWN0Q3VzdG9tRWxlbWVudCk7CiAgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFu
Y2VvZiBDb25jcmV0ZVN1YkN1c3RvbUVsZW1lbnQpOwogICAgIGFzc2VydF9lcXVhbHMoaW5zdGFu
Y2UubG9jYWxOYW1lLCAnY29uY3JldGUtc3ViLWN1c3RvbS1lbGVtZW50Jyk7CiAgICAgYXNzZXJ0
X2VxdWFscyhpbnN0YW5jZS5ub2RlTmFtZSwgJ0NPTkNSRVRFLVNVQi1DVVNUT00tRUxFTUVOVCcp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1j
b25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50LWluLWRvY3VtZW50LXdyaXRlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25z
dHJ1Y3RzLWN1c3RvbS1lbGVtZW50LWluLWRvY3VtZW50LXdyaXRlLmh0bWwJKHJldmlzaW9uIDE5
NzUzMykKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXIt
Y29uc3RydWN0cy1jdXN0b20tZWxlbWVudC1pbi1kb2N1bWVudC13cml0ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMyw3ICsxMyw3IEBACiA8c2NyaXB0PgogCiBjbGFzcyBNeUN1c3RvbUVsZW1l
bnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH0KLWRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQo
J215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKK2RvY3VtZW50LmRlZmluZUVs
ZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKIAogZG9jdW1lbnQu
d3JpdGUoJzxteS1jdXN0b20tZWxlbWVudD48L215LWN1c3RvbS1lbGVtZW50PicpOwogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWNvbnN0cnVj
dHMtY3VzdG9tLWVsZW1lbnQtc3luY2hyb25vdXNseS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0
b20tZWxlbWVudC1zeW5jaHJvbm91c2x5Lmh0bWwJKHJldmlzaW9uIDE5NzUzMykKKysrIExheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0
b20tZWxlbWVudC1zeW5jaHJvbm91c2x5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbgogICAgICAgICBj
b250YWluZXJOZXh0U2lsYmluZ0luQ29uc3RydWN0b3IgPSBjb250YWluZXIubmV4dFNpYmxpbmc7
CiAgICAgfQogfTsKLWRvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ215LWN1c3RvbS1lbGVt
ZW50JywgTXlDdXN0b21FbGVtZW50KTsKK2RvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3Rv
bS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKIAogPC9zY3JpcHQ+CiA8ZGl2IGlkPSJjdXN0
b20tZWxlbWVudC1jb250YWluZXIiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50cy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXIt
Y29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMTk3NTMzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1
c3RvbS1lbGVtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBAIHRlc3Qo
ZnVuY3Rpb24gKCkgewogCiB9LCAnSFRNTCBwYXJzZXIgbXVzdCBOT1QgY3JlYXRlIGEgY3VzdG9t
IGVsZW1lbnQgYmVmb3JlIGRlZmluZUVsZW1lbnQgaXMgY2FsbGVkJyk7CiAKLWRvY3VtZW50LmRl
ZmluZUN1c3RvbUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsK
K2RvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVt
ZW50KTsKIAogPC9zY3JpcHQ+CiA8bXktY3VzdG9tLWVsZW1lbnQgaWQ9Imluc3RhbmNlMiI+PC9t
eS1jdXN0b20tZWxlbWVudD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L3BhcnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24tZWxlbWVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItZmFs
bHNiYWNrLXRvLXVua25vd24tZWxlbWVudC5odG1sCShyZXZpc2lvbiAxOTc1MzMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFjay10by11
bmtub3duLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQCBjbGFz
cyBSZXR1cm5zVGV4dE5vZGUgZXh0ZW5kcyBIVE1MRWxlbWVuCiAgICAgICAgIHJldHVybiBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnc29tZSB0ZXh0Jyk7CiAgICAgfQogfTsKLWRvY3VtZW50LmRl
ZmluZUN1c3RvbUVsZW1lbnQoJ3JldHVybnMtdGV4dCcsIFJldHVybnNUZXh0Tm9kZSk7Citkb2N1
bWVudC5kZWZpbmVFbGVtZW50KCdyZXR1cm5zLXRleHQnLCBSZXR1cm5zVGV4dE5vZGUpOwogCiBj
bGFzcyBSZXR1cm5zTm9uRWxlbWVudE9iamVjdCBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICBj
b25zdHJ1Y3RvcigpIHsKQEAgLTI2LDE5ICsyNiwxOSBAQCBjbGFzcyBSZXR1cm5zTm9uRWxlbWVu
dE9iamVjdCBleHRlbmRzIEhUCiAgICAgICAgIHJldHVybiB7fTsKICAgICB9CiB9OwotZG9jdW1l
bnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgncmV0dXJucy1ub24tZWxlbWVudC1vYmplY3QnLCBSZXR1
cm5zTm9uRWxlbWVudE9iamVjdCk7Citkb2N1bWVudC5kZWZpbmVFbGVtZW50KCdyZXR1cm5zLW5v
bi1lbGVtZW50LW9iamVjdCcsIFJldHVybnNOb25FbGVtZW50T2JqZWN0KTsKIAogY2xhc3MgTGFj
a3NTdXBlckNhbGwgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CiAgICAgY29uc3RydWN0b3IoKSB7IH0K
IH07Ci1kb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdsYWNrcy1zdXBlci1jYWxsJywgTGFj
a3NTdXBlckNhbGwpOworZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnbGFja3Mtc3VwZXItY2FsbCcs
IExhY2tzU3VwZXJDYWxsKTsKIAogY2xhc3MgVGhyb3dzRXhjZXB0aW9uIGV4dGVuZHMgSFRNTEVs
ZW1lbnQgewogICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICB0aHJvdyAnQmFkJzsKICAgICB9
CiB9OwotZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgndGhyb3dzLWV4Y2VwdGlvbicsIFRo
cm93c0V4Y2VwdGlvbik7Citkb2N1bWVudC5kZWZpbmVFbGVtZW50KCd0aHJvd3MtZXhjZXB0aW9u
JywgVGhyb3dzRXhjZXB0aW9uKTsKIAogPC9zY3JpcHQ+CiA8cmV0dXJucy10ZXh0PjwvcmV0dXJu
cy10ZXh0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3Bh
cnNlci1zZXRzLWF0dHJpYnV0ZXMtYW5kLWNoaWxkcmVuLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1zZXRzLWF0dHJpYnV0
ZXMtYW5kLWNoaWxkcmVuLmh0bWwJKHJldmlzaW9uIDE5NzUzMykKKysrIExheW91dFRlc3RzL2Zh
c3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1dGVzLWFuZC1jaGls
ZHJlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBAIGNsYXNzIE15Q3VzdG9t
RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW4KICAgICAgICAgbnVtYmVyT2ZDaGlsZE5vZGVzSW5D
b25zdHJ1Y3RvciA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7CiAgICAgfQogfTsKLWRvY3VtZW50
LmRlZmluZUN1c3RvbUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50
KTsKK2RvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21F
bGVtZW50KTsKIAogPC9zY3JpcHQ+CiA8bXktY3VzdG9tLWVsZW1lbnQgaWQ9ImN1c3RvbS1lbGVt
ZW50LWlkIiBjbGFzcz0iY2xhc3MxIGNsYXNzMiI+aGVsbG8gPGI+d29ybGQ8L2I+PC9teS1jdXN0
b20tZWxlbWVudD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNl
ci9wYXJzZXItdXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0cnVj
dGVkLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTk3NTMzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0cnVjdGVkLWVsZW1lbnQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBjbGFzcyBJbnN0YW50aWF0ZXNJdHNl
bGZCZWZvcmVTdXBlciBleHRlCiAgICAgICAgIGVsZW1lbnRDcmVhdGVkQnlTdXBlckNhbGwgPSB0
aGlzOwogICAgIH0KIH07Ci1kb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdpbnN0YW50aWF0
ZXMtaXRzZWxmLWJlZm9yZS1zdXBlcicsIEluc3RhbnRpYXRlc0l0c2VsZkJlZm9yZVN1cGVyKTsK
K2RvY3VtZW50LmRlZmluZUVsZW1lbnQoJ2luc3RhbnRpYXRlcy1pdHNlbGYtYmVmb3JlLXN1cGVy
JywgSW5zdGFudGlhdGVzSXRzZWxmQmVmb3JlU3VwZXIpOwogCiBsZXQgc2hvdWxkQ3JlYXRlQW5v
dGhlckluc3RhbmNlID0gdHJ1ZTsKIGxldCBhbm90aGVySW5zdGFuY2UgPSB1bmRlZmluZWQ7CkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIFJldHVybnNBbm90aGVySW5zdGFuY2UgZXh0ZW5kcyBIVE0K
ICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIH07Ci1kb2N1bWVudC5kZWZpbmVDdXN0
b21FbGVtZW50KCdyZXR1cm5zLWFub3RoZXItaW5zdGFuY2UnLCBSZXR1cm5zQW5vdGhlckluc3Rh
bmNlKTsKK2RvY3VtZW50LmRlZmluZUVsZW1lbnQoJ3JldHVybnMtYW5vdGhlci1pbnN0YW5jZScs
IFJldHVybnNBbm90aGVySW5zdGFuY2UpOwogCiA8L3NjcmlwdD4KIDxpbnN0YW50aWF0ZXMtaXRz
ZWxmLWJlZm9yZS1zdXBlcj48L2luc3RhbnRpYXRlcy1pdHNlbGYtYmVmb3JlLXN1cGVyPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLXJl
Z2lzdHJ5LW9mLW93bmVyLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLXJlZ2lzdHJ5LW9mLW93bmVy
LWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDE5NzUzMykKKysrIExheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItdXNlcy1yZWdpc3RyeS1vZi1vd25lci1kb2N1bWVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw3IEBACiA8c2NyaXB0PgogCiBjbGFz
cyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH07Ci1kb2N1bWVudC5kZWZp
bmVDdXN0b21FbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7Citk
b2N1bWVudC5kZWZpbmVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVu
dCk7CiAKIGRvY3VtZW50LndyaXRlKCc8dGVtcGxhdGU+PG15LWN1c3RvbS1lbGVtZW50PjwvbXkt
Y3VzdG9tLWVsZW1lbnQ+PC90ZW1wbGF0ZT4nKTsKIApAQCAtNDMsNyArNDMsNyBAQCB0ZXN0KGZ1
bmN0aW9uICgpIHsKIH0sICdIVE1MIHBhcnNlciBtdXN0IG5vdCB1c2UgdGhlIHJlZ2lzdHJ5IG9m
IHRoZSBvd25lciBlbGVtZW50XCdzIGRvY3VtZW50IGluc2lkZSBhbiBpZnJhbWUnKTsKIAogY2xh
c3MgRWxlbWVudEluSUZyYW1lIGV4dGVuZHMgaWZyYW1lLmNvbnRlbnRXaW5kb3cuSFRNTEVsZW1l
bnQgeyB9OwotaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdlbGVt
ZW50LWluLWlmcmFtZScsIEVsZW1lbnRJbklGcmFtZSk7CitpZnJhbWUuY29udGVudERvY3VtZW50
LmRlZmluZUVsZW1lbnQoJ2VsZW1lbnQtaW4taWZyYW1lJywgRWxlbWVudEluSUZyYW1lKTsKIGlm
cmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnPGVsZW1lbnQtaW4taWZyYW1l
PjwvZWxlbWVudC1pbi1pZnJhbWU+JzsKIAogdGVzdChmdW5jdGlvbiAoKSB7Cg==
</data>
<flag name="review"
          id="297602"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>