<?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>164851</bug_id>
          
          <creation_ts>2016-11-16 19:16:21 -0800</creation_ts>
          <short_desc>Add an experimental API to find elements across shadow boundaries</short_desc>
          <delta_ts>2016-11-17 21:30:37 -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>
          
          
          <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>jberlin</cc>
    
    <cc>keith_miller</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252176</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-16 19:16:21 -0800</bug_when>
    <thetext>Add an experimental API to find elements that match a given selector across shadow boundaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252177</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-16 19:17:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/28220092&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252184</commentid>
    <comment_count>2</comment_count>
      <attachid>295019</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-16 19:49:15 -0800</bug_when>
    <thetext>Created attachment 295019
Adds the feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252203</commentid>
    <comment_count>3</comment_count>
      <attachid>295025</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-16 21:37:37 -0800</bug_when>
    <thetext>Created attachment 295025
Fixed build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252226</commentid>
    <comment_count>4</comment_count>
      <attachid>295025</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-16 23:02:34 -0800</bug_when>
    <thetext>Comment on attachment 295025
Fixed build

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Add window.webkitCollectMatchingElementsAcrossShadowBoundaries(Node node, DOMString selectors)

What&apos;s the argument for prefixing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252230</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-16 23:06:46 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 295025 [details]
&gt; Fixed build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295025&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Add window.webkitCollectMatchingElementsAcrossShadowBoundaries(Node node, DOMString selectors)
&gt; 
&gt; What&apos;s the argument for prefixing this?

I think the argument is that this is a proprietary API we don&apos;t intend to standardize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252592</commentid>
    <comment_count>6</comment_count>
      <attachid>295131</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-17 20:15:14 -0800</bug_when>
    <thetext>Created attachment 295131
Dropped the prefix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252599</commentid>
    <comment_count>7</comment_count>
      <attachid>295131</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-17 21:05:08 -0800</bug_when>
    <thetext>Comment on attachment 295131
Dropped the prefix

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252602</commentid>
    <comment_count>8</comment_count>
      <attachid>295131</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-17 21:30:31 -0800</bug_when>
    <thetext>Comment on attachment 295131
Dropped the prefix

Clearing flags on attachment: 295131

Committed r208878: &lt;http://trac.webkit.org/changeset/208878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252603</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-17 21:30:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295019</attachid>
            <date>2016-11-16 19:49:15 -0800</date>
            <delta_ts>2016-11-16 21:37:33 -0800</delta_ts>
            <desc>Adds the feature</desc>
            <filename>bug-164851-20161116194911.patch</filename>
            <type>text/plain</type>
            <size>33016</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODY2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTE2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwg
QVBJIHRvIGZpbmQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBib3VuZGFyaWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NTEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI4MjIwMDkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB3aW5kb3cud2Via2l0Q29sbGVjdE1hdGNoaW5nRWxlbWVudHNB
Y3Jvc3NTaGFkb3dCb3VuZGFyaWVzKE5vZGUgbm9kZSwgRE9NU3RyaW5nIHNlbGVjdG9ycykKKyAg
ICAgICAgYXMgYW4gZXhwZXJpbWVudGFsIEFQSSB3aGljaCBmaW5kcyBhIGxpc3Qgb2YgZWxlbWVu
dHMgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBDU1Mgc2VsZWN0b3JzCisgICAgICAgIGFuZCBleHBv
c2UgaXQgdG8gYSBKU1dvcmxkIG9uIHdoaWNoIFdLQnVuZGxlU2NyaXB0V29ybGRNYWtlQWxsU2hh
ZG93Um9vdHNPcGVuIHdhcyBjYWxsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBNb3JlIHRl
c3QgY2FzZXMgYXJlIGFkZGVkIHRvIFdlYktpdDIuSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93
Um9vdHNPcGVuLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChOZWVkc1J1bnRpbWVDaGVjayk6IEFkZGVkLiBBYnN0cmFjdHMgY2hlY2tz
IGZvciBFbmFibGVkQXRSdW50aW1lIGFuZCBFbmFibGVkRm9yV29ybGQuCisgICAgICAgIChPcGVy
YXRpb25TaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFz
aFRhYmxlKToKKyAgICAgICAgKEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUpOiBVc2Ugd29y
bGRGb3JET01PYmplY3QodGhpcykuY29uZGl0aW9uKCkgZm9yIEVuYWJsZWRGb3JXb3JsZC4KKyAg
ICAgICAgQWxzbyBzcGxpdCB0aGUgbGluZSBmb3IgRW5hYmxlZEF0UnVudGltZSBhbmQgRW5hYmxl
ZEF0UnVudGltZSBmb3IgYSBiZXR0ZXIgcmVhZGFiaWxpdHkuCisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKGFkZEl0ZXJhYmxlUHJvcGVydGllcyk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZENh
bGxlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZp
Y01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldv
cmxkU3BlY2lmaWNNZXRob2RDYWxsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0R2xvYmFsT2JqZWN0LmlkbDogQWRkZWQgYSB0ZXN0IGNhc2UuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndlYmtpdENvbGxlY3RN
YXRjaGluZ0VsZW1lbnRzQWNyb3NzU2hhZG93Qm91bmRhcmllcyk6IEFkZGVkLiBJbXBsZW1lbnRz
CisgICAgICAgIHRoZSBmZWF0dXJlIGJ5IGNhbGxpbmcgU2VsZWN0b3JRdWVyeSdzIG1hdGNoZXMg
b24gYSBub2RlIHlpZWxkZWQgYnkgQ29tcG9zZWRUcmVlSXRlcmF0b3IuCisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMTYtMTEt
MTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcmllZCB0byBm
aXggdGhlIGlPUyBidWlsZCBhZnRlciByMjA4NjY2LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwODY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC02OTMsNiArNjkzLDEzIEBAIHN1YiBBdHRyaWJ1dGVTaG91bGRC
ZU9uSW5zdGFuY2UKICAgICByZXR1cm4gMDsKIH0KIAorc3ViIE5lZWRzUnVudGltZUNoZWNrCit7
CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfQorICAgICAgICB8fCAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9OworfQorCiAjIGh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLW9wZXJhdGlvbnMKIHN1YiBPcGVyYXRpb25TaG91
bGRCZU9uSW5zdGFuY2UKIHsKQEAgLTcwMiw3ICs3MDksNyBAQCBzdWIgT3BlcmF0aW9uU2hvdWxk
QmVPbkluc3RhbmNlCiAgICAgcmV0dXJuIDEgaWYgSXNHbG9iYWxPclByaW1hcnlHbG9iYWxJbnRl
cmZhY2UoJGludGVyZmFjZSk7CiAKICAgICAjIEZJWE1FOiBUaGUgYmluZGluZ3MgZ2VuZXJhdG9y
IGRvZXMgbm90IHN1cHBvcnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0
aGUgaW5zdGFuY2UgeWV0IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKS4KLSAgICByZXR1cm4g
MCBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9Owor
ICAgIHJldHVybiAwIGlmIE5lZWRzUnVudGltZUNoZWNrKCRmdW5jdGlvbik7CiAKICAgICAjIFtV
bmZvcmdlYWJsZV0gb3BlcmF0aW9ucyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLiBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZQogICAgIHJldHVybiAxIGlmIElz
VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKQEAgLTE4ODIsNyArMTg4OSw3IEBA
IHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbmV4dCBpZiBBdHRyaWJ1
dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgIT0gJGlzSW5zdGFu
Y2U7CiAKICAgICAgICAgIyBHbG9iYWwgb2JqZWN0cyBhZGQgUnVudGltZUVuYWJsZWQgYXR0cmli
dXRlcyBhZnRlciBjcmVhdGlvbiBzbyBkbyBub3QgYWRkIHRoZW0gdG8gdGhlIHN0YXRpYyB0YWJs
ZS4KLSAgICAgICAgaWYgKCRpc0luc3RhbmNlICYmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmICgkaXNJbnN0YW5jZSAmJiBO
ZWVkc1J1bnRpbWVDaGVjaygkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgJHByb3BlcnR5Q291
bnQgLT0gMTsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KQEAgLTE5MTEsNyArMTkxOCw3
IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbXkgJGNvbmRpdGlv
bmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwogICAg
ICAgICAkY29uZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25h
bDsKIAotICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxl
ZEF0UnVudGltZX0pIHsKKyAgICAgICAgaWYgKE5lZWRzUnVudGltZUNoZWNrKCRhdHRyaWJ1dGUp
KSB7CiAgICAgICAgICAgICBwdXNoKEAkcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzLCAkYXR0cmli
dXRlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5MjcsNyArMTkzNCw3IEBAIHN1YiBHZW5lcmF0
ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPm5hbWUgZXEg
IltTeW1ib2wuSXRlcmF0b3JdIjsKIAogICAgICAgICAjIEdsb2JhbCBvYmplY3RzIGFkZCBSdW50
aW1lRW5hYmxlZCBvcGVyYXRpb25zIGFmdGVyIGNyZWF0aW9uIHNvIGRvIG5vdCBhZGQgdGhlbSB0
byB0aGUgc3RhdGljIHRhYmxlLgotICAgICAgICBpZiAoJGlzSW5zdGFuY2UgJiYgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgeworICAgICAgICBpZiAo
JGlzSW5zdGFuY2UgJiYgTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9uKSkgewogICAgICAgICAg
ICAgJHByb3BlcnR5Q291bnQgLT0gMTsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KQEAg
LTE5NTQsNyArMTk2MSw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsID0gZ2V0Q29uZGl0aW9uYWxGb3JGdW5jdGlvbkNvbnNpZGVyaW5n
T3ZlcmxvYWRzKCRmdW5jdGlvbik7CiAgICAgICAgICRjb25kaXRpb25hbHMtPnskbmFtZX0gPSAk
Y29uZGl0aW9uYWwgaWYgJGNvbmRpdGlvbmFsOwogCi0gICAgICAgIGlmICgkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmIChOZWVk
c1J1bnRpbWVDaGVjaygkZnVuY3Rpb24pKSB7CiAgICAgICAgICAgICBwdXNoKEAkcnVudGltZUVu
YWJsZWRGdW5jdGlvbnMsICRmdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTIwLDgg
KzI1MjcsMTYgQEAgc3ViIEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUKIHsKICAgICBteSAk
Y29udGV4dCA9IHNoaWZ0OwogCisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIpOworICAgIAorICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RW5hYmxlZEZvcldvcmxkfSkgeworICAgICAgICByZXR1cm4gIndvcmxkRm9yRE9NT2JqZWN0
KHRoaXMpLiIgLiBUb01ldGhvZE5hbWUoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Vu
YWJsZWRGb3JXb3JsZH0pOworICAgIH0KKwogICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMgZ2l2ZW4g
KGUuZy4gIkVuYWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5hbWUiKSByZXR1cm4gdGhlIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkue0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBt
ZXRob2QuCi0gICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLiIgLiBUb01ldGhvZE5hbWUoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJs
ZWRBdFJ1bnRpbWV9KSAuICJFbmFibGVkIiBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0VuYWJsZWRBdFJ1bnRpbWV9ICYmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
bmFibGVkQXRSdW50aW1lfSBuZSAiVkFMVUVfSVNfTUlTU0lORyIpOworICAgIGlmICgkY29udGV4
dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0gJiYgJGNvbnRleHQtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9IG5lICJWQUxVRV9JU19NSVNTSU5H
IikgeworICAgICAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuIiAuIFRvTWV0aG9kTmFtZSgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEF0UnVudGltZX0pIC4gIkVuYWJsZWQiOworICAgIH0KIAogICAgICMgT3RoZXJ3aXNlIHJl
dHVybiBhIGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkue21ldGhvZE5hbWV9RW5hYmxlZCgpLgogICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5uYW1l
KSAuICJFbmFibGVkIjsKQEAgLTMwMTQsMTAgKzMwMjksOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogCiAgICAgIyBTdXBwb3J0IGZvciBSdW50aW1lRW5hYmxlZCBhdHRyaWJ1dGVzIG9u
IGluc3RhbmNlcy4KICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30pIHsKLSAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX07CisgICAgICAgIG5leHQgdW5sZXNzIE5lZWRzUnVu
dGltZUNoZWNrKCRhdHRyaWJ1dGUpOwogICAgICAgICBuZXh0IHVubGVzcyBBdHRyaWJ1dGVTaG91
bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIpOwogICAgICAgICBteSAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmlu
ZygkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgbXkgJGVuYWJs
ZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZSk7CkBA
IC0zMDQ5LDExICszMDYzLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAj
IFN1cHBvcnQgZm9yIFJ1bnRpbWVFbmFibGVkIG9wZXJhdGlvbnMgb24gaW5zdGFuY2VzLgogICAg
IGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAg
ICAgbmV4dCB1bmxlc3MgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRS
dW50aW1lfTsKKyAgICAgICAgbmV4dCB1bmxlc3MgTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9u
KTsKICAgICAgICAgbmV4dCB1bmxlc3MgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRl
cmZhY2UsICRmdW5jdGlvbik7CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJ
bmRleH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogCi0gICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsKICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcoJGZ1bmN0aW9uKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgbXkgJGVuYWJs
ZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9uKTsKQEAg
LTUwOTIsOCArNTEwNSw3IEBAIHN1YiBhZGRJdGVyYWJsZVByb3BlcnRpZXMoKQogICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAKLSAgICBpZiAo
JGludGVyZmFjZS0+aXRlcmFibGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRp
bWV9KSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiKTsKKyAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZS0+aXRlcmFibGUpKSB7
CiAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25O
YW1lKCRpbnRlcmZhY2UtPml0ZXJhYmxlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAgICIpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkocmV2
aXNpb24gMjA4NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBEb05vdENoZWNrU2Vj
dXJpdHlPblNldHRlcgogRG9jdW1lbnRFdmVudEhhbmRsZXIKIEVuYWJsZWRBdFJ1bnRpbWU9Kgog
RW5hYmxlZEJ5U2V0dGluZz0qCitFbmFibGVkRm9yV29ybGQ9KgogRW5mb3JjZVJhbmdlCiBFeHBv
cnRNYWNybz1XRUJDT1JFX0VYUE9SVHxXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVAogRXhwb3J0
VG9XcmFwcGVkRnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyMDg2NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5
KQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlCiAg
ICAgbXkgJGNvZGUgPSAiICAgICI7CiAgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlc0xpc3Q7CiAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlTmFtZSAoc29ydCBrZXlzICV7JGV4dGVuZGVkQXR0cmli
dXRlc30pIHsKLSAgICAgIG5leHQgdW5sZXNzICgkYXR0cmlidXRlTmFtZSBlcSAiQ29uZGl0aW9u
YWwiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQXRSdW50aW1lIiB8fCAkYXR0cmlidXRl
TmFtZSBlcSAiRW5hYmxlZEJ5U2V0dGluZyIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlByaXZhdGVJ
ZGVudGlmaWVyIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGljSWRlbnRpZmllciIpOworICAg
ICAgbmV4dCB1bmxlc3MgKCRhdHRyaWJ1dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJp
YnV0ZU5hbWUgZXEgIkVuYWJsZWRBdFJ1bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFi
bGVkRm9yV29ybGQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIiB8fCAk
YXR0cmlidXRlTmFtZSBlcSAiUHJpdmF0ZUlkZW50aWZpZXIiIHx8ICRhdHRyaWJ1dGVOYW1lIGVx
ICJQdWJsaWNJZGVudGlmaWVyIik7CiAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGUgPSAkYXR0
cmlidXRlTmFtZTsKICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAiPSIgLiAkZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
JGF0dHJpYnV0ZU5hbWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAgICAgIHB1c2goQGV4dGVu
ZGVkQXR0cmlidXRlc0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEdsb2JhbE9iamVjdC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9iYWxPYmpl
Y3QuaWRsCShyZXZpc2lvbiAyMDg2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdEdsb2JhbE9iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDggQEAKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRl
c3RGZWF0dXJlXSB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRE9NU3RyaW5nIHRlc3RQ
YXJhbSk7CiAgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0UnVudGltZT1U
ZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKGxvbmcgdGVzdFBhcmFt
KTsKIAorICAgIFtFbmFibGVkRm9yV29ybGQ9c3BlY2lmaWNXb3JsZF0gdm9pZCBlbmFibGVkSW5T
cGVjaWZpY1dvcmxkKGxvbmcgdGVzdFBhcmFtKTsKKwogICAgIFtQcml2YXRlSWRlbnRpZmllciwg
Q29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2
b2lkIHRlc3RQcml2YXRlRnVuY3Rpb24oKTsKICAgICBbSlNCdWlsdGluLCBDb25kaXRpb25hbD1U
RVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgdGVzdEpTQnVp
bHRpbkZ1bmN0aW9uKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjA4NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNiArMTA5LDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxv
dwogICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZl
YXR1cmVdIHZvaWQgZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFt
KTsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RG
ZWF0dXJlXSB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24obG9uZyB0ZXN0UGFyYW0pOwog
CisgICAgW0VuYWJsZWRGb3JXb3JsZD1zb21lV29ybGRdIHZvaWQgd29ybGRTcGVjaWZpY01ldGhv
ZChsb25nIHRlc3RQYXJhbSk7CisKICAgICAvLyBUeXBlZEFycmF5IGF0dHJpYnV0ZQogICAgIGF0
dHJpYnV0ZSBGbG9hdDMyQXJyYXkgdHlwZWRBcnJheUF0dHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDg2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJ
blNwZWNpZmljV29ybGQoSlNDOjpFeGVjU3RhdGUqKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiAjZW5k
aWYKQEAgLTE2MCw2ICsxNjEsOCBAQCB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCAxLCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwog
I2VuZGlmCisgICAgaWYgKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNwZWNpZmljV29ybGQoKSkK
KyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZtLnByb3BlcnR5TmFt
ZXMtPmVuYWJsZWRJblNwZWNpZmljV29ybGQsIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0Zv
clN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVy
ZUVuYWJsZWQoKSkKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
LnRlc3RQcml2YXRlRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwpAQCAtNDUyLDYgKzQ1NSwyNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhCiB9CiAjZW5kaWYKIAorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0
R2xvYmFsT2JqZWN0KiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29ybGQoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVyPihzdGF0ZSwgImVuYWJsZWRJ
blNwZWNpZmljV29ybGQiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxk
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdGVzdFBh
cmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW1wbC5lbmFi
bGVkSW5TcGVjaWZpY1dvcmxkKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U1Rlc3RHbG9iYWxPYmplY3QqLCBKU0M6OlRocm93U2NvcGUmKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJ
KHJldmlzaW9uIDIwODY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDAsNiArOTQwLDcgQEAgdGVt
cGxhdGU8PiBUZXN0T2JqOjpDb25kaXRpb25hbERpY3Rpb25hcgogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiAj
ZW5kaWYKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRN
ZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTU0Nyw2ICsxNTQ4
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogI2Vsc2UKICAg
ICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCisgICAgeyAid29ybGRT
cGVjaWZpY01ldGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3Js
ZFNwZWNpZmljTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZvaWRNZXRob2Qi
LCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCksIChpbnRw
dHJfdCkgKDApIH0gfSwKICAgICB7ICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCBKU0M6OkZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KSAo
MykgfSB9LAogICAgIHsgImJ5dGVNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZCksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTE3MjgsNiArMTcz
MCwxMSBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oCiAgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpLCBwcm9wZXJ0eU5hbWUpOwogICAgIH0KICNlbmRpZgorICAgIGlmICghd29ybGRGb3JET01P
YmplY3QodGhpcykuc29tZVdvcmxkKCkpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJ3b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZpY01ldGhv
ZCIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJv
cGVydHlOYW1lKTsKKyAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50
aW1lQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpKTsKQEAg
LTQ3MTQsNiArNDcyMSwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiB9CiAjZW5kaWYKIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZENhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhv
ZChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9i
aj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmlj
TWV0aG9kQ2FsbGVyPihzdGF0ZSwgIndvcmxkU3BlY2lmaWNNZXRob2QiKTsKK30KKworc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29y
bGRTcGVjaWZpY01ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRv
IHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGlt
cGwud29ybGRTcGVjaWZpY01ldGhvZChXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2QoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJl
dmlzaW9uIDIwODY2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAi
Q29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5oIgogI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxlLmgiCiAjaW5jbHVkZSAiQ3J5cHRv
LmgiCkBAIC04OCw4ICs4OSwxMCBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCisj
aW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRl
ICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC02MzEsNiArNjM0LDMzIEBAIEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeSYgRE9NV2luZG93OjplbnN1cmUKICAgICByZXR1cm4gKm1fY3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OwogfQogCitFeGNlcHRpb25PcjxSZWY8Tm9kZUxpc3Q+PiBET01XaW5kb3c6OndlYmtp
dENvbGxlY3RNYXRjaGluZ0VsZW1lbnRzQWNyb3NzU2hhZG93Qm91bmRhcmllcyhOb2RlJiBzY29w
ZSwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKworICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisKKyAgICBhdXRv
IHF1ZXJ5T3JFeGNlcHRpb24gPSBkb2N1bWVudC0+c2VsZWN0b3JRdWVyeUZvclN0cmluZyhzZWxl
Y3RvcnMpOworICAgIGlmIChxdWVyeU9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gcXVlcnlPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBpZiAo
IWlzPENvbnRhaW5lck5vZGU+KHNjb3BlKSkKKyAgICAgICAgcmV0dXJuIFJlZjxOb2RlTGlzdD4g
eyBTdGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlKCkgfTsKKworICAgIFNlbGVjdG9yUXVlcnkmIHF1
ZXJ5ID0gcXVlcnlPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIFZlY3Rv
cjxSZWY8RWxlbWVudD4+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBjb21wb3NlZFRy
ZWVEZXNjZW5kYW50cyhkb3duY2FzdDxDb250YWluZXJOb2RlPihzY29wZSkpKSB7CisgICAgICAg
IGlmIChpczxFbGVtZW50Pihub2RlKSAmJiBxdWVyeS5tYXRjaGVzKGRvd25jYXN0PEVsZW1lbnQ+
KG5vZGUpKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZG93bmNhc3Q8RWxlbWVudD4obm9k
ZSkpOworICAgIH0KKworICAgIHJldHVybiBSZWY8Tm9kZUxpc3Q+IHsgU3RhdGljRWxlbWVudExp
c3Q6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpIH07Cit9CisKICNpZiBFTkFCTEUoT1JJRU5UQVRJ
T05fRVZFTlRTKQogCiBpbnQgRE9NV2luZG93OjpvcmllbnRhdGlvbigpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDIwODY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgY2xhc3Mg
TWVzc2FnZUV2ZW50OwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBOYXZpZ2F0b3I7CiBjbGFz
cyBOb2RlOworY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZUNvbnNvbGVD
bGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZTsKQEAgLTI5NSw2ICsyOTYsOCBAQCBwdWJsaWM6CiAg
ICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KiBjdXN0b21FbGVtZW50UmVnaXN0cnkoKSB7IHJldHVy
biBtX2N1c3RvbUVsZW1lbnRSZWdpc3RyeS5nZXQoKTsgfQogICAgIEN1c3RvbUVsZW1lbnRSZWdp
c3RyeSYgZW5zdXJlQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAKKyAgICBFeGNlcHRpb25PcjxS
ZWY8Tm9kZUxpc3Q+PiB3ZWJraXRDb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0Fjcm9zc1NoYWRvd0Jv
dW5kYXJpZXMoTm9kZSYsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzKTsKKwogI2lmIEVOQUJMRShP
UklFTlRBVElPTl9FVkVOVFMpCiAgICAgLy8gVGhpcyBpcyB0aGUgaW50ZXJmYWNlIG9yaWVudGF0
aW9uIGluIGRlZ3JlZXMuIFNvbWUgZXhhbXBsZXMgYXJlOgogICAgIC8vICAwIGlzIHN0cmFpZ2h0
IHVwOyAtOTAgaXMgd2hlbiB0aGUgZGV2aWNlIGlzIHJvdGF0ZWQgOTAgY2xvY2t3aXNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjA4NjY3KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTcz
LDkgQEAKIAogICAgIFtFbmFibGVkQXRSdW50aW1lPUN1c3RvbUVsZW1lbnRzLCBJbXBsZW1lbnRl
ZEFzPWVuc3VyZUN1c3RvbUVsZW1lbnRSZWdpc3RyeV0gcmVhZG9ubHkgYXR0cmlidXRlIEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeSBjdXN0b21FbGVtZW50czsKIAorICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgRW5hYmxlZEZvcldvcmxkPXNoYWRvd1Jvb3RJc0Fsd2F5c09wZW5dCisgICAgTm9kZUxpc3Qg
d2Via2l0Q29sbGVjdE1hdGNoaW5nRWxlbWVudHNBY3Jvc3NTaGFkb3dCb3VuZGFyaWVzKE5vZGUg
c2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworCiAgICAgLy8gRXZlbnQgaGFuZGxlcnMgdW5p
cXVlIHRvIEVsZW1lbnQgYW5kIERPTVdpbmRvdy4KICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZXNl
IGJlIGV4cG9zZWQgb24gRG9jdW1lbnQgYXMgd2VsbCAoYW5kIHRoZXJlZm9yZSBtb3ZlZCB0byBH
bG9iYWxFdmVudEhhbmRsZXJzLmlkbCk/CiAgICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25hbmltYXRpb25lbmQ7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDg4MzUpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0xMS0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFs
IEFQSSB0byBmaW5kIGVsZW1lbnRzIGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODUxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yODIyMDA5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IGNhc2VzIGZvciB3aW5kb3cud2Via2l0Q29sbGVj
dE1hdGNoaW5nRWxlbWVudHNBY3Jvc3NTaGFkb3dCb3VuZGFyaWVzIHRvCisgICAgICAgIFdlYktp
dDIuSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW4uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hh
ZG93Um9vdE9wZW5fQnVuZGxlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVk
QnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuVGVzdDo6aW5pdGlhbGl6ZSk6IEFkZGVkIHRlc3Qg
Y2FzZXMgZm9yCisgICAgICAgIHdlYmtpdENvbGxlY3RNYXRjaGluZ0VsZW1lbnRzQWNyb3NzU2hh
ZG93Qm91bmRhcmllcyBieSBjYWxsaW5nIGFsZXJ0KCkgbWFueSB0aW1lcy4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9v
dHNPcGVuLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRBbGVydCk6
IEFkZGVkIGV4cGVjdGF0aW9ucyBmb3IgbXVsdGlwbGUgdGVzdCBjYXNlcy4gRWFjaCB0ZXN0IGNh
c2UKKyAgICAgICAgZmluaXNoZXMgd2l0aCBhIGNhbGwgdG8gYWxlcnQsIGFuZCBtb3ZlcyB0ZXN0
TnVtYmVyIGZvcndhcmQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIHRoZSBu
ZXdseSBhZGRlZCBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL2Nsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWw6IEFkZGVk
LiBDcmVhdGVzIGEgc2hhZG93IHRyZWUgd2l0aCBzbG90cworICAgICAgICBhbmQgdGVzdHMgdGhh
dCB3aW5kb3cud2Via2l0Q29sbGVjdE1hdGNoaW5nRWxlbWVudHNBY3Jvc3NTaGFkb3dCb3VuZGFy
aWVzIGlzIG5vdCBwcmVzZW50IHdoZW4KKyAgICAgICAgYW4gZXZlbnQgbmFtZWQgInRlc3Rub3Jt
YWx3b3JsZCIgaXMgZGlzcGF0Y2hlZCBieSB0aGUgaW5qZWN0ZWQgYnVuZGxlLgorCiAyMDE2LTEx
LTE2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyMDg0NTUpOiBMYXlvdXRUZXN0cyBzd2lwZS9wdXNoU3RhdGUtY2FjaGVkLWJhY2st
c3dpcGUuaHRtbCBhbmQgc3dpcGUvbWFpbi1mcmFtZS1waW5uaW5nLXJlcXVpcmVtZW50Lmh0bWwg
YXJlIGZhaWxpbmcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDg2Njcp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDM1LDYgKzQzNSw3IEBACiAJCTk5ODRGQUNFMUNG
RkIwOTAwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0QxQ0ZGQjAzODAwOEQxOThD
IC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLzsgfTsKIAkJOUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUz
IC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMz
MDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVuZGxlLmNw
cCAqLzsgfTsKIAkJOUIyNkZDQ0ExNTlEMTZERTAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlv
bk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rp
b25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKKwkJOUIyNzBGRUUxRERDMkMwQjAwMkQ1M0YzIC8qIGNs
b3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNzBGRUQxRERDMjVGRDAwMkQ1M0YzIC8qIGNsb3Nl
ZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgKi87IH07CiAJCTlCNEY4RkE3MTU5RDUyREQwMDJEOUY5
NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNEY4RkE2MTU5RDUyQ0EwMDJEOUY5NCAv
KiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovOyB9OwogCQk5QzY0REMzMjFENzYxOThB
MDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlDNjREQzMxMUQ3NjE5OEEwMDRCNTk4RSAv
KiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovOyB9OwogCQlBMTE0NkE4RDFEMkQ3MTE1
MDAwRkU3MTAgLyogQ29udGVudEZpbHRlcmluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ2QThBMUQyRDcwNEYwMDBGRTcxMCAvKiBDb250ZW50
RmlsdGVyaW5nLm1tICovOyB9OwpAQCAtNTc4LDYgKzU3OSw3IEBACiAJCQlkc3RQYXRoID0gVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVz
ID0gKAorCQkJCTlCMjcwRkVFMUREQzJDMEIwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUt
dGVzdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0QzJBQjIyMURENkQ5NUUwMEUw
NkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJODM0OUQzQzQxREI5NzI4RTAwNEE5RjY1IC8qIGxpbmstd2l0aC1kb3dubG9hZC1h
dHRyaWJ1dGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlBRDU3QUMyMjFEQTc0NjZF
MDBGRjFCREUgLyogbWFueS1pZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0x
MDc5LDYgKzEwODEsNyBAQAogCQk5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRC
dW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuX0J1
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMjZGQzZCMTU5RDA2MTAw
MENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAv
KiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5QjI3MEZFRDFEREMyNUZEMDAyRDUzRjMgLyogY2xvc2VkLXNoYWRvdy10
cmVlLXRlc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjbG9zZWQtc2hhZG93
LXRyZWUtdGVzdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0RjhGQTMx
NTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNEY4RkE2MTU5RDUyQ0EwMDJEOUY5NCAv
KiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUI3OTE2NEYxQkQ4OUQwRDAwRDUwQjhGIC8qIEZpcnN0UmVzcG9uZGVyU2Nyb2xsaW5n
UG9zaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaXJz
dFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTg2Nyw2ICsxODcwLDcgQEAKIAkJCQk3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyog
YXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLywKIAkJCQk3QzQ4NkJBMDFBQTEyNTRCMDAzRjZG
OUIgLyogYnVuZGxlLWZpbGUuaHRtbCAqLywKIAkJCQkxQTUwQUExRjFBMkE0RUE1MDBGNEMzNDUg
LyogY2xvc2UtZnJvbS13aXRoaW4tY3JlYXRlLXBhZ2UuaHRtbCAqLywKKwkJCQk5QjI3MEZFRDFE
REMyNUZEMDAyRDUzRjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCAqLywKIAkJCQky
OTBGNDI3NDE3MkExRkRFMDA5MzlGRjAgLyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwg
Ki8sCiAJCQkJQzVFMUFGRkQxNkIyMjE3OTAwNkNDMUYyIC8qIGV4ZWNDb3B5Lmh0bWwgKi8sCiAJ
CQkJQkMyRDAwNEExMkE5RkVCMzAwRTczMkEzIC8qIGZpbGUtd2l0aC1hbmNob3IuaHRtbCAqLywK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1h
a2VBbGxTaGFkb3dSb290T3Blbl9CdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290T3Bl
bl9CdW5kbGUuY3BwCShyZXZpc2lvbiAyMDg2NjcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVuZGxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsMjcgQEAgcHVibGljOgogICAgICAgICBXS0J1
bmRsZVNjcmlwdFdvcmxkTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbih3b3JsZCk7CiAKICAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygKLSAgICAgICAgICAgICJ2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOyIKLSAgICAgICAgICAgICJlbGVtZW50LmF0dGFjaFNoYWRvdyh7bW9k
ZTogJ2Nsb3NlZCd9KTsiCi0gICAgICAgICAgICAiYWxlcnQoZWxlbWVudC5zaGFkb3dSb290ID8g
J1BBU1MnIDogJ0ZBSUwnKTsiKSk7CisgICAgICAgICAgICAid2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uICgpIHtcbiIKKyAgICAgICAgICAgICIgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpO1xuIgorICAgICAgICAgICAgIiAgICBjb25zdCBxdWVyeU1ldGhv
ZE5hbWUgPSAnd2Via2l0Q29sbGVjdE1hdGNoaW5nRWxlbWVudHNBY3Jvc3NTaGFkb3dCb3VuZGFy
aWVzJztcbiIKKyAgICAgICAgICAgICIgICAgZWxlbWVudC5hdHRhY2hTaGFkb3coe21vZGU6ICdj
bG9zZWQnfSk7XG4iCisgICAgICAgICAgICAvLyBUZXN0IDEKKyAgICAgICAgICAgICIgICAgYWxl
cnQoZWxlbWVudC5zaGFkb3dSb290ID8gJ1BBU1M6IHNoYWRvd1Jvb3QgY3JlYXRlZCBpbiBpbmpl
Y3RlZCBidW5kbGUnIDogJ0ZBSUwnKTtcbiIKKyAgICAgICAgICAgIC8vIFRlc3QgMgorICAgICAg
ICAgICAgIiAgICBhbGVydChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzaGFkb3ctaG9zdCcpLnNo
YWRvd1Jvb3QgPyAnUEFTUzogc2hhZG93Um9vdCBjcmVhdGVkIGJ5IG5vcm1hbCB3b3JsZCcgOiAn
RkFJTCcpO1xuIgorICAgICAgICAgICAgLy8gVGVzdCAzCisgICAgICAgICAgICAiICAgIGFsZXJ0
KHdpbmRvd1txdWVyeU1ldGhvZE5hbWVdID8gJ1BBU1M6IHF1ZXJ5IG1ldGhvZCBleGlzdHMnIDog
J0ZBSUwnKTtcbiIKKyAgICAgICAgICAgIC8vIFRlc3QgNAorICAgICAgICAgICAgIiAgICBkb2N1
bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgndGVzdG5vcm1hbHdvcmxkJykpO1xuIgorICAg
ICAgICAgICAgLy8gVGVzdCA1CisgICAgICAgICAgICAiICAgIGNvbnN0IHF1ZXJ5TWV0aG9kID0g
d2luZG93W3F1ZXJ5TWV0aG9kTmFtZV07XG4iCisgICAgICAgICAgICAiICAgIGxldCBxdWVyeVJl
c3VsdCA9IEFycmF5LmZyb20ocXVlcnlNZXRob2QoZG9jdW1lbnQsICdzcGFuJykpO1xuIgorICAg
ICAgICAgICAgIiAgICBhbGVydCgnRm91bmQ6JyArIHF1ZXJ5UmVzdWx0Lm1hcCgoc3BhbikgPT4g
c3Bhbi50ZXh0Q29udGVudCkuam9pbignLCcpKTtcbiIKKyAgICAgICAgICAgIC8vIFRlc3QgNgor
ICAgICAgICAgICAgIiAgICBjb25zdCBpbm5lckhvc3QgPSBxdWVyeU1ldGhvZChkb2N1bWVudCwg
J2lubmVyLWhvc3QnKVswXTtcbiIKKyAgICAgICAgICAgICIgICAgcXVlcnlSZXN1bHQgPSBBcnJh
eS5mcm9tKHF1ZXJ5TWV0aG9kKGlubmVySG9zdCwgJ3NwYW4nKSk7XG4iCisgICAgICAgICAgICAi
ICAgIGFsZXJ0KCdGb3VuZDonICsgcXVlcnlSZXN1bHQubWFwKChzcGFuKSA9PiBzcGFuLnRleHRD
b250ZW50KS5qb2luKCcsJykpO1xuIgorICAgICAgICAgICAgIn1cbiIpKTsKICAgICAgICAgV0tC
dW5kbGVBZGRVc2VyU2NyaXB0KGJ1bmRsZSwgcGFnZUdyb3VwLCB3b3JsZCwgc291cmNlLmdldCgp
LCAwLCAwLCAwLCBrV0tJbmplY3RBdERvY3VtZW50U3RhcnQsIGtXS0luamVjdEluQWxsRnJhbWVz
KTsKICAgICB9CiB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0lu
amVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RzT3Blbi5jcHAJKHJldmlzaW9uIDIwODY2NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAorc3RhdGljIHVuc2lnbmVkIHRlc3ROdW1iZXIgPSAwOwogc3RhdGljIGJvb2wgZG9uZTsK
IAogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CkBAIC00MSw5ICs0MiwyNyBAQCBzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdl
UmVmCiAgICAgQVNTRVJUX05PVF9OVUxMKGZyYW1lKTsKIAogICAgIEVYUEVDVF9FUShwYWdlLCBX
S0ZyYW1lR2V0UGFnZShmcmFtZSkpOwotICAgIEVYUEVDVF9XS19TVFJFUSgiUEFTUyIsIGFsZXJ0
VGV4dCk7Ci0KLSAgICBkb25lID0gdHJ1ZTsKKyAgICBzd2l0Y2ggKCsrdGVzdE51bWJlcikgewor
ICAgIGNhc2UgMToKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJQQVNTOiBzaGFkb3dSb290IGNy
ZWF0ZWQgaW4gaW5qZWN0ZWQgYnVuZGxlIiwgYWxlcnRUZXh0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAyOgorICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIlBBU1M6IHNoYWRvd1Jvb3QgY3Jl
YXRlZCBieSBub3JtYWwgd29ybGQiLCBhbGVydFRleHQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIDM6CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiUEFTUzogcXVlcnkgbWV0aG9kIGV4aXN0
cyIsIGFsZXJ0VGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJQQVNTOiBxdWVyeSBtZXRob2Qgd2FzIG5vdCBwcmVzZW50IGluIHRoZSBu
b3JtYWwgd29ybGQiLCBhbGVydFRleHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDU6Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUSgiRm91bmQ6MSwyLDMsNCw1LDYiLCBhbGVydFRleHQpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDY6CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiRm91
bmQ6MiwzLDQiLCBhbGVydFRleHQpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogfQogCiBURVNUKFdlYktpdDIsIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RPcGVuVGVzdCkKQEAgLTYxLDcgKzgwLDcgQEAgVEVTVChXZWJLaXQyLCBJbmplY3RlZEJ1
bmRsZU1ha2VBbGxTaGFkbwogCiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHdlYlZpZXcucGFn
ZSgpLCAmdWlDbGllbnQuYmFzZSk7CiAKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFk
b3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJl
c291cmNlKCJjbG9zZWQtc2hhZG93LXRyZWUtdGVzdCIsICJodG1sIikpOwogICAgIFdLUGFnZUxv
YWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CiAKICAgICBVdGlsOjpydW4oJmRvbmUp
OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Nsb3NlZC1zaGFkb3ct
dHJlZS10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL2Nsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Nsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPHNoYWRvdy1ob3N0PjxzcGFuPjU8L3NwYW4+PHNwYW4gc2xvdD0iYmFyIj4y
PC9zcGFuPjwvc2hhZG93LWhvc3Q+Cis8c2NyaXB0PgorY29uc3Qgc2hhZG93Um9vdCA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ3NoYWRvdy1ob3N0JykuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xv
c2VkJ30pOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSBgCisgICAgPHNwYW4+MTwvc3Bhbj4KKyAg
ICA8aW5uZXItaG9zdD4KKyAgICAgICAgPHNsb3QgbmFtZT0iYmFyIiBzbG90PSJmb28iPjxzcGFu
PkZBSUwgLSBuYW1lZCBzbG90IGZhbGxiYWNrPC9zcGFuPjwvc2xvdD4KKyAgICAgICAgPHNwYW4+
RkFJTCAtIHVuYXNzaWduZWQgY29udGVudDwvc3Bhbj4KKyAgICAgICAgPHNwYW4gc2xvdD0iZm9v
Ij4zPC9zcGFuPgorICAgIDwvaW5uZXItaG9zdD4KKyAgICA8c2xvdD48c3Bhbj5GQUlMIC0gZGVm
YXVsdCBzbG90IGZhbGxiYWNrPC9zcGFuPjwvc2xvdD4KKyAgICA8c3Bhbj42PC9zcGFuPmA7Citj
b25zdCBpbm5lckhvc3QgPSBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2lubmVyLWhvc3QnKTsK
K2lubmVySG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSkuaW5uZXJIVE1MID0gYAor
ICAgIDxzbG90IG5hbWU9ImZvbyI+PC9zbG90PgorICAgIDxzcGFuPjQ8L3NwYW4+YDsKKworZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndGVzdG5vcm1hbHdvcmxkJywgZnVuY3Rpb24gKCkgewor
ICAgIGFsZXJ0KHdpbmRvdy53ZWJraXRDb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0Fjcm9zc1NoYWRv
d0JvdW5kYXJpZXMgPworICAgICAgICAnRkFJTCcgOiAnUEFTUzogcXVlcnkgbWV0aG9kIHdhcyBu
b3QgcHJlc2VudCBpbiB0aGUgbm9ybWFsIHdvcmxkJyk7Cit9KTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295025</attachid>
            <date>2016-11-16 21:37:37 -0800</date>
            <delta_ts>2016-11-17 20:15:09 -0800</delta_ts>
            <desc>Fixed build</desc>
            <filename>bug-164851-20161116213733.patch</filename>
            <type>text/plain</type>
            <size>34237</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4ODM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE2LTExLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBhbiBleHBlcmltZW50YWwgQVBJIHRvIGZpbmQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBi
b3VuZGFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQ4NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MjIwMDkyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorCiAyMDE2LTExLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBFeGNlcHRpb25GdXp6IG5lZWRzIHRvIHBsYWNhdGUgZXhjZXB0aW9uIGNoZWNr
IHZlcmlmaWNhdGlvbiBiZWZvcmUgb3ZlcndyaXRpbmcgYSB0aHJvd24gZXhjZXB0aW9uLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCShyZXZpc2lvbiAyMDg4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDcgQEAKICAg
ICBtYWNybyh2YWx1ZSkgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3ZWJraXQp
IFwKKyAgICBtYWNybyh3ZWJraXRDb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0Fjcm9zc1NoYWRvd0Jv
dW5kYXJpZXMpIFwKICAgICBtYWNybyh3ZWJraXRJREJDdXJzb3IpIFwKICAgICBtYWNybyh3ZWJr
aXRJREJEYXRhYmFzZSkgXAogICAgIG1hY3JvKHdlYmtpdElEQkZhY3RvcnkpIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwODgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTE2ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgQVBJIHRvIGZp
bmQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBib3VuZGFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI4MjIwMDkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB3aW5kb3cud2Via2l0Q29sbGVjdE1hdGNoaW5nRWxlbWVudHNBY3Jvc3NTaGFk
b3dCb3VuZGFyaWVzKE5vZGUgbm9kZSwgRE9NU3RyaW5nIHNlbGVjdG9ycykKKyAgICAgICAgYXMg
YW4gZXhwZXJpbWVudGFsIEFQSSB3aGljaCBmaW5kcyBhIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCBt
YXRjaGVzIHRoZSBnaXZlbiBDU1Mgc2VsZWN0b3JzCisgICAgICAgIGFuZCBleHBvc2UgaXQgdG8g
YSBKU1dvcmxkIG9uIHdoaWNoIFdLQnVuZGxlU2NyaXB0V29ybGRNYWtlQWxsU2hhZG93Um9vdHNP
cGVuIHdhcyBjYWxsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBNb3JlIHRlc3QgY2FzZXMg
YXJlIGFkZGVkIHRvIFdlYktpdDIuSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVu
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChOZWVkc1J1bnRpbWVDaGVjayk6IEFkZGVkLiBBYnN0cmFjdHMgY2hlY2tzIGZvciBFbmFi
bGVkQXRSdW50aW1lIGFuZCBFbmFibGVkRm9yV29ybGQuCisgICAgICAgIChPcGVyYXRpb25TaG91
bGRCZU9uSW5zdGFuY2UpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToK
KyAgICAgICAgKEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUpOiBVc2Ugd29ybGRGb3JET01P
YmplY3QodGhpcykuY29uZGl0aW9uKCkgZm9yIEVuYWJsZWRGb3JXb3JsZC4KKyAgICAgICAgQWxz
byBzcGxpdCB0aGUgbGluZSBmb3IgRW5hYmxlZEF0UnVudGltZSBhbmQgRW5hYmxlZEF0UnVudGlt
ZSBmb3IgYSBiZXR0ZXIgcmVhZGFiaWxpdHkuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0
aW9uKToKKyAgICAgICAgKGFkZEl0ZXJhYmxlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JBdHRyaWJ1
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZENhbGxlcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lm
aWNNZXRob2RDYWxsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xv
YmFsT2JqZWN0LmlkbDogQWRkZWQgYSB0ZXN0IGNhc2UuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndlYmtpdENvbGxlY3RNYXRjaGluZ0Vs
ZW1lbnRzQWNyb3NzU2hhZG93Qm91bmRhcmllcyk6IEFkZGVkLiBJbXBsZW1lbnRzCisgICAgICAg
IHRoZSBmZWF0dXJlIGJ5IGNhbGxpbmcgU2VsZWN0b3JRdWVyeSdzIG1hdGNoZXMgb24gYSBub2Rl
IHlpZWxkZWQgYnkgQ29tcG9zZWRUcmVlSXRlcmF0b3IuCisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMTYtMTEtMTYgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGJ1aWxkIG9uIG1hY09T
IFNpZXJyYSB3aGVuIFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSIGlzIGVuYWJsZWQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyMDg4MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNjkzLDYgKzY5MywxMyBA
QCBzdWIgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1
YiBOZWVkc1J1bnRpbWVDaGVjaworeworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBy
ZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0K
KyAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEZvcldv
cmxkfTsKK30KKwogIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1vcGVyYXRp
b25zCiBzdWIgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlCiB7CkBAIC03MDIsNyArNzA5LDcg
QEAgc3ViIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZQogICAgIHJldHVybiAxIGlmIElzR2xv
YmFsT3JQcmltYXJ5R2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogCiAgICAgIyBGSVhNRTog
VGhlIGJpbmRpbmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRpbmcgcnVudGltZS1l
bmFibGVkIG9wZXJhdGlvbnMgb24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0IGZvciBnbG9iYWwg
b2JqZWN0cykuCi0gICAgcmV0dXJuIDAgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntFbmFibGVkQXRSdW50aW1lfTsKKyAgICByZXR1cm4gMCBpZiBOZWVkc1J1bnRpbWVDaGVjaygk
ZnVuY3Rpb24pOwogCiAgICAgIyBbVW5mb3JnZWFibGVdIG9wZXJhdGlvbnMgc2hvdWxkIGJlIG9u
IHRoZSBpbnN0YW5jZS4gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFi
bGUKICAgICByZXR1cm4gMSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7
CkBAIC0xODc5LDcgKzE4ODYsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAg
ICAgICAgIG5leHQgaWYgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpICE9ICRpc0luc3RhbmNlOwogCiAgICAgICAgICMgR2xvYmFsIG9iamVjdHMgYWRk
IFJ1bnRpbWVFbmFibGVkIGF0dHJpYnV0ZXMgYWZ0ZXIgY3JlYXRpb24gc28gZG8gbm90IGFkZCB0
aGVtIHRvIHRoZSBzdGF0aWMgdGFibGUuCi0gICAgICAgIGlmICgkaXNJbnN0YW5jZSAmJiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgeworICAgICAg
ICBpZiAoJGlzSW5zdGFuY2UgJiYgTmVlZHNSdW50aW1lQ2hlY2soJGF0dHJpYnV0ZSkpIHsKICAg
ICAgICAgICAgICRwcm9wZXJ0eUNvdW50IC09IDE7CiAgICAgICAgICAgICBuZXh0OwogICAgICAg
ICB9CkBAIC0xOTA4LDcgKzE5MTUsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxl
CiAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbmRpdGlvbmFsfTsKICAgICAgICAgJGNvbmRpdGlvbmFscy0+eyRuYW1lfSA9ICRjb25k
aXRpb25hbCBpZiAkY29uZGl0aW9uYWw7CiAKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmIChOZWVkc1J1
bnRpbWVDaGVjaygkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgcHVzaChAJHJ1bnRpbWVFbmFi
bGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTI0LDcg
KzE5MzEsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIG5leHQg
aWYgJGZ1bmN0aW9uLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKICAgICAgICAgIyBH
bG9iYWwgb2JqZWN0cyBhZGQgUnVudGltZUVuYWJsZWQgb3BlcmF0aW9ucyBhZnRlciBjcmVhdGlv
biBzbyBkbyBub3QgYWRkIHRoZW0gdG8gdGhlIHN0YXRpYyB0YWJsZS4KLSAgICAgICAgaWYgKCRp
c0luc3RhbmNlICYmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVu
dGltZX0pIHsKKyAgICAgICAgaWYgKCRpc0luc3RhbmNlICYmIE5lZWRzUnVudGltZUNoZWNrKCRm
dW5jdGlvbikpIHsKICAgICAgICAgICAgICRwcm9wZXJ0eUNvdW50IC09IDE7CiAgICAgICAgICAg
ICBuZXh0OwogICAgICAgICB9CkBAIC0xOTUxLDcgKzE5NTgsNyBAQCBzdWIgR2VuZXJhdGVQcm9w
ZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIG15ICRjb25kaXRpb25hbCA9IGdldENvbmRpdGlvbmFs
Rm9yRnVuY3Rpb25Db25zaWRlcmluZ092ZXJsb2FkcygkZnVuY3Rpb24pOwogICAgICAgICAkY29u
ZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAotICAg
ICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1l
fSkgeworICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9uKSkgewogICAgICAg
ICAgICAgcHVzaChAJHJ1bnRpbWVFbmFibGVkRnVuY3Rpb25zLCAkZnVuY3Rpb24pOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjUxNyw4ICsyNTI0LDE2IEBAIHN1YiBHZXRSdW50aW1lRW5hYmxlRnVu
Y3Rpb25OYW1lCiB7CiAgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKIAorICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsKKyAgICAKKyAgICBpZiAoJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRGb3JXb3JsZH0pIHsKKyAgICAgICAgcmV0
dXJuICJ3b3JsZEZvckRPTU9iamVjdCh0aGlzKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9KTsKKyAgICB9CisKICAgICAjIElm
IGEgcGFyYW1ldGVyIGlzIGdpdmVuIChlLmcuICJFbmFibGVkQXRSdW50aW1lPUZlYXR1cmVOYW1l
IikgcmV0dXJuIHRoZSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLntG
ZWF0dXJlTmFtZX1FbmFibGVkKCkgbWV0aG9kLgotICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgLiAiRW5hYmxlZCIgaWYgKCRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSAmJiAkY29udGV4dC0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0gbmUgIlZBTFVFX0lTX01JU1NJ
TkciKTsKKyAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1
bnRpbWV9ICYmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1l
fSBuZSAiVkFMVUVfSVNfTUlTU0lORyIpIHsKKyAgICAgICAgcmV0dXJuICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBUb01ldGhvZE5hbWUoJGNvbnRleHQtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSAuICJFbmFibGVkIjsKKyAgICB9
CiAKICAgICAjIE90aGVyd2lzZSByZXR1cm4gYSBmdW5jdGlvbiBuYW1lZCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnttZXRob2ROYW1lfUVuYWJsZWQoKS4KICAgICBy
ZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuIiAuIFRvTWV0
aG9kTmFtZSgkY29udGV4dC0+bmFtZSkgLiAiRW5hYmxlZCI7CkBAIC0zMDA4LDEwICszMDIzLDkg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICMgU3VwcG9ydCBmb3IgUnVudGlt
ZUVuYWJsZWQgYXR0cmlidXRlcyBvbiBpbnN0YW5jZXMuCiAgICAgZm9yZWFjaCBteSAkYXR0cmli
dXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgIG5leHQgdW5sZXNzICRh
dHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9OworICAgICAg
ICBuZXh0IHVubGVzcyBOZWVkc1J1bnRpbWVDaGVjaygkYXR0cmlidXRlKTsKICAgICAgICAgbmV4
dCB1bmxlc3MgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogCi0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiKTsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rp
b25OYW1lKCRhdHRyaWJ1dGUpOwpAQCAtMzA0MywxMSArMzA1NywxMCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogCiAgICAgIyBTdXBwb3J0IGZvciBSdW50aW1lRW5hYmxlZCBvcGVyYXRp
b25zIG9uIGluc3RhbmNlcy4KICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNl
LT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX07CisgICAgICAgIG5leHQgdW5sZXNzIE5lZWRz
UnVudGltZUNoZWNrKCRmdW5jdGlvbik7CiAgICAgICAgIG5leHQgdW5sZXNzIE9wZXJhdGlvblNo
b3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogICAgICAgICBuZXh0IGlm
ICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9
ID4gMTsKIAotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIik7CiAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rp
b25OYW1lKCRmdW5jdGlvbik7CkBAIC01MDUyLDggKzUwNjUsNyBAQCBzdWIgYWRkSXRlcmFibGVQ
cm9wZXJ0aWVzKCkKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgbXkgJGNsYXNzTmFt
ZSA9IHNoaWZ0OwogCi0gICAgaWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIik7CisgICAgaWYgKE5lZWRzUnVudGltZUNoZWNrKCRp
bnRlcmZhY2UtPml0ZXJhYmxlKSkgewogICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0
UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLT5pdGVyYWJsZSk7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZV9mdW5jdGlvbn0oKSlcbiAgICAi
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy50eHQJKHJldmlzaW9uIDIwODgzNikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDcgQEAgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXIKIERvY3VtZW50RXZlbnRIYW5kbGVy
CiBFbmFibGVkQXRSdW50aW1lPSoKIEVuYWJsZWRCeVNldHRpbmc9KgorRW5hYmxlZEZvcldvcmxk
PSoKIEVuZm9yY2VSYW5nZQogRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlR8V0VCQ09SRV9URVNU
U1VQUE9SVF9FWFBPUlQKIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkocmV2aXNp
b24gMjA4ODM2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNz
LWlkbHMucGwJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckF0dHJpYnV0ZQogICAgIG15ICRjb2RlID0gIiAgICAiOwogICAgIG15IEBleHRl
bmRlZEF0dHJpYnV0ZXNMaXN0OwogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZU5hbWUgKHNvcnQg
a2V5cyAleyRleHRlbmRlZEF0dHJpYnV0ZXN9KSB7Ci0gICAgICBuZXh0IHVubGVzcyAoJGF0dHJp
YnV0ZU5hbWUgZXEgIkNvbmRpdGlvbmFsIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEF0
UnVudGltZSIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVNldHRpbmciIHx8ICRhdHRy
aWJ1dGVOYW1lIGVxICJQcml2YXRlSWRlbnRpZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlB1
YmxpY0lkZW50aWZpZXIiKTsKKyAgICAgIG5leHQgdW5sZXNzICgkYXR0cmlidXRlTmFtZSBlcSAi
Q29uZGl0aW9uYWwiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQXRSdW50aW1lIiB8fCAk
YXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEZvcldvcmxkIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAi
RW5hYmxlZEJ5U2V0dGluZyIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlByaXZhdGVJZGVudGlmaWVy
IiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGljSWRlbnRpZmllciIpOwogICAgICAgbXkgJGV4
dGVuZGVkQXR0cmlidXRlID0gJGF0dHJpYnV0ZU5hbWU7CiAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1
dGUgLj0gIj0iIC4gJGV4dGVuZGVkQXR0cmlidXRlcy0+eyRhdHRyaWJ1dGVOYW1lfSB1bmxlc3Mg
JGV4dGVuZGVkQXR0cmlidXRlcy0+eyRhdHRyaWJ1dGVOYW1lfSBlcSAiVkFMVUVfSVNfTUlTU0lO
RyI7CiAgICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZXNMaXN0LCAkZXh0ZW5kZWRBdHRyaWJ1
dGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9i
YWxPYmplY3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbAkocmV2aXNpb24gMjA4ODM2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9iYWxPYmplY3QuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVS
RSwgRW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uKERPTVN0cmluZyB0ZXN0UGFyYW0pOwogICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRV
UkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbihsb25nIHRlc3RQYXJhbSk7CiAKKyAgICBbRW5hYmxlZEZvcldvcmxkPXNwZWNpZmlj
V29ybGRdIHZvaWQgZW5hYmxlZEluU3BlY2lmaWNXb3JsZChsb25nIHRlc3RQYXJhbSk7CisKICAg
ICBbUHJpdmF0ZUlkZW50aWZpZXIsIENvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0
UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCB0ZXN0UHJpdmF0ZUZ1bmN0aW9uKCk7CiAgICAgW0pT
QnVpbHRpbiwgQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RG
ZWF0dXJlXSB2b2lkIHRlc3RKU0J1aWx0aW5GdW5jdGlvbigpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9u
IDIwODgzNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw4IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBF
bmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24oRE9NU3RyaW5nIHRlc3RQYXJhbSk7CiAgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwg
RW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uKGxvbmcgdGVzdFBhcmFtKTsKIAorICAgIFtFbmFibGVkRm9yV29ybGQ9c29tZVdvcmxkXSB2
b2lkIHdvcmxkU3BlY2lmaWNNZXRob2QobG9uZyB0ZXN0UGFyYW0pOworCiAgICAgLy8gVHlwZWRB
cnJheSBhdHRyaWJ1dGUKICAgICBhdHRyaWJ1dGUgRmxvYXQzMkFycmF5IHR5cGVkQXJyYXlBdHRy
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA4ODM2KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRp
ZgorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKEpTQzo6RXhlY1N0YXRlKik7CiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCkBAIC0xNTksNiArMTYwLDggQEAgdm9pZCBKU1Rlc3RH
bG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+ZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbiwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKEpTQzo6RnVuY3Rpb24pKTsKICNlbmRpZgorICAgIGlmICh3b3JsZEZvckRPTU9iamVjdCh0
aGlzKS5zcGVjaWZpY1dvcmxkKCkpCisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbmFibGVkSW5TcGVjaWZpY1dvcmxkLCAxLCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZCwgTm9J
bnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5idWlsdGluTmFtZXMoKS50ZXN0UHJpdmF0ZUZ1bmN0aW9uUHJpdmF0ZU5hbWUoKSwg
MCwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24s
IE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKQEAg
LTQ1MSw2ICs0NTQsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YQogfQogI2VuZGlmCiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZENhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdEdsb2JhbE9iamVjdCosIEpTQzo6VGhyb3dTY29wZSYpOwor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbE9wZXJhdGlvbjxq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZENh
bGxlcj4oc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
RW5hYmxlZEluU3BlY2lmaWNXb3JsZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVz
dEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
eworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6
Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworICAgIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZChXVEZNb3ZlKHRlc3RQYXJh
bSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKICNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0R2xvYmFsT2JqZWN0KiwgSlNDOjpUaHJvd1Njb3Bl
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyMDg4MzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTM4LDYgKzkzOCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9u
YXIKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEpTQzo6
RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0
aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlNDOjpFeGVjU3Rh
dGUqKTsKQEAgLTE1NDUsNiArMTU0Niw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RPYmpQcm8KICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwK
ICNlbmRpZgorICAgIHsgIndvcmxkU3BlY2lmaWNNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZCksIChpbnRwdHJfdCkgKDEpIH0g
fSwKICAgICB7ICJ2b2lkTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZvaWRNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidm9pZE1ldGhvZFdp
dGhBcmdzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RX
aXRoQXJncyksIChpbnRwdHJfdCkgKDMpIH0gfSwKICAgICB7ICJieXRlTWV0aG9kIiwgSlNDOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpLCAoaW50cHRyX3QpICgw
KSB9IH0sCkBAIC0xNzI2LDYgKzE3MjgsMTEgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKAogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CiAjZW5kaWYK
KyAgICBpZiAoIXdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNvbWVXb3JsZCgpKSB7CisgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRTcGVjaWZpY01ldGhvZCIpLCBzdHJs
ZW4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7CisgICAgfQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGUiKSk7CkBAIC00NzExLDYgKzQ3MTgsMjYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogfQogI2VuZGlmCiAKK3N0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNN
ZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUm
KTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldvcmxkU3BlY2lmaWNNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZENhbGxlcj4oc3RhdGUsICJ3b3JsZFNwZWNpZmlj
TWV0aG9kIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb246Ok5vcm1hbCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLndvcmxkU3BlY2lmaWNNZXRob2QoV1RGTW92ZSh0ZXN0
UGFyYW0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpU
aHJvd1Njb3BlJik7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMDg4MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJDU1NSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
Q29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVs
ZS5oIgogI2luY2x1ZGUgIkNyeXB0by5oIgpAQCAtODksOCArOTAsMTAgQEAKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5j
bHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC02MzIsNiAr
NjM1LDMzIEBAIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSYgRE9NV2luZG93OjplbnN1cmUKICAgICBy
ZXR1cm4gKm1fY3VzdG9tRWxlbWVudFJlZ2lzdHJ5OwogfQogCitFeGNlcHRpb25PcjxSZWY8Tm9k
ZUxpc3Q+PiBET01XaW5kb3c6OndlYmtpdENvbGxlY3RNYXRjaGluZ0VsZW1lbnRzQWNyb3NzU2hh
ZG93Qm91bmRhcmllcyhOb2RlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMpCit7Cisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRF
RF9FUlIgfTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQ
T1JURURfRVJSIH07CisKKyAgICBhdXRvIHF1ZXJ5T3JFeGNlcHRpb24gPSBkb2N1bWVudC0+c2Vs
ZWN0b3JRdWVyeUZvclN0cmluZyhzZWxlY3RvcnMpOworICAgIGlmIChxdWVyeU9yRXhjZXB0aW9u
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcXVlcnlPckV4Y2VwdGlvbi5yZWxlYXNl
RXhjZXB0aW9uKCk7CisKKyAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+KHNjb3BlKSkKKyAgICAg
ICAgcmV0dXJuIFJlZjxOb2RlTGlzdD4geyBTdGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlKCkgfTsK
KworICAgIFNlbGVjdG9yUXVlcnkmIHF1ZXJ5ID0gcXVlcnlPckV4Y2VwdGlvbi5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKKworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlc3VsdDsKKyAgICBmb3Ig
KGF1dG8mIG5vZGUgOiBjb21wb3NlZFRyZWVEZXNjZW5kYW50cyhkb3duY2FzdDxDb250YWluZXJO
b2RlPihzY29wZSkpKSB7CisgICAgICAgIGlmIChpczxFbGVtZW50Pihub2RlKSAmJiBxdWVyeS5t
YXRjaGVzKGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoZG93bmNhc3Q8RWxlbWVudD4obm9kZSkpOworICAgIH0KKworICAgIHJldHVybiBSZWY8Tm9k
ZUxpc3Q+IHsgU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpIH07Cit9
CisKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogCiBpbnQgRE9NV2luZG93Ojpvcmll
bnRhdGlvbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDIw
ODgzNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgTWVzc2FnZUV2ZW50OwogY2xhc3MgTWVzc2FnZVBvcnQ7
CiBjbGFzcyBOYXZpZ2F0b3I7CiBjbGFzcyBOb2RlOworY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUGFnZUNvbnNvbGVDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZTsKQEAgLTI5
NSw2ICsyOTYsOCBAQCBwdWJsaWM6CiAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KiBjdXN0b21F
bGVtZW50UmVnaXN0cnkoKSB7IHJldHVybiBtX2N1c3RvbUVsZW1lbnRSZWdpc3RyeS5nZXQoKTsg
fQogICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSYgZW5zdXJlQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
KCk7CiAKKyAgICBFeGNlcHRpb25PcjxSZWY8Tm9kZUxpc3Q+PiB3ZWJraXRDb2xsZWN0TWF0Y2hp
bmdFbGVtZW50c0Fjcm9zc1NoYWRvd0JvdW5kYXJpZXMoTm9kZSYsIGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3JzKTsKKwogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCiAgICAgLy8gVGhpcyBp
cyB0aGUgaW50ZXJmYWNlIG9yaWVudGF0aW9uIGluIGRlZ3JlZXMuIFNvbWUgZXhhbXBsZXMgYXJl
OgogICAgIC8vICAwIGlzIHN0cmFpZ2h0IHVwOyAtOTAgaXMgd2hlbiB0aGUgZGV2aWNlIGlzIHJv
dGF0ZWQgOTAgY2xvY2t3aXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2
aXNpb24gMjA4ODM2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDkgQEAKIAogICAgIFtFbmFibGVkQXRSdW50aW1lPUN1
c3RvbUVsZW1lbnRzLCBJbXBsZW1lbnRlZEFzPWVuc3VyZUN1c3RvbUVsZW1lbnRSZWdpc3RyeV0g
cmVhZG9ubHkgYXR0cmlidXRlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSBjdXN0b21FbGVtZW50czsK
IAorICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgRW5hYmxlZEZvcldvcmxkPXNoYWRvd1Jvb3RJc0Fs
d2F5c09wZW5dCisgICAgTm9kZUxpc3Qgd2Via2l0Q29sbGVjdE1hdGNoaW5nRWxlbWVudHNBY3Jv
c3NTaGFkb3dCb3VuZGFyaWVzKE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworCiAg
ICAgLy8gRXZlbnQgaGFuZGxlcnMgdW5pcXVlIHRvIEVsZW1lbnQgYW5kIERPTVdpbmRvdy4KICAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoZXNlIGJlIGV4cG9zZWQgb24gRG9jdW1lbnQgYXMgd2VsbCAo
YW5kIHRoZXJlZm9yZSBtb3ZlZCB0byBHbG9iYWxFdmVudEhhbmRsZXJzLmlkbCk/CiAgICAgW05v
dEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25hbmltYXRpb25lbmQ7CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMDg4MzYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NiBAQAorMjAxNi0xMS0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAg
ICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIEFQSSB0byBmaW5kIGVsZW1lbnRzIGFjcm9zcyBzaGFk
b3cgYm91bmRhcmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0ODUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODIyMDA5Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IGNhc2Vz
IGZvciB3aW5kb3cud2Via2l0Q29sbGVjdE1hdGNoaW5nRWxlbWVudHNBY3Jvc3NTaGFkb3dCb3Vu
ZGFyaWVzIHRvCisgICAgICAgIFdlYktpdDIuSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9v
dE9wZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
SW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVuZGxlLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuVGVzdDo6
aW5pdGlhbGl6ZSk6IEFkZGVkIHRlc3QgY2FzZXMgZm9yCisgICAgICAgIHdlYmtpdENvbGxlY3RN
YXRjaGluZ0VsZW1lbnRzQWNyb3NzU2hhZG93Qm91bmRhcmllcyBieSBjYWxsaW5nIGFsZXJ0KCkg
bWFueSB0aW1lcy4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0
ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnJ1bkphdmFTY3JpcHRBbGVydCk6IEFkZGVkIGV4cGVjdGF0aW9ucyBmb3IgbXVsdGlwbGUg
dGVzdCBjYXNlcy4gRWFjaCB0ZXN0IGNhc2UKKyAgICAgICAgZmluaXNoZXMgd2l0aCBhIGNhbGwg
dG8gYWxlcnQsIGFuZCBtb3ZlcyB0ZXN0TnVtYmVyIGZvcndhcmQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKTogVXNlIHRoZSBuZXdseSBhZGRlZCBjbG9zZWQtc2hhZG93LXRyZWUtdGVz
dC5odG1sCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Nsb3NlZC1zaGFk
b3ctdHJlZS10ZXN0Lmh0bWw6IEFkZGVkLiBDcmVhdGVzIGEgc2hhZG93IHRyZWUgd2l0aCBzbG90
cworICAgICAgICBhbmQgdGVzdHMgdGhhdCB3aW5kb3cud2Via2l0Q29sbGVjdE1hdGNoaW5nRWxl
bWVudHNBY3Jvc3NTaGFkb3dCb3VuZGFyaWVzIGlzIG5vdCBwcmVzZW50IHdoZW4KKyAgICAgICAg
YW4gZXZlbnQgbmFtZWQgInRlc3Rub3JtYWx3b3JsZCIgaXMgZGlzcGF0Y2hlZCBieSB0aGUgaW5q
ZWN0ZWQgYnVuZGxlLgorCiAyMDE2LTExLTE2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDg0NTUpOiBMYXlvdXRUZXN0cyBzd2lw
ZS9wdXNoU3RhdGUtY2FjaGVkLWJhY2stc3dpcGUuaHRtbCBhbmQgc3dpcGUvbWFpbi1mcmFtZS1w
aW5uaW5nLXJlcXVpcmVtZW50Lmh0bWwgYXJlIGZhaWxpbmcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMDg4MzYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDM1LDYg
KzQzNSw3IEBACiAJCTk5ODRGQUNFMUNGRkIwOTAwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk4NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLzsgfTsKIAkJ
OUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jv
b3RPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxs
U2hhZG93Um9vdE9wZW5fQnVuZGxlLmNwcCAqLzsgfTsKIAkJOUIyNkZDQ0ExNTlEMTZERTAwQ0Mz
NzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjZGQ0I0MTU5RDE1RTcwMEND
Mzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKKwkJOUIyNzBG
RUUxRERDMkMwQjAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNzBGRUQx
RERDMjVGRDAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgKi87IH07CiAJ
CTlCNEY4RkE3MTU5RDUyREQwMDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
NEY4RkE2MTU5RDUyQ0EwMDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICov
OyB9OwogCQk5QzY0REMzMjFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlD
NjREQzMxMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICov
OyB9OwogCQlBMTE0NkE4RDFEMkQ3MTE1MDAwRkU3MTAgLyogQ29udGVudEZpbHRlcmluZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ2QThBMUQy
RDcwNEYwMDBGRTcxMCAvKiBDb250ZW50RmlsdGVyaW5nLm1tICovOyB9OwpAQCAtNTc5LDYgKzU4
MCw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJm
b2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTlCMjcwRkVFMUREQzJDMEIwMDJENTNG
MyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUY0QzJBQjIyMURENkQ5NUUwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5k
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJODM0OUQzQzQxREI5NzI4RTAwNEE5RjY1
IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlBRDU3QUMyMjFEQTc0NjZFMDBGRjFCREUgLyogbWFueS1pZnJhbWVzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMDgwLDYgKzEwODIsNyBAQAogCQk5QjA3ODZBNDFDNTg4
NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxl
TWFrZUFsbFNoYWRvd1Jvb3RPcGVuX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMjZGQzZCMTU5RDA2MTAwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1l
ZEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIVE1MRm9y
bUNvbGxlY3Rpb25OYW1lZEl0ZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
MjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRl
bS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjI3MEZFRDFEREMyNUZEMDAy
RDUzRjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI0RjhGQTMxNTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9u
TmFtZWRJdGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRN
TENvbGxlY3Rpb25OYW1lZEl0ZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
NEY4RkE2MTU5RDUyQ0EwMDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3OTE2NEYxQkQ4OUQwRDAwRDUwQjhGIC8q
IEZpcnN0UmVzcG9uZGVyU2Nyb2xsaW5nUG9zaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg3MCw2ICsxODczLDcgQEAKIAkJCQk3NkUx
ODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLywKIAkJ
CQk3QzQ4NkJBMDFBQTEyNTRCMDAzRjZGOUIgLyogYnVuZGxlLWZpbGUuaHRtbCAqLywKIAkJCQkx
QTUwQUExRjFBMkE0RUE1MDBGNEMzNDUgLyogY2xvc2UtZnJvbS13aXRoaW4tY3JlYXRlLXBhZ2Uu
aHRtbCAqLywKKwkJCQk5QjI3MEZFRDFEREMyNUZEMDAyRDUzRjMgLyogY2xvc2VkLXNoYWRvdy10
cmVlLXRlc3QuaHRtbCAqLywKIAkJCQkyOTBGNDI3NDE3MkExRkRFMDA5MzlGRjAgLyogY3VzdG9t
LXByb3RvY29sLXN5bmMteGhyLmh0bWwgKi8sCiAJCQkJQzVFMUFGRkQxNkIyMjE3OTAwNkNDMUYy
IC8qIGV4ZWNDb3B5Lmh0bWwgKi8sCiAJCQkJQkMyRDAwNEExMkE5RkVCMzAwRTczMkEzIC8qIGZp
bGUtd2l0aC1hbmNob3IuaHRtbCAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290T3Blbl9CdW5kbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1
bmRsZU1ha2VBbGxTaGFkb3dSb290T3Blbl9CdW5kbGUuY3BwCShyZXZpc2lvbiAyMDg4MzYpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVNYWtlQWxs
U2hhZG93Um9vdE9wZW5fQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsMjcg
QEAgcHVibGljOgogICAgICAgICBXS0J1bmRsZVNjcmlwdFdvcmxkTWFrZUFsbFNoYWRvd1Jvb3Rz
T3Blbih3b3JsZCk7CiAKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygKLSAgICAgICAgICAgICJ2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyIKLSAgICAgICAgICAgICJl
bGVtZW50LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsiCi0gICAgICAgICAgICAiYWxl
cnQoZWxlbWVudC5zaGFkb3dSb290ID8gJ1BBU1MnIDogJ0ZBSUwnKTsiKSk7CisgICAgICAgICAg
ICAid2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiIKKyAgICAgICAgICAgICIgICAgY29u
c3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuIgorICAgICAgICAg
ICAgIiAgICBjb25zdCBxdWVyeU1ldGhvZE5hbWUgPSAnd2Via2l0Q29sbGVjdE1hdGNoaW5nRWxl
bWVudHNBY3Jvc3NTaGFkb3dCb3VuZGFyaWVzJztcbiIKKyAgICAgICAgICAgICIgICAgZWxlbWVu
dC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7XG4iCisgICAgICAgICAgICAvLyBUZXN0
IDEKKyAgICAgICAgICAgICIgICAgYWxlcnQoZWxlbWVudC5zaGFkb3dSb290ID8gJ1BBU1M6IHNo
YWRvd1Jvb3QgY3JlYXRlZCBpbiBpbmplY3RlZCBidW5kbGUnIDogJ0ZBSUwnKTtcbiIKKyAgICAg
ICAgICAgIC8vIFRlc3QgMgorICAgICAgICAgICAgIiAgICBhbGVydChkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdzaGFkb3ctaG9zdCcpLnNoYWRvd1Jvb3QgPyAnUEFTUzogc2hhZG93Um9vdCBjcmVh
dGVkIGJ5IG5vcm1hbCB3b3JsZCcgOiAnRkFJTCcpO1xuIgorICAgICAgICAgICAgLy8gVGVzdCAz
CisgICAgICAgICAgICAiICAgIGFsZXJ0KHdpbmRvd1txdWVyeU1ldGhvZE5hbWVdID8gJ1BBU1M6
IHF1ZXJ5IG1ldGhvZCBleGlzdHMnIDogJ0ZBSUwnKTtcbiIKKyAgICAgICAgICAgIC8vIFRlc3Qg
NAorICAgICAgICAgICAgIiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgndGVz
dG5vcm1hbHdvcmxkJykpO1xuIgorICAgICAgICAgICAgLy8gVGVzdCA1CisgICAgICAgICAgICAi
ICAgIGNvbnN0IHF1ZXJ5TWV0aG9kID0gd2luZG93W3F1ZXJ5TWV0aG9kTmFtZV07XG4iCisgICAg
ICAgICAgICAiICAgIGxldCBxdWVyeVJlc3VsdCA9IEFycmF5LmZyb20ocXVlcnlNZXRob2QoZG9j
dW1lbnQsICdzcGFuJykpO1xuIgorICAgICAgICAgICAgIiAgICBhbGVydCgnRm91bmQ6JyArIHF1
ZXJ5UmVzdWx0Lm1hcCgoc3BhbikgPT4gc3Bhbi50ZXh0Q29udGVudCkuam9pbignLCcpKTtcbiIK
KyAgICAgICAgICAgIC8vIFRlc3QgNgorICAgICAgICAgICAgIiAgICBjb25zdCBpbm5lckhvc3Qg
PSBxdWVyeU1ldGhvZChkb2N1bWVudCwgJ2lubmVyLWhvc3QnKVswXTtcbiIKKyAgICAgICAgICAg
ICIgICAgcXVlcnlSZXN1bHQgPSBBcnJheS5mcm9tKHF1ZXJ5TWV0aG9kKGlubmVySG9zdCwgJ3Nw
YW4nKSk7XG4iCisgICAgICAgICAgICAiICAgIGFsZXJ0KCdGb3VuZDonICsgcXVlcnlSZXN1bHQu
bWFwKChzcGFuKSA9PiBzcGFuLnRleHRDb250ZW50KS5qb2luKCcsJykpO1xuIgorICAgICAgICAg
ICAgIn1cbiIpKTsKICAgICAgICAgV0tCdW5kbGVBZGRVc2VyU2NyaXB0KGJ1bmRsZSwgcGFnZUdy
b3VwLCB3b3JsZCwgc291cmNlLmdldCgpLCAwLCAwLCAwLCBrV0tJbmplY3RBdERvY3VtZW50U3Rh
cnQsIGtXS0luamVjdEluQWxsRnJhbWVzKTsKICAgICB9CiB9OwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Bl
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0lu
amVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAJKHJldmlzaW9uIDIwODgzNikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1ha2VB
bGxTaGFkb3dSb290c09wZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAorc3RhdGljIHVuc2lnbmVkIHRlc3ROdW1iZXIg
PSAwOwogc3RhdGljIGJvb2wgZG9uZTsKIAogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0
KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC00MSw5ICs0MiwyNyBAQCBzdGF0aWMgdm9pZCBy
dW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmCiAgICAgQVNTRVJUX05PVF9OVUxMKGZyYW1lKTsK
IAogICAgIEVYUEVDVF9FUShwYWdlLCBXS0ZyYW1lR2V0UGFnZShmcmFtZSkpOwotICAgIEVYUEVD
VF9XS19TVFJFUSgiUEFTUyIsIGFsZXJ0VGV4dCk7Ci0KLSAgICBkb25lID0gdHJ1ZTsKKyAgICBz
d2l0Y2ggKCsrdGVzdE51bWJlcikgeworICAgIGNhc2UgMToKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKCJQQVNTOiBzaGFkb3dSb290IGNyZWF0ZWQgaW4gaW5qZWN0ZWQgYnVuZGxlIiwgYWxlcnRU
ZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoIlBBU1M6IHNoYWRvd1Jvb3QgY3JlYXRlZCBieSBub3JtYWwgd29ybGQiLCBhbGVydFRleHQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
UEFTUzogcXVlcnkgbWV0aG9kIGV4aXN0cyIsIGFsZXJ0VGV4dCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgNDoKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJQQVNTOiBxdWVyeSBtZXRob2Qg
d2FzIG5vdCBwcmVzZW50IGluIHRoZSBub3JtYWwgd29ybGQiLCBhbGVydFRleHQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDU6CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiRm91bmQ6MSwy
LDMsNCw1LDYiLCBhbGVydFRleHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDY6CisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUSgiRm91bmQ6MiwzLDQiLCBhbGVydFRleHQpOworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCiBURVNUKFdlYktpdDIsIElu
amVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuVGVzdCkKQEAgLTYxLDcgKzgwLDcgQEAg
VEVTVChXZWJLaXQyLCBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkbwogCiAgICAgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmdWlDbGllbnQuYmFzZSk7CiAKLSAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNl
KCJzaW1wbGUiLCAiaHRtbCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0
V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJjbG9zZWQtc2hhZG93LXRyZWUtdGVzdCIs
ICJodG1sIikpOwogICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7
CiAKICAgICBVdGlsOjpydW4oJmRvbmUpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL2Nsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Nsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Ns
b3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNoYWRvdy1ob3N0PjxzcGFuPjU8
L3NwYW4+PHNwYW4gc2xvdD0iYmFyIj4yPC9zcGFuPjwvc2hhZG93LWhvc3Q+Cis8c2NyaXB0Pgor
Y29uc3Qgc2hhZG93Um9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NoYWRvdy1ob3N0Jyku
YXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSBg
CisgICAgPHNwYW4+MTwvc3Bhbj4KKyAgICA8aW5uZXItaG9zdD4KKyAgICAgICAgPHNsb3QgbmFt
ZT0iYmFyIiBzbG90PSJmb28iPjxzcGFuPkZBSUwgLSBuYW1lZCBzbG90IGZhbGxiYWNrPC9zcGFu
Pjwvc2xvdD4KKyAgICAgICAgPHNwYW4+RkFJTCAtIHVuYXNzaWduZWQgY29udGVudDwvc3Bhbj4K
KyAgICAgICAgPHNwYW4gc2xvdD0iZm9vIj4zPC9zcGFuPgorICAgIDwvaW5uZXItaG9zdD4KKyAg
ICA8c2xvdD48c3Bhbj5GQUlMIC0gZGVmYXVsdCBzbG90IGZhbGxiYWNrPC9zcGFuPjwvc2xvdD4K
KyAgICA8c3Bhbj42PC9zcGFuPmA7Citjb25zdCBpbm5lckhvc3QgPSBzaGFkb3dSb290LnF1ZXJ5
U2VsZWN0b3IoJ2lubmVyLWhvc3QnKTsKK2lubmVySG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdj
bG9zZWQnfSkuaW5uZXJIVE1MID0gYAorICAgIDxzbG90IG5hbWU9ImZvbyI+PC9zbG90PgorICAg
IDxzcGFuPjQ8L3NwYW4+YDsKKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndGVzdG5vcm1h
bHdvcmxkJywgZnVuY3Rpb24gKCkgeworICAgIGFsZXJ0KHdpbmRvdy53ZWJraXRDb2xsZWN0TWF0
Y2hpbmdFbGVtZW50c0Fjcm9zc1NoYWRvd0JvdW5kYXJpZXMgPworICAgICAgICAnRkFJTCcgOiAn
UEFTUzogcXVlcnkgbWV0aG9kIHdhcyBub3QgcHJlc2VudCBpbiB0aGUgbm9ybWFsIHdvcmxkJyk7
Cit9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295131</attachid>
            <date>2016-11-17 20:15:14 -0800</date>
            <delta_ts>2016-11-17 21:30:31 -0800</delta_ts>
            <desc>Dropped the prefix</desc>
            <filename>bug-164851-20161117201508.patch</filename>
            <type>text/plain</type>
            <size>43275</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE2LTExLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBhbiBleHBlcmltZW50YWwgQVBJIHRvIGZpbmQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBi
b3VuZGFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQ4NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MjIwMDkyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorCiAyMDE2LTExLTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtKU0NdIERyb3AgYXJndW1lbnRzLmNhbGxlcgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShy
ZXZpc2lvbiAyMDg4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDcgQEAKICAgICBtYWNy
byh2YWx1ZSkgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3ZWJraXQpIFwKKyAg
ICBtYWNybyhjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUpIFwKICAgICBtYWNybyh3
ZWJraXRJREJDdXJzb3IpIFwKICAgICBtYWNybyh3ZWJraXRJREJEYXRhYmFzZSkgXAogICAgIG1h
Y3JvKHdlYmtpdElEQkZhY3RvcnkpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODg3MykK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0
IEBACisyMDE2LTExLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBhbiBleHBlcmltZW50YWwgQVBJIHRvIGZpbmQgZWxlbWVudHMgYWNyb3NzIHNoYWRv
dyBib3VuZGFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQ4NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MjIwMDkyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB3aW5kb3cuY29sbGVj
dE1hdGNoaW5nRWxlbWVudHNJbkZsYXRUcmVlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIHNlbGVjdG9y
cykKKyAgICAgICAgYXMgYW4gZXhwZXJpbWVudGFsIEFQSSB3aGljaCBmaW5kcyBhIGxpc3Qgb2Yg
ZWxlbWVudHMgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBDU1Mgc2VsZWN0b3JzCisgICAgICAgIGFu
ZCBleHBvc2UgaXQgdG8gYSBKU1dvcmxkIG9uIHdoaWNoIFdLQnVuZGxlU2NyaXB0V29ybGRNYWtl
QWxsU2hhZG93Um9vdHNPcGVuIHdhcyBjYWxsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBN
b3JlIHRlc3QgY2FzZXMgYXJlIGFkZGVkIHRvIFdlYktpdDIuSW5qZWN0ZWRCdW5kbGVNYWtlQWxs
U2hhZG93Um9vdHNPcGVuLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChOZWVkc1J1bnRpbWVDaGVjayk6IEFkZGVkLiBBYnN0cmFjdHMg
Y2hlY2tzIGZvciBFbmFibGVkQXRSdW50aW1lIGFuZCBFbmFibGVkRm9yV29ybGQuCisgICAgICAg
IChPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0
aWVzSGFzaFRhYmxlKToKKyAgICAgICAgKEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUpOiBV
c2Ugd29ybGRGb3JET01PYmplY3QodGhpcykuY29uZGl0aW9uKCkgZm9yIEVuYWJsZWRGb3JXb3Js
ZC4KKyAgICAgICAgQWxzbyBzcGxpdCB0aGUgbGluZSBmb3IgRW5hYmxlZEF0UnVudGltZSBhbmQg
RW5hYmxlZEF0UnVudGltZSBmb3IgYSBiZXR0ZXIgcmVhZGFiaWxpdHkuCisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKGFkZEl0ZXJhYmxlUHJvcGVydGllcyk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKEdlbmVyYXRlQ29u
c3RydWN0b3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNX
b3JsZENhbGxlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRT
cGVjaWZpY01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldvcmxkU3BlY2lmaWNNZXRob2RDYWxsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbDogQWRkZWQgYSB0ZXN0IGNhc2UuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNvbGxlY3RN
YXRjaGluZ0VsZW1lbnRzSW5GbGF0VHJlZSk6IEFkZGVkLiBJbXBsZW1lbnRzIHRoZSBmZWF0dXJl
IGJ5CisgICAgICAgIGNhbGxpbmcgU2VsZWN0b3JRdWVyeSdzIG1hdGNoZXMgb24gYSBub2RlIHlp
ZWxkZWQgYnkgQ29tcG9zZWRUcmVlSXRlcmF0b3IuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
aDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMTYtMTEtMTcgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggV2luQ2Fp
cm8gYnVpbGQgYWZ0ZXIgcjIwODc0MApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwODg3MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC02OTMsNiArNjkzLDEzIEBAIHN1YiBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFu
Y2UKICAgICByZXR1cm4gMDsKIH0KIAorc3ViIE5lZWRzUnVudGltZUNoZWNrCit7CisgICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OworICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfQorICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9OworfQorCiAjIGh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI2VzLW9wZXJhdGlvbnMKIHN1YiBPcGVyYXRpb25TaG91bGRCZU9uSW5z
dGFuY2UKIHsKQEAgLTcwMiw3ICs3MDksNyBAQCBzdWIgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3Rh
bmNlCiAgICAgcmV0dXJuIDEgaWYgSXNHbG9iYWxPclByaW1hcnlHbG9iYWxJbnRlcmZhY2UoJGlu
dGVyZmFjZSk7CiAKICAgICAjIEZJWE1FOiBUaGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvZXMgbm90
IHN1cHBvcnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0aGUgaW5zdGFu
Y2UgeWV0IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKS4KLSAgICByZXR1cm4gMCBpZiAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9OworICAgIHJldHVy
biAwIGlmIE5lZWRzUnVudGltZUNoZWNrKCRmdW5jdGlvbik7CiAKICAgICAjIFtVbmZvcmdlYWJs
ZV0gb3BlcmF0aW9ucyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLiBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZQogICAgIHJldHVybiAxIGlmIElzVW5mb3JnZWFi
bGUoJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKQEAgLTE4NzUsNyArMTg4Miw3IEBAIHN1YiBHZW5l
cmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbmV4dCBpZiBBdHRyaWJ1dGVTaG91bGRC
ZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgIT0gJGlzSW5zdGFuY2U7CiAKICAg
ICAgICAgIyBHbG9iYWwgb2JqZWN0cyBhZGQgUnVudGltZUVuYWJsZWQgYXR0cmlidXRlcyBhZnRl
ciBjcmVhdGlvbiBzbyBkbyBub3QgYWRkIHRoZW0gdG8gdGhlIHN0YXRpYyB0YWJsZS4KLSAgICAg
ICAgaWYgKCRpc0luc3RhbmNlICYmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Vu
YWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmICgkaXNJbnN0YW5jZSAmJiBOZWVkc1J1bnRp
bWVDaGVjaygkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgJHByb3BlcnR5Q291bnQgLT0gMTsK
ICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KQEAgLTE5MDQsNyArMTkxMSw3IEBAIHN1YiBH
ZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwogICAgICAgICAkY29u
ZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAotICAg
ICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGlt
ZX0pIHsKKyAgICAgICAgaWYgKE5lZWRzUnVudGltZUNoZWNrKCRhdHRyaWJ1dGUpKSB7CiAgICAg
ICAgICAgICBwdXNoKEAkcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzLCAkYXR0cmlidXRlKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTE5MjAsNyArMTkyNyw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRp
ZXNIYXNoVGFibGUKICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPm5hbWUgZXEgIltTeW1ib2wu
SXRlcmF0b3JdIjsKIAogICAgICAgICAjIEdsb2JhbCBvYmplY3RzIGFkZCBSdW50aW1lRW5hYmxl
ZCBvcGVyYXRpb25zIGFmdGVyIGNyZWF0aW9uIHNvIGRvIG5vdCBhZGQgdGhlbSB0byB0aGUgc3Rh
dGljIHRhYmxlLgotICAgICAgICBpZiAoJGlzSW5zdGFuY2UgJiYgJGZ1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgeworICAgICAgICBpZiAoJGlzSW5zdGFu
Y2UgJiYgTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9uKSkgewogICAgICAgICAgICAgJHByb3Bl
cnR5Q291bnQgLT0gMTsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KQEAgLTE5NDcsNyAr
MTk1NCw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsID0gZ2V0Q29uZGl0aW9uYWxGb3JGdW5jdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRz
KCRmdW5jdGlvbik7CiAgICAgICAgICRjb25kaXRpb25hbHMtPnskbmFtZX0gPSAkY29uZGl0aW9u
YWwgaWYgJGNvbmRpdGlvbmFsOwogCi0gICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmIChOZWVkc1J1bnRpbWVD
aGVjaygkZnVuY3Rpb24pKSB7CiAgICAgICAgICAgICBwdXNoKEAkcnVudGltZUVuYWJsZWRGdW5j
dGlvbnMsICRmdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTExLDggKzI1MTgsMTYg
QEAgc3ViIEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUKIHsKICAgICBteSAkY29udGV4dCA9
IHNoaWZ0OwogCisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIpOworICAgIAorICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxl
ZEZvcldvcmxkfSkgeworICAgICAgICByZXR1cm4gIndvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLiIg
LiBUb01ldGhvZE5hbWUoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRGb3JX
b3JsZH0pOworICAgIH0KKwogICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMgZ2l2ZW4gKGUuZy4gIkVu
YWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5hbWUiKSByZXR1cm4gdGhlIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkue0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBtZXRob2QuCi0g
ICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBU
b01ldGhvZE5hbWUoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRp
bWV9KSAuICJFbmFibGVkIiBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJs
ZWRBdFJ1bnRpbWV9ICYmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRS
dW50aW1lfSBuZSAiVkFMVUVfSVNfTUlTU0lORyIpOworICAgIGlmICgkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0gJiYgJGNvbnRleHQtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9IG5lICJWQUxVRV9JU19NSVNTSU5HIikgeworICAg
ICAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuIiAu
IFRvTWV0aG9kTmFtZSgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVu
dGltZX0pIC4gIkVuYWJsZWQiOworICAgIH0KIAogICAgICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1
bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkue21l
dGhvZE5hbWV9RW5hYmxlZCgpLgogICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5uYW1lKSAuICJFbmFi
bGVkIjsKQEAgLTMwMDAsMTAgKzMwMTUsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
CiAgICAgIyBTdXBwb3J0IGZvciBSdW50aW1lRW5hYmxlZCBhdHRyaWJ1dGVzIG9uIGluc3RhbmNl
cy4KICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30p
IHsKLSAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RW5hYmxlZEF0UnVudGltZX07CisgICAgICAgIG5leHQgdW5sZXNzIE5lZWRzUnVudGltZUNoZWNr
KCRhdHRyaWJ1dGUpOwogICAgICAgICBuZXh0IHVubGVzcyBBdHRyaWJ1dGVTaG91bGRCZU9uSW5z
dGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIpOwogICAgICAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmli
dXRlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlv
biA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZSk7CkBAIC0zMDM1LDEx
ICszMDQ5LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAjIFN1cHBvcnQg
Zm9yIFJ1bnRpbWVFbmFibGVkIG9wZXJhdGlvbnMgb24gaW5zdGFuY2VzLgogICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgbmV4dCB1
bmxlc3MgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfTsK
KyAgICAgICAgbmV4dCB1bmxlc3MgTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9uKTsKICAgICAg
ICAgbmV4dCB1bmxlc3MgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRm
dW5jdGlvbik7CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYg
JGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogCi0gICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
U3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0
aW9uKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlv
biA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9uKTsKQEAgLTUwMjcsOCAr
NTA0MCw3IEBAIHN1YiBhZGRJdGVyYWJsZVByb3BlcnRpZXMoKQogICAgIG15ICRpbnRlcmZhY2Ug
PSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAKLSAgICBpZiAoJGludGVyZmFj
ZS0+aXRlcmFibGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7Ci0g
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsKKyAg
ICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZS0+aXRlcmFibGUpKSB7CiAgICAgICAg
IG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRpbnRl
cmZhY2UtPml0ZXJhYmxlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7
ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAgICIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkocmV2aXNpb24gMjA4
ODczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBEb05vdENoZWNrU2VjdXJpdHlPblNl
dHRlcgogRG9jdW1lbnRFdmVudEhhbmRsZXIKIEVuYWJsZWRBdFJ1bnRpbWU9KgogRW5hYmxlZEJ5
U2V0dGluZz0qCitFbmFibGVkRm9yV29ybGQ9KgogRW5mb3JjZVJhbmdlCiBFeHBvcnRNYWNybz1X
RUJDT1JFX0VYUE9SVHxXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVAogRXhwb3J0VG9XcmFwcGVk
RnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
cy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyMDg4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMjQ2
LDcgKzI0Niw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlCiAgICAgbXkgJGNv
ZGUgPSAiICAgICI7CiAgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlc0xpc3Q7CiAgICAgZm9yZWFj
aCBteSAkYXR0cmlidXRlTmFtZSAoc29ydCBrZXlzICV7JGV4dGVuZGVkQXR0cmlidXRlc30pIHsK
LSAgICAgIG5leHQgdW5sZXNzICgkYXR0cmlidXRlTmFtZSBlcSAiQ29uZGl0aW9uYWwiIHx8ICRh
dHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQXRSdW50aW1lIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAi
RW5hYmxlZEJ5U2V0dGluZyIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlByaXZhdGVJZGVudGlmaWVy
IiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGljSWRlbnRpZmllciIpOworICAgICAgbmV4dCB1
bmxlc3MgKCRhdHRyaWJ1dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5hbWUg
ZXEgIkVuYWJsZWRBdFJ1bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9yV29y
bGQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIiB8fCAkYXR0cmlidXRl
TmFtZSBlcSAiUHJpdmF0ZUlkZW50aWZpZXIiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJQdWJsaWNJ
ZGVudGlmaWVyIik7CiAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFt
ZTsKICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAiPSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0
ZU5hbWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAgICAgIHB1c2goQGV4dGVuZGVkQXR0cmli
dXRlc0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEdsb2JhbE9iamVjdC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9iYWxPYmplY3QuaWRsCShy
ZXZpc2lvbiAyMDg4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdEdsb2JhbE9iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAKICAg
ICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJl
XSB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRE9NU3RyaW5nIHRlc3RQYXJhbSk7CiAg
ICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVy
ZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKGxvbmcgdGVzdFBhcmFtKTsKIAorICAg
IFtFbmFibGVkRm9yV29ybGQ9c3BlY2lmaWNXb3JsZF0gdm9pZCBlbmFibGVkSW5TcGVjaWZpY1dv
cmxkKGxvbmcgdGVzdFBhcmFtKTsKKwogICAgIFtQcml2YXRlSWRlbnRpZmllciwgQ29uZGl0aW9u
YWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2b2lkIHRlc3RQ
cml2YXRlRnVuY3Rpb24oKTsKICAgICBbSlNCdWlsdGluLCBDb25kaXRpb25hbD1URVNUX0ZFQVRV
UkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgdGVzdEpTQnVpbHRpbkZ1bmN0
aW9uKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjA4ODczKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiAr
MTA5LDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIFtD
b25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZv
aWQgZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFtKTsKICAgICBb
Q29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2
b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24obG9uZyB0ZXN0UGFyYW0pOwogCisgICAgW0Vu
YWJsZWRGb3JXb3JsZD1zb21lV29ybGRdIHZvaWQgd29ybGRTcGVjaWZpY01ldGhvZChsb25nIHRl
c3RQYXJhbSk7CisKICAgICAvLyBUeXBlZEFycmF5IGF0dHJpYnV0ZQogICAgIGF0dHJpYnV0ZSBG
bG9hdDMyQXJyYXkgdHlwZWRBcnJheUF0dHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyMDg4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0CiAjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmlj
V29ybGQoSlNDOjpFeGVjU3RhdGUqKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiAjZW5kaWYKQEAgLTE1
OSw2ICsxNjAsOCBAQCB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oCiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1
cmVFbmFibGVkKCkpCiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB2
bS5wcm9wZXJ0eU5hbWVzLT5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCAxLCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiwgTm9JbnRy
aW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogI2VuZGlmCisg
ICAgaWYgKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNwZWNpZmljV29ybGQoKSkKKyAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmVuYWJs
ZWRJblNwZWNpZmljV29ybGQsIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcmxkLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVy
ZShKU0M6OkZ1bmN0aW9uKSk7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQo
KSkKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RQcml2
YXRlRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwpAQCAtNDUxLDYgKzQ1NCwyNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhCiB9CiAjZW5kaWYKIAorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFi
bGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0R2xvYmFsT2Jq
ZWN0KiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RHbG9i
YWxPYmplY3Q+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVyPihzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmlj
V29ybGQiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdGVzdFBhcmFtID0gY29u
dmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW1wbC5lbmFibGVkSW5TcGVj
aWZpY1dvcmxkKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKK30KKwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvblRlc3RQcml2YXRlRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RHbG9i
YWxPYmplY3QqLCBKU0M6OlRocm93U2NvcGUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9u
IDIwODg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzgsNiArOTM4LDcgQEAgdGVtcGxhdGU8PiBU
ZXN0T2JqOjpDb25kaXRpb25hbERpY3Rpb25hcgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiAjZW5kaWYKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldvcmxkU3BlY2lmaWNNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoSlND
OjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQnl0ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTU0NSw2ICsxNTQ2LDcgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogI2Vsc2UKICAgICB7IDAsIDAs
IE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCisgICAgeyAid29ybGRTcGVjaWZpY01l
dGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmlj
TWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZvaWRNZXRob2QiLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KSAoMykgfSB9LAog
ICAgIHsgImJ5dGVNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Qnl0ZU1ldGhvZCksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTE3MjYsNiArMTcyOCwxMSBAQCB2
b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oCiAgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9w
ZXJ0eU5hbWUpOwogICAgIH0KICNlbmRpZgorICAgIGlmICghd29ybGRGb3JET01PYmplY3QodGhp
cykuc29tZVdvcmxkKCkpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ3
b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZpY01ldGhvZCIpKTsKKyAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1l
KTsKKyAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAg
ICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0cmli
dXRlIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpKTsKQEAgLTQ3MTEsNiAr
NDcxOCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiB9CiAj
ZW5kaWYKIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
VGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZChFeGVjU3Rh
dGUqIHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kQ2Fs
bGVyPihzdGF0ZSwgIndvcmxkU3BlY2lmaWNNZXRob2QiKTsKK30KKworc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZp
Y01ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHRlc3RQYXJh
bSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCks
IEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGltcGwud29ybGRT
cGVjaWZpY01ldGhvZChXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIw
ODg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tcG9zZWRU
cmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxlLmgiCiAjaW5jbHVkZSAiQ3J5cHRvLmgiCkBAIC04
OSw4ICs5MCwxMCBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRl
ICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1
ZGUgIlN0b3JhZ2UuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VOYW1lc3BhY2UuaCIKQEAgLTYzMiw2ICs2MzUsMzMgQEAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
JiBET01XaW5kb3c6OmVuc3VyZQogICAgIHJldHVybiAqbV9jdXN0b21FbGVtZW50UmVnaXN0cnk7
CiB9CiAKK0V4Y2VwdGlvbk9yPFJlZjxOb2RlTGlzdD4+IERPTVdpbmRvdzo6Y29sbGVjdE1hdGNo
aW5nRWxlbWVudHNJbkZsYXRUcmVlKE5vZGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9y
cykKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1Rf
U1VQUE9SVEVEX0VSUiB9OworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tk9UX1NVUFBPUlRFRF9FUlIgfTsKKworICAgIGF1dG8gcXVlcnlPckV4Y2VwdGlvbiA9IGRvY3Vt
ZW50LT5zZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKHNlbGVjdG9ycyk7CisgICAgaWYgKHF1ZXJ5T3JF
eGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBxdWVyeU9yRXhjZXB0aW9u
LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4oc2NvcGUp
KQorICAgICAgICByZXR1cm4gUmVmPE5vZGVMaXN0PiB7IFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVh
dGUoKSB9OworCisgICAgU2VsZWN0b3JRdWVyeSYgcXVlcnkgPSBxdWVyeU9yRXhjZXB0aW9uLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOworCisgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gcmVzdWx0Owor
ICAgIGZvciAoYXV0byYgbm9kZSA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKGRvd25jYXN0PENv
bnRhaW5lck5vZGU+KHNjb3BlKSkpIHsKKyAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpICYm
IHF1ZXJ5Lm1hdGNoZXMoZG93bmNhc3Q8RWxlbWVudD4obm9kZSkpKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChkb3duY2FzdDxFbGVtZW50Pihub2RlKSk7CisgICAgfQorCisgICAgcmV0dXJu
IFJlZjxOb2RlTGlzdD4geyBTdGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlKFdURk1vdmUocmVzdWx0
KSkgfTsKK30KKwogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCiAKIGludCBET01XaW5k
b3c6Om9yaWVudGF0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2
aXNpb24gMjA4ODczKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBjbGFzcyBNZXNzYWdlRXZlbnQ7CiBjbGFzcyBNZXNz
YWdlUG9ydDsKIGNsYXNzIE5hdmlnYXRvcjsKIGNsYXNzIE5vZGU7CitjbGFzcyBOb2RlTGlzdDsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBlcmZvcm1hbmNl
OwpAQCAtMjk1LDYgKzI5Niw4IEBAIHB1YmxpYzoKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkq
IGN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpIHsgcmV0dXJuIG1fY3VzdG9tRWxlbWVudFJlZ2lzdHJ5
LmdldCgpOyB9CiAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5JiBlbnN1cmVDdXN0b21FbGVtZW50
UmVnaXN0cnkoKTsKIAorICAgIEV4Y2VwdGlvbk9yPFJlZjxOb2RlTGlzdD4+IGNvbGxlY3RNYXRj
aGluZ0VsZW1lbnRzSW5GbGF0VHJlZShOb2RlJiwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMpOwor
CiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKICAgICAvLyBUaGlzIGlzIHRoZSBpbnRl
cmZhY2Ugb3JpZW50YXRpb24gaW4gZGVncmVlcy4gU29tZSBleGFtcGxlcyBhcmU6CiAgICAgLy8g
IDAgaXMgc3RyYWlnaHQgdXA7IC05MCBpcyB3aGVuIHRoZSBkZXZpY2UgaXMgcm90YXRlZCA5MCBj
bG9ja3dpc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyMDg4
NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTE3Myw2ICsxNzMsOSBAQAogCiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9Q3VzdG9tRWxlbWVu
dHMsIEltcGxlbWVudGVkQXM9ZW5zdXJlQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5XSByZWFkb25seSBh
dHRyaWJ1dGUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IGN1c3RvbUVsZW1lbnRzOwogCisgICAgW01h
eVRocm93RXhjZXB0aW9uLCBFbmFibGVkRm9yV29ybGQ9c2hhZG93Um9vdElzQWx3YXlzT3Blbl0K
KyAgICBOb2RlTGlzdCBjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUoTm9kZSBzY29w
ZSwgRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisKICAgICAvLyBFdmVudCBoYW5kbGVycyB1bmlxdWUg
dG8gRWxlbWVudCBhbmQgRE9NV2luZG93LgogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlc2UgYmUg
ZXhwb3NlZCBvbiBEb2N1bWVudCBhcyB3ZWxsIChhbmQgdGhlcmVmb3JlIG1vdmVkIHRvIEdsb2Jh
bEV2ZW50SGFuZGxlcnMuaWRsKT8KICAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmFuaW1hdGlvbmVuZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODg3MykKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTExLTE3ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgQVBJ
IHRvIGZpbmQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBib3VuZGFyaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI4MjIwMDkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIHRlc3QgY2FzZXMgZm9yIHdpbmRvdy5jb2xsZWN0TWF0Y2hpbmdF
bGVtZW50c0luRmxhdFRyZWUgdG8gV2ViS2l0Mi5JbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dS
b290T3Blbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9JbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290KnMqT3Blbl9CdW5kbGUuY3BwOiBSZW5h
bWVkCisgICAgICAgIGZyb20gSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVu
ZGxlLmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlTWFrZUFsbFNo
YWRvd1Jvb3RPcGVuVGVzdDo6aW5pdGlhbGl6ZSk6IEFkZGVkIHRlc3QgY2FzZXMgZm9yCisgICAg
ICAgIHdpbmRvdy5jb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUgYnkgY2FsbGluZyBh
bGVydCgpIG1hbnkgdGltZXMuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0luamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0QWxlcnQpOiBBZGRlZCBleHBlY3RhdGlvbnMgZm9yIG11
bHRpcGxlIHRlc3QgY2FzZXMuIEVhY2ggdGVzdCBjYXNlCisgICAgICAgIGZpbmlzaGVzIHdpdGgg
YSBjYWxsIHRvIGFsZXJ0LCBhbmQgbW92ZXMgdGVzdE51bWJlciBmb3J3YXJkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSB0aGUgbmV3bHkgYWRkZWQgY2xvc2VkLXNoYWRvdy10
cmVlLXRlc3QuaHRtbAorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9jbG9z
ZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sOiBBZGRlZC4gQ3JlYXRlcyBhIHNoYWRvdyB0cmVlIHdp
dGggc2xvdHMKKyAgICAgICAgYW5kIHRlc3RzIHRoYXQgd2luZG93LmNvbGxlY3RNYXRjaGluZ0Vs
ZW1lbnRzSW5GbGF0VHJlZSBpcyBub3QgcHJlc2VudCB3aGVuCisgICAgICAgIGFuIGV2ZW50IG5h
bWVkICJ0ZXN0bm9ybWFsd29ybGQiIGlzIGRpc3BhdGNoZWQgYnkgdGhlIGluamVjdGVkIGJ1bmRs
ZS4KKwogMjAxNi0xMS0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUgU1BJLgpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIwODg3MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzMs
OCArNDMzLDkgQEAKIAkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovOyB9OwogCQk5OTg0
RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQx
OThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAw
OEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRp
dGFibGUtYm9keS5odG1sICovOyB9OwotCQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5q
ZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDc4NkE0MUM1ODg1QzMwMEQxNTlF
MyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290T3Blbl9CdW5kbGUuY3BwICovOyB9
OworCQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hh
ZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVN
YWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87IH07CiAJCTlCMjZGQ0NBMTU5RDE2
REUwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI2RkNCNDE1OUQx
NUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi87IH07CisJ
CTlCMjcwRkVFMUREQzJDMEIwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MjcwRkVEMUREQzI1RkQwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sICov
OyB9OwogCQk5QjRGOEZBNzE1OUQ1MkREMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0
ZW0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjRGOEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0u
aHRtbCAqLzsgfTsKIAkJOUM2NERDMzIxRDc2MTk4QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcCAqLzsgfTsKIAkJQTExNDZBOEQxRDJENzExNTAwMEZFNzEwIC8qIENvbnRlbnRGaWx0ZXJp
bmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE0
NkE4QTFEMkQ3MDRGMDAwRkU3MTAgLyogQ29udGVudEZpbHRlcmluZy5tbSAqLzsgfTsKQEAgLTU3
OSw2ICs1ODAsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJ
ZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk5QjI3MEZFRTFEREMyQzBC
MDAyRDUzRjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNEMyQUIyMjFERDZEOTVFMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0
aC1zb3VuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTgzNDlEM0M0MURCOTcyOEUw
MDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJQUQ1N0FDMjIxREE3NDY2RTAwRkYxQkRFIC8qIG1hbnktaWZyYW1lcy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTA3Nyw5ICsxMDc5LDEwIEBACiAJCTk5ODRG
QUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0
YWJsZS1ib2R5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9k
eS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwNzg2QTIxQzU4ODMwRjAw
RDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFk
b3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjA3ODZBNDFD
NTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVu
ZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVu
ZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlCMDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VB
bGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjI2RkM2QjE1OUQwNjEwMDBDQzM3NjUg
LyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZv
cm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBI
VE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOUIyNzBGRUQxRERDMjVGRDAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2xvc2VkLXNoYWRvdy10cmVlLXRl
c3QuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNEY4RkEzMTU5RDUyQjEw
MDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjRGOEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENv
bGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEhUTUxD
b2xsZWN0aW9uTmFtZWRJdGVtLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
NzkxNjRGMUJEODlEMEQwMEQ1MEI4RiAvKiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlyc3RSZXNwb25k
ZXJTY3JvbGxpbmdQb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3
MjcsNyArMTczMCw3IEBACiAJCQkJMzc4RTY0NzUxNjMyNjU1RDAwQjZDNjc2IC8qIEluamVjdGVk
QnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRsZS5jcHAgKi8sCiAJCQkJRjY2MEFBMTIxNUE2MTlDODAw
M0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lu
cy5jcHAgKi8sCiAJCQkJRjY2MEFBMTQxNUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3BwICovLAotCQkJCTlC
MDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
T3Blbl9CdW5kbGUuY3BwICovLAorCQkJCTlCMDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmpl
Y3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCAqLywKIAkJCQk5QjA3
ODZBMjFDNTg4MzBGMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNP
cGVuLmNwcCAqLywKIAkJCQk5M0QzRDE5RDE3QjFBODQyMDBDN0M0MTUgLyogTGF5b3V0TWlsZXN0
b25lc1dpdGhBbGxDb250ZW50SW5GcmFtZS5jcHAgKi8sCiAJCQkJNTJDQjQ3NDAxNDQ4RkI5MzAw
ODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAg
Ki8sCkBAIC0xODcwLDYgKzE4NzMsNyBAQAogCQkJCTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAv
KiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovLAogCQkJCTdDNDg2QkEwMUFBMTI1NEIwMDNG
NkY5QiAvKiBidW5kbGUtZmlsZS5odG1sICovLAogCQkJCTFBNTBBQTFGMUEyQTRFQTUwMEY0QzM0
NSAvKiBjbG9zZS1mcm9tLXdpdGhpbi1jcmVhdGUtcGFnZS5odG1sICovLAorCQkJCTlCMjcwRkVE
MUREQzI1RkQwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sICovLAogCQkJ
CTI5MEY0Mjc0MTcyQTFGREUwMDkzOUZGMCAvKiBjdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRt
bCAqLywKIAkJCQlDNUUxQUZGRDE2QjIyMTc5MDA2Q0MxRjIgLyogZXhlY0NvcHkuaHRtbCAqLywK
IAkJCQlCQzJEMDA0QTEyQTlGRUIzMDBFNzMyQTMgLyogZmlsZS13aXRoLWFuY2hvci5odG1sICov
LApAQCAtMjY2OSw3ICsyNjczLDcgQEAKIAkJCQkzNzhFNjQ3NzE2MzI2NTVFMDBCNkM2NzYgLyog
SW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUY2NjBBQTE1MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTc1
QTk3MTI2RTc0RjEwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJOUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFs
bFNoYWRvd1Jvb3RPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QjA3ODZBNTFD
NTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzM0RDODkxNDE0MTk1NzlGMDA3NDdFRjcgLyog
TG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzM0JFNUFGOTEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFz
aF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMURCMzQxNERBMjA4NzAwMjRDMzYy
IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5k
bGVNYWtlQWxsU2hhZG93Um9vdE9wZW5fQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9v
dE9wZW5fQnVuZGxlLmNwcAkocmV2aXNpb24gMjA4ODczKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuX0J1bmRs
ZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgV0tfSEFWRV9DX1NQSQotCi0jaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVUZXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZUdyb3VwLmg+
Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUHJpdmF0ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9X
S0J1bmRsZVNjcmlwdFdvcmxkLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Ci0j
aW5jbHVkZSA8YXNzZXJ0Lmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5UZXN0IDogcHVibGljIEluamVjdGVk
QnVuZGxlVGVzdCB7Ci1wdWJsaWM6Ci0gICAgSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9v
dE9wZW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAgICAgICA6IEluamVj
dGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQotICAgIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEpCi0gICAgewot
ICAgICAgICBhc3NlcnQoV0tHZXRUeXBlSUQodXNlckRhdGEpID09IFdLQnVuZGxlUGFnZUdyb3Vw
R2V0VHlwZUlEKCkpOwotICAgICAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAgPSBz
dGF0aWNfY2FzdDxXS0J1bmRsZVBhZ2VHcm91cFJlZj4odXNlckRhdGEpOwotCi0gICAgICAgIGF1
dG8gd29ybGQgPSBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKTsKLSAgICAgICAgV0tC
dW5kbGVTY3JpcHRXb3JsZE1ha2VBbGxTaGFkb3dSb290c09wZW4od29ybGQpOwotCi0gICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzb3VyY2UoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoCi0gICAgICAgICAgICAidmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsiCi0gICAgICAgICAgICAiZWxlbWVudC5hdHRhY2hTaGFkb3coe21v
ZGU6ICdjbG9zZWQnfSk7IgotICAgICAgICAgICAgImFsZXJ0KGVsZW1lbnQuc2hhZG93Um9vdCA/
ICdQQVNTJyA6ICdGQUlMJyk7IikpOwotICAgICAgICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoYnVu
ZGxlLCBwYWdlR3JvdXAsIHdvcmxkLCBzb3VyY2UuZ2V0KCksIDAsIDAsIDAsIGtXS0luamVjdEF0
RG9jdW1lbnRTdGFydCwga1dLSW5qZWN0SW5BbGxGcmFtZXMpOwotICAgIH0KLX07Ci0KLXN0YXRp
YyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RPcGVuVGVzdD4gcmVnaXN0cmFyKCJJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
T3BlblRlc3QiKTsKLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1ha2VB
bGxTaGFkb3dSb290c09wZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwCShy
ZXZpc2lvbiAyMDg4NzMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5q
ZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKK3N0YXRpYyB1bnNp
Z25lZCB0ZXN0TnVtYmVyID0gMDsKIHN0YXRpYyBib29sIGRvbmU7CiAKIHN0YXRpYyB2b2lkIHJ1
bkphdmFTY3JpcHRBbGVydChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgYWxlcnRUZXh0LCBX
S0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNDEsOSArNDIsMjcg
QEAgc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZgogICAgIEFTU0VSVF9O
T1RfTlVMTChmcmFtZSk7CiAKICAgICBFWFBFQ1RfRVEocGFnZSwgV0tGcmFtZUdldFBhZ2UoZnJh
bWUpKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIlBBU1MiLCBhbGVydFRleHQpOwotCi0gICAgZG9u
ZSA9IHRydWU7CisgICAgc3dpdGNoICgrK3Rlc3ROdW1iZXIpIHsKKyAgICBjYXNlIDE6CisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUSgiUEFTUzogc2hhZG93Um9vdCBjcmVhdGVkIGluIGluamVjdGVk
IGJ1bmRsZSIsIGFsZXJ0VGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJQQVNTOiBzaGFkb3dSb290IGNyZWF0ZWQgYnkgbm9ybWFsIHdv
cmxkIiwgYWxlcnRUZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoIlBBU1M6IHF1ZXJ5IG1ldGhvZCBleGlzdHMiLCBhbGVydFRleHQpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiUEFT
UzogcXVlcnkgbWV0aG9kIHdhcyBub3QgcHJlc2VudCBpbiB0aGUgbm9ybWFsIHdvcmxkIiwgYWxl
cnRUZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1OgorICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoIkZvdW5kOjEsMiwzLDQsNSw2IiwgYWxlcnRUZXh0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSA2OgorICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkZvdW5kOjIsMyw0IiwgYWxlcnRU
ZXh0KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAog
VEVTVChXZWJLaXQyLCBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290T3BlblRlc3QpCkBA
IC02MSw3ICs4MCw3IEBAIFRFU1QoV2ViS2l0MiwgSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG8K
IAogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJnVpQ2xpZW50LmJh
c2UpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBVdGlsOjpjcmVh
dGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHVybChBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiY2xvc2VkLXNo
YWRvdy10cmVlLXRlc3QiLCAiaHRtbCIpKTsKICAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFn
ZSgpLCB1cmwuZ2V0KCkpOwogCiAgICAgVXRpbDo6cnVuKCZkb25lKTsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
c09wZW5fQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAJ
KHJldmlzaW9uIDIwODg3MykJKGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0luamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuX0J1bmRsZS5jcHA6MjA4ODczKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlTWFrZUFs
bFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZF
X0NfU1BJCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlIDxXZWJL
aXQvV0tCdW5kbGVQYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQcml2YXRl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlU2NyaXB0V29ybGQuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitjbGFzcyBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290T3Bl
blRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBJbmplY3Rl
ZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290T3BlblRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50
aWZpZXIpCisgICAgICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSkKKyAgICB7CisgICAgICAgIGFzc2VydChXS0dldFR5cGVJRCh1c2VyRGF0
YSkgPT0gV0tCdW5kbGVQYWdlR3JvdXBHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQnVuZGxlUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cCA9IHN0YXRpY19jYXN0PFdLQnVuZGxlUGFnZUdyb3VwUmVmPih1
c2VyRGF0YSk7CisKKyAgICAgICAgYXV0byB3b3JsZCA9IFdLQnVuZGxlU2NyaXB0V29ybGRDcmVh
dGVXb3JsZCgpOworICAgICAgICBXS0J1bmRsZVNjcmlwdFdvcmxkTWFrZUFsbFNoYWRvd1Jvb3Rz
T3Blbih3b3JsZCk7CisKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygKKyAgICAgICAgICAgICJ2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyIKKyAgICAgICAgICAgICJl
bGVtZW50LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsiCisgICAgICAgICAgICAiYWxl
cnQoZWxlbWVudC5zaGFkb3dSb290ID8gJ1BBU1MnIDogJ0ZBSUwnKTsiKSk7CisgICAgICAgIFdL
QnVuZGxlQWRkVXNlclNjcmlwdChidW5kbGUsIHBhZ2VHcm91cCwgd29ybGQsIHNvdXJjZS5nZXQo
KSwgMCwgMCwgMCwga1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0LCBrV0tJbmplY3RJbkFsbEZyYW1l
cyk7CisgICAgfQorfTsKKworc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8SW5q
ZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdE9wZW5UZXN0PiByZWdpc3RyYXIoIkluamVjdGVk
QnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RPcGVuVGVzdCIpOworCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCisKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0luamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRs
ZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcAkocmV2aXNpb24gMjA4ODczKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlTWFrZUFsbFNo
YWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSwyNyBA
QCBwdWJsaWM6CiAgICAgICAgIFdLQnVuZGxlU2NyaXB0V29ybGRNYWtlQWxsU2hhZG93Um9vdHNP
cGVuKHdvcmxkKTsKIAogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc291cmNlKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAotICAgICAgICAgICAgInZhciBl
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IgotICAgICAgICAgICAgImVs
ZW1lbnQuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOyIKLSAgICAgICAgICAgICJhbGVy
dChlbGVtZW50LnNoYWRvd1Jvb3QgPyAnUEFTUycgOiAnRkFJTCcpOyIpKTsKKyAgICAgICAgICAg
ICJ3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuIgorICAgICAgICAgICAgIiAgICBjb25z
dCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4iCisgICAgICAgICAg
ICAiICAgIGNvbnN0IHF1ZXJ5TWV0aG9kTmFtZSA9ICdjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0lu
RmxhdFRyZWUnO1xuIgorICAgICAgICAgICAgIiAgICBlbGVtZW50LmF0dGFjaFNoYWRvdyh7bW9k
ZTogJ2Nsb3NlZCd9KTtcbiIKKyAgICAgICAgICAgIC8vIFRlc3QgMQorICAgICAgICAgICAgIiAg
ICBhbGVydChlbGVtZW50LnNoYWRvd1Jvb3QgPyAnUEFTUzogc2hhZG93Um9vdCBjcmVhdGVkIGlu
IGluamVjdGVkIGJ1bmRsZScgOiAnRkFJTCcpO1xuIgorICAgICAgICAgICAgLy8gVGVzdCAyCisg
ICAgICAgICAgICAiICAgIGFsZXJ0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NoYWRvdy1ob3N0
Jykuc2hhZG93Um9vdCA/ICdQQVNTOiBzaGFkb3dSb290IGNyZWF0ZWQgYnkgbm9ybWFsIHdvcmxk
JyA6ICdGQUlMJyk7XG4iCisgICAgICAgICAgICAvLyBUZXN0IDMKKyAgICAgICAgICAgICIgICAg
YWxlcnQod2luZG93W3F1ZXJ5TWV0aG9kTmFtZV0gPyAnUEFTUzogcXVlcnkgbWV0aG9kIGV4aXN0
cycgOiAnRkFJTCcpO1xuIgorICAgICAgICAgICAgLy8gVGVzdCA0CisgICAgICAgICAgICAiICAg
IGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd0ZXN0bm9ybWFsd29ybGQnKSk7XG4i
CisgICAgICAgICAgICAvLyBUZXN0IDUKKyAgICAgICAgICAgICIgICAgY29uc3QgcXVlcnlNZXRo
b2QgPSB3aW5kb3dbcXVlcnlNZXRob2ROYW1lXTtcbiIKKyAgICAgICAgICAgICIgICAgbGV0IHF1
ZXJ5UmVzdWx0ID0gQXJyYXkuZnJvbShxdWVyeU1ldGhvZChkb2N1bWVudCwgJ3NwYW4nKSk7XG4i
CisgICAgICAgICAgICAiICAgIGFsZXJ0KCdGb3VuZDonICsgcXVlcnlSZXN1bHQubWFwKChzcGFu
KSA9PiBzcGFuLnRleHRDb250ZW50KS5qb2luKCcsJykpO1xuIgorICAgICAgICAgICAgLy8gVGVz
dCA2CisgICAgICAgICAgICAiICAgIGNvbnN0IGlubmVySG9zdCA9IHF1ZXJ5TWV0aG9kKGRvY3Vt
ZW50LCAnaW5uZXItaG9zdCcpWzBdO1xuIgorICAgICAgICAgICAgIiAgICBxdWVyeVJlc3VsdCA9
IEFycmF5LmZyb20ocXVlcnlNZXRob2QoaW5uZXJIb3N0LCAnc3BhbicpKTtcbiIKKyAgICAgICAg
ICAgICIgICAgYWxlcnQoJ0ZvdW5kOicgKyBxdWVyeVJlc3VsdC5tYXAoKHNwYW4pID0+IHNwYW4u
dGV4dENvbnRlbnQpLmpvaW4oJywnKSk7XG4iCisgICAgICAgICAgICAifVxuIikpOwogICAgICAg
ICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoYnVuZGxlLCBwYWdlR3JvdXAsIHdvcmxkLCBzb3VyY2Uu
Z2V0KCksIDAsIDAsIDAsIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dLSW5qZWN0SW5BbGxG
cmFtZXMpOwogICAgIH0KIH07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY2xvc2VkLXNo
YWRvdy10cmVlLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2hhZG93LWhvc3Q+PHNwYW4+NTwvc3Bhbj48
c3BhbiBzbG90PSJiYXIiPjI8L3NwYW4+PC9zaGFkb3ctaG9zdD4KKzxzY3JpcHQ+Citjb25zdCBz
aGFkb3dSb290ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2hhZG93LWhvc3QnKS5hdHRhY2hT
aGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CitzaGFkb3dSb290LmlubmVySFRNTCA9IGAKKyAgICA8
c3Bhbj4xPC9zcGFuPgorICAgIDxpbm5lci1ob3N0PgorICAgICAgICA8c2xvdCBuYW1lPSJiYXIi
IHNsb3Q9ImZvbyI+PHNwYW4+RkFJTCAtIG5hbWVkIHNsb3QgZmFsbGJhY2s8L3NwYW4+PC9zbG90
PgorICAgICAgICA8c3Bhbj5GQUlMIC0gdW5hc3NpZ25lZCBjb250ZW50PC9zcGFuPgorICAgICAg
ICA8c3BhbiBzbG90PSJmb28iPjM8L3NwYW4+CisgICAgPC9pbm5lci1ob3N0PgorICAgIDxzbG90
PjxzcGFuPkZBSUwgLSBkZWZhdWx0IHNsb3QgZmFsbGJhY2s8L3NwYW4+PC9zbG90PgorICAgIDxz
cGFuPjY8L3NwYW4+YDsKK2NvbnN0IGlubmVySG9zdCA9IHNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rv
cignaW5uZXItaG9zdCcpOworaW5uZXJIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9
KS5pbm5lckhUTUwgPSBgCisgICAgPHNsb3QgbmFtZT0iZm9vIj48L3Nsb3Q+CisgICAgPHNwYW4+
NDwvc3Bhbj5gOworCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0ZXN0bm9ybWFsd29ybGQn
LCBmdW5jdGlvbiAoKSB7CisgICAgYWxlcnQod2luZG93LmNvbGxlY3RNYXRjaGluZ0VsZW1lbnRz
SW5GbGF0VHJlZSA/CisgICAgICAgICdGQUlMJyA6ICdQQVNTOiBxdWVyeSBtZXRob2Qgd2FzIG5v
dCBwcmVzZW50IGluIHRoZSBub3JtYWwgd29ybGQnKTsKK30pOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>