<?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>158471</bug_id>
          
          <creation_ts>2016-06-07 02:54:16 -0700</creation_ts>
          <short_desc>document.webkitFullscreenElement leaks elements inside a shadow tree</short_desc>
          <delta_ts>2016-12-09 14:06:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199983</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-07 02:54:16 -0700</bug_when>
    <thetext>We should update our fullscreen API per discussions on https://github.com/w3c/webcomponents/issues/180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246847</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-01 01:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/29040647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257979</commentid>
    <comment_count>2</comment_count>
      <attachid>296602</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-12-08 17:44:05 -0800</bug_when>
    <thetext>Created attachment 296602
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257980</commentid>
    <comment_count>3</comment_count>
      <attachid>296603</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-12-08 17:45:00 -0800</bug_when>
    <thetext>Created attachment 296603
Removed tabs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258021</commentid>
    <comment_count>4</comment_count>
      <attachid>296603</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-12-08 19:21:12 -0800</bug_when>
    <thetext>Comment on attachment 296603
Removed tabs

Attachment 296603 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2658636

New failing tests:
fast/shadow-dom/fullscreen-in-shadow-webkitCurrentFullScreenElement.html
fast/shadow-dom/fullscreen-in-shadow-fullscreenElement.html
fast/shadow-dom/fullscreen-in-slot-fullscreenElement.html
fast/shadow-dom/fullscreen-in-slot-webkitCurrentFullScreenElement.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258022</commentid>
    <comment_count>5</comment_count>
      <attachid>296615</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-12-08 19:21:18 -0800</bug_when>
    <thetext>Created attachment 296615
Archive of layout-test-results from ews121 for ios-simulator-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews121  Port: ios-simulator-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258027</commentid>
    <comment_count>6</comment_count>
      <attachid>296619</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-12-08 19:25:30 -0800</bug_when>
    <thetext>Created attachment 296619
Skip the test on iOS WK2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258206</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-12-09 11:30:04 -0800</bug_when>
    <thetext>Ping reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258281</commentid>
    <comment_count>8</comment_count>
      <attachid>296619</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-12-09 13:34:17 -0800</bug_when>
    <thetext>Comment on attachment 296619
Skip the test on iOS WK2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258319</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-12-09 14:06:58 -0800</bug_when>
    <thetext>Committed r209628: &lt;http://trac.webkit.org/changeset/209628&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296602</attachid>
            <date>2016-12-08 17:44:05 -0800</date>
            <delta_ts>2016-12-08 17:44:57 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-158471-20161208174324.patch</filename>
            <type>text/plain</type>
            <size>35585</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTEyLTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LndlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50IGxlYWtzIGVsZW1lbnRzIGluc2lkZSBhIHNoYWRvdyB0cmVlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5
IGNhbGxpbmcgdGhlIG5ld2x5IGFkZGVkIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlIGluIHdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudEZvckJpbmRpbmdzCisgICAgICAgIGFuZCB3ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudEZvckJpbmRpbmcuCisKKyAgICAgICAgVGhlIHNwZWNpZmljYXRp
b24gKGh0dHBzOi8vZnVsbHNjcmVlbi5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb2N1bWVudC1mdWxs
c2NyZWVuZWxlbWVudCkgdXNlcyAidGhlIHJlc3VsdCBvZgorCXJldGFyZ2V0aW5nIGZ1bGxzY3Jl
ZW4gZWxlbWVudCIgYW5kIHJldHVybnMgbnVsbCBpZiB0aGUgcmVzdWx0IGlzIG5vdCBpbiB0aGUg
c2FtZSB0cmVlIGFzIHRoZSBjb250ZXh0IG9iamVjdC4KKworICAgICAgICBUaGlzIGlzIGVxdWl2
YWxlbnQgdG8gdGhlIGFsZ29yaXRobSBpbXBsZW1lbnRlZCBieSBhbmNlc3RvckVsZW1lbnRJblRo
aXNTY29wZS4gT2JzZXJ2ZSB0aGF0IHRoZSByZXRhcmdldGluZworICAgICAgICBhbGdvcml0aG0g
KGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jcmV0YXJnZXQpIGZpbmRzIHRoZSBsb3dlc3Qg
Y29tbW9uIHRyZWUgc2NvcGUgb2YgdGhlIHJldGFyZ2V0ZWUgYW5kCisgICAgICAgIHRoZSBjb250
ZXh0IG9iamVjdC4gVGhlcmUgYXJlIHR3byBjYXNlcyB0byBjb25zaWRlci4KKworICAgICAgICAx
LiBUaGUgY29udGV4dCBvYmplY3QncyB0cmVlIHNjb3BlIGlzIHRoZSBsb3dlc3QgY29tbW9uIHRy
ZWUgc2NvcGU6IEluIHRoaXMgY2FzZSwgYW4gYW5jZXN0b3Igc2hhZG93IGhvc3Qgb3IKKyAgICAg
ICAgdGhlIHJldGFyZ2V0ZWUgaXRzZWxmIGlzIGluIHRoaXMgdHJlZSBzY29wZS4gSXQncyBzdWZm
aWNpZW50IHRyYXZlcnNlIGV2ZXJ5IHNoYWRvdyBob3N0IHRvIGZpbmQgdGhlIG9uZSB0aGF0Cisg
ICAgICAgIHJlc2lkZXMgaW4gdGhlIHNhbWUgdHJlZSBzY29wZSBhcyB0aGUgY29udGV4dCBvYmpl
Y3QuIFRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgYW5jZXN0b3JFbGVtZW50SW5UaGlzU2NvcGUgZG9l
cy4KKworICAgICAgICAyLiBUaGUgY29udGV4dCBvYmplY3QncyB0cmVlIHNjb3BlIGlzIG5vdCB0
aGUgbG93ZXN0IGNvbW1vbiB0cmVlIHNjb3BlOiBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZXh0IG9i
amVjdCBpcworICAgICAgICBpbnNpZGUgYSBzaGFkb3cgdHJlZSB3aG9zZSBhbmNlc3RvciBzaGFk
b3cgaG9zdCBpcyBpbiB0aGUgbG93ZXN0IGNvbW1vbiB0cmVlIHNjb3BlLiBJbiB0aGlzIGNhc2Us
IHJldGFyZ2V0aW5nCisgICAgICAgIGFsZ29yaXRobSBmaW5kcyBhIG5vZGUgd2hpY2ggaXMgbm90
IGluIHRoZSBzYW1lIHRyZWUgYXMgdGhlIGNvbnRleHQgb2JqZWN0LiBUaHVzLCB0aGUgcmVzdWx0
IGlzIG51bGwuCisgICAgICAgIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlIHRyYXZlcmVzIGFu
Y2VzdG9yIHNoYWRvdyBob3N0cyBhbmQgcmV0dXJucyBudWxsIGlmIG5vIHNoYWRvdyBob3N0J3Mg
dHJlZSBzY29wZQorICAgICAgICBtYXRjaGVzIHRoYXQgb2YgdGhlIGNvbnRleHQgb2JqZWN0J3Mg
dHJlZSBzY29wZS4gVGh1cywgaXQgd291bGQgcmV0dXJuIG51bGwgaW4gdGhpcyBjYXNlIGFzIGRl
c2lyZWQuCisKKyAgICAgICAgQWxzbyByZW5hbWVkIFRyZWVTY29wZTo6Zm9jdXNlZEVsZW1lbnQg
dG8gZm9jdXNlZEVsZW1lbnRJblNjb3BlIGZvciBjbGFyaXR5IHNpbmNlIERvY3VtZW50IHdoaWNo
IGluaGVyaXRzCisgICAgICAgIGZyb20gVHJlZVNjb3BlIGFsc28gaGFzIGEgZGlzdGluY3QgbWVt
YmVyIGZ1bmN0aW9uIG5hbWVkIGZvY3VzZWRFbGVtZW50IGNhbGxlZCBieSBUcmVlU2NvcGU6OmZv
Y3VzZWRFbGVtZW50LAorCWFuZCB1c2VkIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlIHNpbmNl
IGl0IHVzZXMgdGhlIHNhbWUgYWxnb3JpdGhtLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3NoYWRv
dy1kb20vYWN0aXZlRWxlbWVudC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhZG93LWRvbS9ibHVyLW9uLXNoYWRvdy1ob3N0
LXdpdGgtZm9jdXNlZC1zaGFkb3ctY29udGVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3No
YWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctZnVsbHNjcmVlbkVsZW1lbnQuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LXdlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1k
b20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qtd2Via2l0Q3VycmVudEZ1bGxT
Y3JlZW5FbGVtZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFjdGl2ZUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0RnVsbHNjcmVlbkVsZW1lbnRGb3JCaW5kaW5ncyk6IEFkZGVkLgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Ymx1cik6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFjdGl2ZUVsZW1lbnQpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphbmNlc3Rvck5v
ZGVJblRoaXNTY29wZSk6IFJlbmFtZWQgZnJvbSBhbmNlc3RvckluVGhpc1Njb3BlIGZvciBjbGFy
aXR5LgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphbmNlc3RvckVsZW1lbnRJblRoaXNT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmZvY3VzZWRFbGVtZW50SW5TY29w
ZSk6IFJlbmFtZWQgZnJvbSBmb2N1c2VkRWxlbWVudCB0byBkaXNhbWJpZ3VhdGUgaXQgZnJvbSBE
b2N1bWVudCdzCisgICAgICAgIGZvY3VzZWRFbGVtZW50LgorICAgICAgICAqIGRvbS9UcmVlU2Nv
cGUuaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YWRqdXN0UG9zaXRpb25Gb3JFbmQpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0
UG9zaXRpb25Gb3JTdGFydCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wYXJlUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
cnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdCk6CisgICAgICAgICog
cGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0aW9uU2hhZG93
QW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3Rl
ZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3RlZE9m
ZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdCk6IEFk
ZGVkIGEgRklYTUUgaGVyZSBzaW5jZSB0aGlzIGlzIGNsZWFybHkgd3JvbmcgZm9yCisgICAgICAg
IHNoYWRvdyB0cmVlcyBjcmVhdGVkIGJ5IGF1dGhvciBzY3JpcHRzLgorCiAyMDE2LTEyLTA4ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dlYklETF0gUmVtb3ZlIGN1
c3RvbSBiaW5kaW5ncyBmb3IgR2VvbG9jYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gMjA5NTc2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzU0NSw3ICszNTQ1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3Zl
Rm9jdXNlZE5vZGVPZlN1YnRyZQogICAgIGlmICghbV9mb2N1c2VkRWxlbWVudCB8fCBwYWdlQ2Fj
aGVTdGF0ZSgpICE9IE5vdEluUGFnZUNhY2hlKSAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgaW4gdGhl
IHBhZ2UgY2FjaGUsIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjbGVhciBvdXQgdGhlIGZvY3VzZWQg
bm9kZS4KICAgICAgICAgcmV0dXJuOwogCi0gICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBu
b2RlLnRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50KCk7CisgICAgRWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQgPSBub2RlLnRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50SW5TY29wZSgpOwogICAgIGlm
ICghZm9jdXNlZEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTY3NzQsNyArNjc3
NCw3IEBAIGJvb2wgRG9jdW1lbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWMKIAogRWxlbWVu
dCogRG9jdW1lbnQ6OmFjdGl2ZUVsZW1lbnQoKQogewotICAgIGlmIChFbGVtZW50KiBlbGVtZW50
ID0gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnQoKSkKKyAgICBpZiAoRWxlbWVudCogZWxlbWVu
dCA9IHRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50SW5TY29wZSgpKQogICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICByZXR1cm4gYm9keU9yRnJhbWVzZXQoKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4OCw3ICsxMDg4LDggQEAgcHVibGljOgogICAgIGJv
b2wgd2Via2l0SXNGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVu
dC5nZXQoKTsgfQogICAgIGJvb2wgd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSAmJiBtX2FyZUtleXNF
bmFibGVkSW5GdWxsU2NyZWVuOyB9CiAgICAgRWxlbWVudCogd2Via2l0Q3VycmVudEZ1bGxTY3Jl
ZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKTsgfQot
ICAgIAorICAgIEVsZW1lbnQqIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudEZvckJpbmRp
bmdzKCkgY29uc3QgeyByZXR1cm4gYW5jZXN0b3JFbGVtZW50SW5UaGlzU2NvcGUod2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpOyB9CisKICAgICBlbnVtIEZ1bGxTY3JlZW5DaGVja1R5
cGUgewogICAgICAgICBFbmZvcmNlSUZyYW1lQWxsb3dGdWxsU2NyZWVuUmVxdWlyZW1lbnQsCiAg
ICAgICAgIEV4ZW1wdElGcmFtZUFsbG93RnVsbFNjcmVlblJlcXVpcmVtZW50LApAQCAtMTExNSw2
ICsxMTE2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3ZWJraXRGdWxs
c2NyZWVuRW5hYmxlZCgpIGNvbnN0OwogICAgIEVsZW1lbnQqIHdlYmtpdEZ1bGxzY3JlZW5FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gIW1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5pc0VtcHR5KCkg
PyBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2subGFzdCgpLmdldCgpIDogbnVsbHB0cjsgfQorICAg
IEVsZW1lbnQqIHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJl
dHVybiBhbmNlc3RvckVsZW1lbnRJblRoaXNTY29wZSh3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgp
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDIwOTU3NikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE0Mywx
MiArMTQzLDEyIEBACiAgICAgLy8gTW96aWxsYSB2ZXJzaW9uCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIHdlYmtpdEZ1bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZDsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7CisgICAg
W0ltcGxlbWVudGVkQXM9d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Rm9yQmluZGluZ3Nd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dDsKICAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKIAogICAgIC8vIFczQyB2ZXJz
aW9uCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RnVsbHNjcmVlbkVuYWJs
ZWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHdlYmtpdEZ1bGxzY3JlZW5FbGVt
ZW50OworICAgIFtJbXBsZW1lbnRlZEFzPXdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50Rm9yQmluZGlu
Z3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudDsK
ICAgICB2b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjA5NTc2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM4LDcgKzI0MzgsNyBAQCB2b2lkIEVsZW1l
bnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShTZWxlCiB2b2lkIEVsZW1lbnQ6OmJsdXIoKQogewog
ICAgIGNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0ZSgpOwotICAgIGlmICh0cmVlU2NvcGUoKS5m
b2N1c2VkRWxlbWVudCgpID09IHRoaXMpIHsKKyAgICBpZiAodHJlZVNjb3BlKCkuZm9jdXNlZEVs
ZW1lbnRJblNjb3BlKCkgPT0gdGhpcykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9s
bGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnQoMCwgZnJhbWUpOwogICAgICAgICBlbHNlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2
YXRlOgogCiBpbmxpbmUgRWxlbWVudCogU2hhZG93Um9vdDo6YWN0aXZlRWxlbWVudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50KCk7CisgICAgcmV0dXJu
IHRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50SW5TY29wZSgpOwogfQogCiBpbmxpbmUgU2hhZG93
Um9vdCogTm9kZTo6c2hhZG93Um9vdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAkocmV2aXNpb24gMjA5NTc2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCBOb2RlJiBUcmVlU2NvcGU6OnJl
dGFyZ2V0VG9TY29wZShOb2RlJiBuCiAgICAgcmV0dXJuICpzaGFkb3dSb290SW5Mb3dlc3RDb21t
b25UcmVlU2NvcGUuaG9zdCgpOwogfQogCi1Ob2RlKiBUcmVlU2NvcGU6OmFuY2VzdG9ySW5UaGlz
U2NvcGUoTm9kZSogbm9kZSkgY29uc3QKK05vZGUqIFRyZWVTY29wZTo6YW5jZXN0b3JOb2RlSW5U
aGlzU2NvcGUoTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnNoYWRvd0hvc3QoKSkgewogICAgICAgICBpZiAoJm5vZGUtPnRyZWVTY29wZSgpID09IHRo
aXMpCkBAIC0yMDYsNiArMjA2LDE3IEBAIE5vZGUqIFRyZWVTY29wZTo6YW5jZXN0b3JJblRoaXNT
Y29wZShOb2QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorRWxlbWVudCogVHJlZVNjb3BlOjph
bmNlc3RvckVsZW1lbnRJblRoaXNTY29wZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAg
IGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+c2hhZG93SG9zdCgpKSB7CisgICAg
ICAgIGlmICgmZWxlbWVudC0+dHJlZVNjb3BlKCkgPT0gdGhpcykKKyAgICAgICAgICAgIHJldHVy
biBlbGVtZW50OworICAgICAgICBpZiAoIWVsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
IHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYgaW1hZ2VNYXApCiB7
CiAgICAgQXRvbWljU3RyaW5nSW1wbCogbmFtZSA9IGltYWdlTWFwLmdldE5hbWUoKS5pbXBsKCk7
CkBAIC0zNjQsMjggKzM3NSwxNSBAQCBzdGF0aWMgRWxlbWVudCogZm9jdXNlZEZyYW1lT3duZXJF
bGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVsZW1lbnQqIFRyZWVTY29wZTo6Zm9j
dXNlZEVsZW1lbnQoKQorRWxlbWVudCogVHJlZVNjb3BlOjpmb2N1c2VkRWxlbWVudEluU2NvcGUo
KQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fcm9vdE5vZGUuZG9jdW1lbnQoKTsKICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsKIAogICAgIGlm
ICghZWxlbWVudCAmJiBkb2N1bWVudC5wYWdlKCkpCiAgICAgICAgIGVsZW1lbnQgPSBmb2N1c2Vk
RnJhbWVPd25lckVsZW1lbnQoZG9jdW1lbnQucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkRnJhbWUoKSwgZG9jdW1lbnQuZnJhbWUoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSA9ICZlbGVtZW50LT50
cmVlU2NvcGUoKTsKLSAgICBSRUxFQVNFX0FTU0VSVCgmZG9jdW1lbnQgPT0gJnRyZWVTY29wZS0+
ZG9jdW1lbnRTY29wZSgpKTsKLSAgICB3aGlsZSAodHJlZVNjb3BlICE9IHRoaXMgJiYgdHJlZVNj
b3BlICE9ICZkb2N1bWVudCkgewotICAgICAgICBhdXRvJiByb290Tm9kZSA9IHRyZWVTY29wZS0+
cm9vdE5vZGUoKTsKLSAgICAgICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KHJvb3ROb2RlKSkKLSAgICAg
ICAgICAgIGVsZW1lbnQgPSBkb3duY2FzdDxTaGFkb3dSb290Pihyb290Tm9kZSkuaG9zdCgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgdHJlZVNj
b3BlID0gJmVsZW1lbnQtPnRyZWVTY29wZSgpOwotICAgIH0KLSAgICBpZiAodGhpcyAhPSB0cmVl
U2NvcGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBlbGVtZW50OworCisg
ICAgcmV0dXJuIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlKGVsZW1lbnQpOwogfQogCiBzdGF0
aWMgdm9pZCBsaXN0VHJlZVNjb3BlcyhOb2RlKiBub2RlLCBWZWN0b3I8VHJlZVNjb3BlKiwgNT4m
IHRyZWVTY29wZXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCShyZXZpc2lvbiAyMDk1NzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIFRyZWVTY29wZSogcGFyZW50VHJlZVNjb3BlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0KICAgICB2b2lkIHNldFBhcmVudFRyZWVT
Y29wZShUcmVlU2NvcGUmKTsKIAotICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50KCk7CisgICAg
RWxlbWVudCogZm9jdXNlZEVsZW1lbnRJblNjb3BlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxl
bWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZ2V0QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0OwpAQCAtNzIsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAgLy8gaHR0
cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNyZXRhcmdldAogICAgIE5vZGUmIHJldGFyZ2V0VG9T
Y29wZShOb2RlJikgY29uc3Q7CiAKLSAgICBOb2RlKiBhbmNlc3RvckluVGhpc1Njb3BlKE5vZGUq
KSBjb25zdDsKKyAgICBOb2RlKiBhbmNlc3Rvck5vZGVJblRoaXNTY29wZShOb2RlKikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogYW5jZXN0b3JFbGVtZW50SW5UaGlzU2NvcGUo
RWxlbWVudCopIGNvbnN0OwogCiAgICAgdm9pZCBhZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYp
OwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjA5NTc2
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIHN0YXRpYyBQb3NpdGlvbiBhZGp1c3RQb3NpdGlv
bkZvckVuZChjb24KIAogICAgIEFTU0VSVCgmY3VycmVudFBvc2l0aW9uLmNvbnRhaW5lck5vZGUo
KS0+dHJlZVNjb3BlKCkgIT0gJnRyZWVTY29wZSk7CiAKLSAgICBpZiAoTm9kZSogYW5jZXN0b3Ig
PSB0cmVlU2NvcGUuYW5jZXN0b3JJblRoaXNTY29wZShjdXJyZW50UG9zaXRpb24uY29udGFpbmVy
Tm9kZSgpKSkgeworICAgIGlmIChOb2RlKiBhbmNlc3RvciA9IHRyZWVTY29wZS5hbmNlc3Rvck5v
ZGVJblRoaXNTY29wZShjdXJyZW50UG9zaXRpb24uY29udGFpbmVyTm9kZSgpKSkgewogICAgICAg
ICBpZiAoYW5jZXN0b3ItPmNvbnRhaW5zKHN0YXJ0Q29udGFpbmVyTm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb25BZnRlck5vZGUoYW5jZXN0b3IpOwogICAgICAgICByZXR1cm4gcG9z
aXRpb25CZWZvcmVOb2RlKGFuY2VzdG9yKTsKQEAgLTQ5MSw3ICs0OTEsNyBAQCBzdGF0aWMgUG9z
aXRpb24gYWRqdXN0UG9zaXRpb25Gb3JTdGFydChjCiAKICAgICBBU1NFUlQoJmN1cnJlbnRQb3Np
dGlvbi5jb250YWluZXJOb2RlKCktPnRyZWVTY29wZSgpICE9ICZ0cmVlU2NvcGUpOwogICAgIAot
ICAgIGlmIChOb2RlKiBhbmNlc3RvciA9IHRyZWVTY29wZS5hbmNlc3RvckluVGhpc1Njb3BlKGN1
cnJlbnRQb3NpdGlvbi5jb250YWluZXJOb2RlKCkpKSB7CisgICAgaWYgKE5vZGUqIGFuY2VzdG9y
ID0gdHJlZVNjb3BlLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKGN1cnJlbnRQb3NpdGlvbi5jb250
YWluZXJOb2RlKCkpKSB7CiAgICAgICAgIGlmIChhbmNlc3Rvci0+Y29udGFpbnMoZW5kQ29udGFp
bmVyTm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25CZWZvcmVOb2RlKGFuY2VzdG9y
KTsKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQWZ0ZXJOb2RlKGFuY2VzdG9yKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODMsMTIgKzgzLDEyIEBAIGludCBjb21wYXJlUG9zaXRpb25zKGNvbnN0IFBvc2l0aW9uJiBhLCAK
ICAgICBpZiAoIWNvbW1vblNjb3BlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE5vZGUqIG5v
ZGVBID0gY29tbW9uU2NvcGUtPmFuY2VzdG9ySW5UaGlzU2NvcGUoYS5jb250YWluZXJOb2RlKCkp
OworICAgIE5vZGUqIG5vZGVBID0gY29tbW9uU2NvcGUtPmFuY2VzdG9yTm9kZUluVGhpc1Njb3Bl
KGEuY29udGFpbmVyTm9kZSgpKTsKICAgICBBU1NFUlQobm9kZUEpOwogICAgIGJvb2wgaGFzRGVz
Y2VuZGVudEEgPSBub2RlQSAhPSBhLmNvbnRhaW5lck5vZGUoKTsKICAgICBpbnQgb2Zmc2V0QSA9
IGhhc0Rlc2NlbmRlbnRBID8gMCA6IGEuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpOwog
Ci0gICAgTm9kZSogbm9kZUIgPSBjb21tb25TY29wZS0+YW5jZXN0b3JJblRoaXNTY29wZShiLmNv
bnRhaW5lck5vZGUoKSk7CisgICAgTm9kZSogbm9kZUIgPSBjb21tb25TY29wZS0+YW5jZXN0b3JO
b2RlSW5UaGlzU2NvcGUoYi5jb250YWluZXJOb2RlKCkpOwogICAgIEFTU0VSVChub2RlQik7CiAg
ICAgYm9vbCBoYXNEZXNjZW5kZW50QiA9IG5vZGVCICE9IGIuY29udGFpbmVyTm9kZSgpOwogICAg
IGludCBvZmZzZXRCID0gaGFzRGVzY2VuZGVudEIgPyAwIDogYi5jb21wdXRlT2Zmc2V0SW5Db250
YWluZXJOb2RlKCk7CkBAIC0yOTIsNyArMjkyLDcgQEAgUG9zaXRpb24gZmlyc3RFZGl0YWJsZVBv
c2l0aW9uQWZ0ZXJQb3NpdAogICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHBvc2l0aW9uOwogCiAg
ICAgaWYgKCZwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT50cmVlU2NvcGUoKSAhPSAmaGlnaGVz
dFJvb3QtPnRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGF1dG8qIHNoYWRvd0FuY2VzdG9yID0gaGln
aGVzdFJvb3QtPnRyZWVTY29wZSgpLmFuY2VzdG9ySW5UaGlzU2NvcGUocG9zaXRpb24uZGVwcmVj
YXRlZE5vZGUoKSk7CisgICAgICAgIGF1dG8qIHNoYWRvd0FuY2VzdG9yID0gaGlnaGVzdFJvb3Qt
PnRyZWVTY29wZSgpLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKHBvc2l0aW9uLmRlcHJlY2F0ZWRO
b2RlKCkpOwogICAgICAgICBpZiAoIXNoYWRvd0FuY2VzdG9yKQogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKIApAQCAtMzIwLDcgKzMyMCw3IEBAIFBvc2l0aW9uIGxhc3RFZGl0YWJsZVBvc2l0aW9u
QmVmb3JlUG9zaXQKICAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBwb3NpdGlvbjsKIAogICAgIGlm
ICgmcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+dHJlZVNjb3BlKCkgIT0gJmhpZ2hlc3RSb290
LT50cmVlU2NvcGUoKSkgewotICAgICAgICBhdXRvKiBzaGFkb3dBbmNlc3RvciA9IGhpZ2hlc3RS
b290LT50cmVlU2NvcGUoKS5hbmNlc3RvckluVGhpc1Njb3BlKHBvc2l0aW9uLmRlcHJlY2F0ZWRO
b2RlKCkpOworICAgICAgICBhdXRvKiBzaGFkb3dBbmNlc3RvciA9IGhpZ2hlc3RSb290LT50cmVl
U2NvcGUoKS5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgp
KTsKICAgICAgICAgaWYgKCFzaGFkb3dBbmNlc3RvcikKICAgICAgICAgICAgIHJldHVybiB7IH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIwOTU3
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgTm9kZSogc2VsZWN0aW9uU2hhZG93QW5jZXN0b3Io
RnJhCiAgICAgaWYgKCFub2RlLT5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAvLyBGSVhNRTogVW5jbGVhciBvbiB3aHkgdGhpcyBuZWVkcyB0byBiZSB0aGUg
cG9zc2libHkgbnVsbCBmcmFtZS5kb2N1bWVudCgpIGluc3RlYWQgb2YgdGhlIG5ldmVyIG51bGwg
bm9kZS0+ZG9jdW1lbnQoKS4KLSAgICByZXR1cm4gZnJhbWUuZG9jdW1lbnQoKS0+YW5jZXN0b3JJ
blRoaXNTY29wZShub2RlKTsKKyAgICByZXR1cm4gZnJhbWUuZG9jdW1lbnQoKS0+YW5jZXN0b3JO
b2RlSW5UaGlzU2NvcGUobm9kZSk7CiB9CiAKIERPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKEZy
YW1lJiBmcmFtZSkKQEAgLTQzNiw3ICs0MzYsNyBAQCBOb2RlKiBET01TZWxlY3Rpb246OnNoYWRv
d0FkanVzdGVkTm9kZShjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byogY29u
dGFpbmVyTm9kZSA9IHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBhdXRvKiBhZGp1c3Rl
ZE5vZGUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hbmNlc3RvckluVGhpc1Njb3BlKGNvbnRhaW5l
ck5vZGUpOworICAgIGF1dG8qIGFkanVzdGVkTm9kZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmFu
Y2VzdG9yTm9kZUluVGhpc1Njb3BlKGNvbnRhaW5lck5vZGUpOwogICAgIGlmICghYWRqdXN0ZWRO
b2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDUyLDcgKzQ1Miw3IEBAIHVuc2ln
bmVkIERPTVNlbGVjdGlvbjo6c2hhZG93QWRqdXN0ZWRPZmYKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBhdXRvKiBjb250YWluZXJOb2RlID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAg
IGF1dG8qIGFkanVzdGVkTm9kZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmFuY2VzdG9ySW5UaGlz
U2NvcGUoY29udGFpbmVyTm9kZSk7CisgICAgYXV0byogYWRqdXN0ZWROb2RlID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUoY29udGFpbmVyTm9kZSk7CiAgICAg
aWYgKCFhZGp1c3RlZE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2OCw4ICs2NjgsOSBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNl
ZFRlCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIEZJWE1F
OiBUaGlzIG1vdmVzIG91dCBvZiBhIGF1dGhvciBzaGFkb3cgdHJlZS4KICAgICBpZiAocmVxdWVz
dC5kaXNhbGxvd3NVc2VyQWdlbnRTaGFkb3dDb250ZW50KCkpCi0gICAgICAgIG5vZGUgPSBub2Rl
LT5kb2N1bWVudCgpLmFuY2VzdG9ySW5UaGlzU2NvcGUobm9kZSk7CisgICAgICAgIG5vZGUgPSBu
b2RlLT5kb2N1bWVudCgpLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKG5vZGUpOwogCiAgICAgbXV0
YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKS5hZGQobm9kZSk7CiAKQEAgLTY4OCw4ICs2ODksOSBA
QCBib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlCiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIG1vdmVzIG91dCBv
ZiBhIGF1dGhvciBzaGFkb3cgdHJlZS4KICAgICBpZiAocmVxdWVzdC5kaXNhbGxvd3NVc2VyQWdl
bnRTaGFkb3dDb250ZW50KCkpCi0gICAgICAgIG5vZGUgPSBub2RlLT5kb2N1bWVudCgpLmFuY2Vz
dG9ySW5UaGlzU2NvcGUobm9kZSk7CisgICAgICAgIG5vZGUgPSBub2RlLT5kb2N1bWVudCgpLmFu
Y2VzdG9yTm9kZUluVGhpc1Njb3BlKG5vZGUpOwogCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RS
ZXN1bHQoKS5hZGQobm9kZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTU4
MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDE2LTEyLTA4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIGRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50IGxlYWtzIGVsZW1lbnRz
IGluc2lkZSBhIHNoYWRvdyB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTg0NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgdGhlIEFQSSBmb3IgYmluZGluZ3MgdG8gYXZvaWQgZXhwb3Npbmcg
bm9kZXMgaW5zaWRlIGEgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQu
bW06CisgICAgICAgICgtW0RPTURvY3VtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dF0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudF0pOgor
CiAyMDE2LTEyLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
RW5hYmxlIFNoYXJlZEFycmF5QnVmZmVyLCByZW1vdmUgdGhlIGZsYWcKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9ET00vRE9NRG9jdW1lbnQubW0JKHJldmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYxLDcgKzM2MSw3
IEBAIC0gKEJPT0wpd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGwKIC0gKERPTUVsZW1l
bnQgKil3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkpOworICAgIHJldHVybiBraXQoV1RG
OjpnZXRQdHIoSU1QTC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Rm9yQmluZGluZ3Mo
KSkpOwogfQogCiAtIChCT09MKXdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkCkBAIC0zNzMsNyArMzcz
LDcgQEAgLSAoQk9PTCl3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZAogLSAoRE9NRWxlbWVudCAqKXdl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+d2Via2l0RnVsbHNj
cmVlbkVsZW1lbnQoKSkpOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+d2Via2l0
RnVsbHNjcmVlbkVsZW1lbnRGb3JCaW5kaW5ncygpKSk7CiB9CiAKICNlbmRpZgpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA5NTc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjggQEAKKzIwMTYtMTItMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQgbGVha3Mg
ZWxlbWVudHMgaW5zaWRlIGEgc2hhZG93IHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBjYWxsaW5nIHdlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50IGFuZCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgb24gYSBmdWxs
c2NyZWVuZWQgZWxlbWVudAorICAgICAgICB0byBtYWtlIHN1cmUgdGhleSByZXR1cm4gdGhlIHNo
YWRvdyBob3N0IGluc3RlYWQuCisKKyAgICAgICAgQWxzbyBhZGRlZCB0d28gdW5yZWxhdGVkIHRl
c3QgY2FzZXMgZm9yIHRlbXBvcmFsIHJlZ3Jlc3Npb25zIEkgaW50cm9kdWNlZCB3aGlsZSB3b3Jr
aW5nIG9uIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vYWN0aXZlRWxl
bWVudC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3Vz
ZWQtZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vYmx1ci1vbi1zaGFkb3ctaG9zdC13aXRoLWZvY3VzZWQtc2hhZG93LWNvbnRl
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vYmx1ci1v
bi1zaGFkb3ctaG9zdC13aXRoLWZvY3VzZWQtc2hhZG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LWZ1bGxzY3JlZW5F
bGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Z1
bGxzY3JlZW4taW4tc2hhZG93LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRv
dy1kb20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNs
b3QtZnVsbHNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qtd2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC13ZWJraXRDdXJyZW50RnVsbFNjcmVl
bkVsZW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTYtMTItMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBSZW1vdmUgY3VzdG9tIGJpbmRpbmdzIGZvciBH
ZW9sb2NhdGlvbgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1l
bnQtZm9yLWZvY3VzZWQtZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9y
LWZvY3VzZWQtZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZv
Y3VzZWQtZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgU2hhZG93Um9vdC5hY3RpdmVFbGVtZW50IG11c3Qg
cmV0dXJuIG51bGwgdGhlIGZvY3VzZWQgZWxlbWVudCBpcyBpbiBhbm90aGVyIHNoYWRvdyB0cmVl
IHdoZW4gYm90aCBzaGFkb3cgcm9vdHMgYXJlIG9wZW4uIAorUEFTUyBTaGFkb3dSb290LmFjdGl2
ZUVsZW1lbnQgbXVzdCByZXR1cm4gbnVsbCB0aGUgZm9jdXNlZCBlbGVtZW50IGlzIGluIGFub3Ro
ZXIgc2hhZG93IHRyZWUgd2hlbiBib3RoIHNoYWRvdyByb290cyBhcmUgY2xvc2VkLiAKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3VzZWQt
ZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9hY3RpdmVFbGVtZW50LWZvci1mb2N1c2VkLWVsZW1lbnQtaW4tYW5v
dGhlci1zaGFkb3cuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vYWN0aXZlRWxlbWVudC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBo
cmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IlNoYWRvd1Jvb3QncyAiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vdzNjLmdp
dGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNleHRlbnNpb25zLXRvLWV2ZW50LWlu
dGVyZmFjZSI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9ldmVudC1wYXRoLXRlc3QtaGVs
cGVycy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0QWN0aXZlRWxlbWVudFdpdGhGb2N1c2VkRWxlbWVu
dEluQW5vdGhlclNoYWRvdyhtb2RlKSB7CisgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAg
IGNvbnN0IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChob3N0KTsKKyAgICAgICAgY29uc3Qgc2hhZG93Um9vdCA9
IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgY29uc3QgaW5wdXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgICAgICBzaGFkb3dSb290LmFw
cGVuZENoaWxkKGlucHV0KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2
ZUVsZW1lbnQsIG51bGwpOworICAgICAgICBpbnB1dC5mb2N1cygpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCwgaW5wdXQpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOworCisgICAgICAgIGNvbnN0IGFu
b3RoZXJIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoYW5vdGhlckhvc3QpOworICAgICAgICBjb25zdCBhbm90aGVy
U2hhZG93Um9vdCA9IGFub3RoZXJIb3N0LmF0dGFjaFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7Cisg
ICAgICAgIGNvbnN0IGFub3RoZXJJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0
Jyk7CisgICAgICAgIGFub3RoZXJTaGFkb3dSb290LmFwcGVuZENoaWxkKGFub3RoZXJJbnB1dCk7
CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyU2hhZG93Um9vdC5hY3RpdmVFbGVtZW50
LCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQs
IGlucHV0KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBo
b3N0KTsKKworICAgICAgICBhbm90aGVySW5wdXQuZm9jdXMoKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhbm90aGVyU2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBhbm90aGVySW5wdXQpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCwgbnVsbCk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgYW5vdGhlckhvc3QpOwor
CisgICAgfSwgJ1NoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCBtdXN0IHJldHVybiBudWxsIHRoZSBm
b2N1c2VkIGVsZW1lbnQgaXMgaW4gYW5vdGhlciBzaGFkb3cgdHJlZSB3aGVuIGJvdGggc2hhZG93
IHJvb3RzIGFyZSAnICsgbW9kZSArICcuJyk7Cit9CisKK3Rlc3RBY3RpdmVFbGVtZW50V2l0aEZv
Y3VzZWRFbGVtZW50SW5Bbm90aGVyU2hhZG93KCdvcGVuJyk7Cit0ZXN0QWN0aXZlRWxlbWVudFdp
dGhGb2N1c2VkRWxlbWVudEluQW5vdGhlclNoYWRvdygnY2xvc2VkJyk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2JsdXIt
b24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vYmx1ci1vbi1zaGFkb3ct
aG9zdC13aXRoLWZvY3VzZWQtc2hhZG93LWNvbnRlbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ibHVyLW9uLXNoYWRvdy1ob3N0LXdp
dGgtZm9jdXNlZC1zaGFkb3ctY29udGVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMiBAQAorVGVzdCB0aGF0IGNhbGxpbmcgYmx1cigpIG9uIGEgc2hhZG93IGhvc3Qg
b2YgYSBmb2N1c2VkIGVsZW1lbnQgY2xlYXJzIHRoZSBmb2N1cy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQgPSBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlu
cHV0Iik7IGlucHV0LmZvY3VzKCk7IHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCBpcyBpbnB1dAor
UEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIHNoYWRvd0hvc3QKK1BBU1Mgc2hhZG93SG9z
dC5ibHVyKCk7IHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCBpcyBudWxsCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2JsdXItb24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1j
b250ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Js
dXItb24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50Lmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2JsdXItb24tc2hhZG93LWhv
c3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iaG9z
dCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBjYWxsaW5nIGJsdXIoKSBv
biBhIHNoYWRvdyBob3N0IG9mIGEgZm9jdXNlZCBlbGVtZW50IGNsZWFycyB0aGUgZm9jdXMuJyk7
CisKK2xldCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKK2xl
dCBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7
CitzaGFkb3dSb290LmlubmVySFRNTCA9IGA8aW5wdXQ+YDsKKworc2hvdWxkQmUoJ2lucHV0ID0g
c2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOyBpbnB1dC5mb2N1cygpOyBzaGFkb3dS
b290LmFjdGl2ZUVsZW1lbnQnLCAnaW5wdXQnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5hY3RpdmVF
bGVtZW50JywgJ3NoYWRvd0hvc3QnKTsKK3Nob3VsZEJlKCdzaGFkb3dIb3N0LmJsdXIoKTsgc2hh
ZG93Um9vdC5hY3RpdmVFbGVtZW50JywgJ251bGwnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LWZ1bGxzY3JlZW5FbGVtZW50
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
ZnVsbHNjcmVlbi1pbi1zaGFkb3ctZnVsbHNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNo
YWRvdy1mdWxsc2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMCBAQAorVGVzdCB0aGF0IHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50IHJldGFyZ2V0cyB0
aGUgZnVsbHNjcmVlbiBlbGVtZW50IGluc2lkZSBhIHNoYWRvdyB0cmVlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVu
dCBpcyBzaGFkb3dIb3N0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK0VudGVyIGZ1bGxzY3JlZW4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxlbWVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1m
dWxsc2NyZWVuRWxlbWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
c2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxlbWVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxkaXYgaWQ9Imhvc3QiPjwvZGl2PgorPGJ1dHRvbj5FbnRlciBmdWxsc2NyZWVuPC9i
dXR0b24+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3ZWJraXRGdWxsc2NyZWVuRWxl
bWVudCByZXRhcmdldHMgdGhlIGZ1bGxzY3JlZW4gZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgdHJl
ZS4nKTsKKworbGV0IHNoYWRvd0hvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9zdCcp
OworbGV0IHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3Nl
ZCd9KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuPmZ1bGwgc2NyZWVuIGNvbnRlbnQ8
L3NwYW4+JzsKKworZnVuY3Rpb24gZ29GdWxsc2NyZWVuKCkgeworICAgIHNoYWRvd1Jvb3QucXVl
cnlTZWxlY3Rvcignc3BhbicpLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7CisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Ugd2FzIG5vdCBm
aXJlZCcpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAyMDAwKTsKK30KKworbGV0
IGRvbmUgPSBmYWxzZTsKK2Z1bmN0aW9uIGZpbmFsaXplVGVzdCgpIHsKKyAgICBpZiAoZG9uZSkK
KyAgICAgICAgcmV0dXJuOworICAgIGRvbmUgPSB0cnVlOworCisgICAgc2hvdWxkQmUoJ2RvY3Vt
ZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50JywgJ3NoYWRvd0hvc3QnKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlJywgZmluYWxpemVUZXN0KTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Z1
bGxzY3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3QpOyAvLyBTdGFuZGFyZCBmdWxsc2NyZWVuY2hh
bmdlIG9ubHkgZmlyZXMgYXQgZG9jdW1lbnQgbGV2ZWwuCisKK2xldCBidXR0b24gPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTsKK2J1dHRvbi5vbmNsaWNrID0gZ29GdWxsc2NyZWVu
OworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYnV0dG9uLm9mZnNldExlZnQgKyA1LCBidXR0
b24ub2Zmc2V0VG9wICsgNSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJy
ZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3QgdGhhdCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgcmV0YXJnZXRz
IHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IHRyZWUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCBpcyBzaGFkb3dIb3N0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK0VudGVyIGZ1bGxzY3JlZW4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50RnVsbFNjcmVl
bkVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
ZnVsbHNjcmVlbi1pbi1zaGFkb3ctd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Lmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4t
aW4tc2hhZG93LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxk
aXYgaWQ9Imhvc3QiPjwvZGl2PgorPGJ1dHRvbj5FbnRlciBmdWxsc2NyZWVuPC9idXR0b24+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnQgcmV0YXJnZXRzIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IHRyZWUu
Jyk7CisKK2xldCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsK
K2xldCBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQn
fSk7CitzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3Bhbj5mdWxsIHNjcmVlbiBjb250ZW50PC9z
cGFuPic7CisKK2Z1bmN0aW9uIGdvRnVsbHNjcmVlbigpIHsKKyAgICBzaGFkb3dSb290LnF1ZXJ5
U2VsZWN0b3IoJ3NwYW4nKS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIHdhcyBub3QgZmly
ZWQnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMjAwMCk7Cit9CisKK2xldCBk
b25lID0gZmFsc2U7CitmdW5jdGlvbiBmaW5hbGl6ZVRlc3QoKSB7CisgICAgaWYgKGRvbmUpCisg
ICAgICAgIHJldHVybjsKKyAgICBkb25lID0gdHJ1ZTsKKworICAgIHNob3VsZEJlKCdkb2N1bWVu
dC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQnLCAnc2hhZG93SG9zdCcpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCitzaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3QpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cignZnVsbHNjcmVlbmNoYW5nZScsIGZpbmFsaXplVGVzdCk7IC8vIFN0YW5kYXJkIGZ1bGxzY3Jl
ZW5jaGFuZ2Ugb25seSBmaXJlcyBhdCBkb2N1bWVudCBsZXZlbC4KKworbGV0IGJ1dHRvbiA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOworYnV0dG9uLm9uY2xpY2sgPSBnb0Z1bGxz
Y3JlZW47CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b24ub2Zmc2V0TGVmdCArIDUs
IGJ1dHRvbi5vZmZzZXRUb3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC1m
dWxsc2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1
bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMSBAQAorVGVzdCB0aGF0IHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50
IHJldGFyZ2V0cyB0aGUgZnVsbHNjcmVlbiBlbGVtZW50IGFzc2lnbmVkIHRvIGEgc2xvdC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQud2Via2l0RnVsbHNj
cmVlbkVsZW1lbnQgaXMgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbiIpCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2Z1bGwgc2NyZWVuIGNv
bnRlbnQKK0VudGVyIGZ1bGxzY3JlZW4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVlbkVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3Jl
ZW5FbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ct
ZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxk
aXYgaWQ9Imhvc3QiPjxzZWN0aW9uPmZ1bGwgc2NyZWVuIGNvbnRlbnQ8L3NlY3Rpb24+PC9kaXY+
Cis8YnV0dG9uPkVudGVyIGZ1bGxzY3JlZW48L2J1dHRvbj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbign
VGVzdCB0aGF0IHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50IHJldGFyZ2V0cyB0aGUgZnVsbHNjcmVl
biBlbGVtZW50IGFzc2lnbmVkIHRvIGEgc2xvdC4nKTsKKworbGV0IHNoYWRvd0hvc3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaG9zdCcpOworbGV0IHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0
LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0g
JzxzcGFuPjxzbG90Pjwvc2xvdD48L3NwYW4+JzsKKworZnVuY3Rpb24gZ29GdWxsc2NyZWVuKCkg
eworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NlY3Rpb24nKS53ZWJraXRSZXF1ZXN0RnVs
bHNjcmVlbigpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAoZG9u
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlIHdhcyBub3QgZmlyZWQnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgfSwgMjAwMCk7Cit9CisKK2xldCBkb25lID0gZmFsc2U7CitmdW5jdGlvbiBmaW5hbGl6ZVRl
c3QoKSB7CisgICAgaWYgKGRvbmUpCisgICAgICAgIHJldHVybjsKKyAgICBkb25lID0gdHJ1ZTsK
KworICAgIHNob3VsZEJlKCdkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCcsICdkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uIiknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
Kworc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywg
ZmluYWxpemVUZXN0KTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Z1bGxzY3JlZW5jaGFu
Z2UnLCBmaW5hbGl6ZVRlc3QpOyAvLyBTdGFuZGFyZCBmdWxsc2NyZWVuY2hhbmdlIG9ubHkgZmly
ZXMgYXQgZG9jdW1lbnQgbGV2ZWwuCisKK2xldCBidXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdidXR0b24nKTsKK2J1dHRvbi5vbmNsaWNrID0gZ29GdWxsc2NyZWVuOworCitpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oYnV0dG9uLm9mZnNldExlZnQgKyA1LCBidXR0b24ub2Zmc2V0VG9w
ICsgNSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qtd2Via2l0Q3VycmVudEZ1bGxT
Y3JlZW5FbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgdGhhdCB3
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgcmV0YXJnZXRzIHRoZSBmdWxsc2NyZWVuIGVs
ZW1lbnQgYXNzaWduZWQgdG8gYSBzbG90LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgaXMgZG9jdW1l
bnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbiIpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKK2Z1bGwgc2NyZWVuIGNvbnRlbnQKK0VudGVyIGZ1bGxzY3Jl
ZW4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qt
d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC13ZWJraXRDdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9Imhvc3QiPjxzZWN0aW9uPmZ1bGwgc2NyZWVuIGNvbnRl
bnQ8L3NlY3Rpb24+PC9kaXY+Cis8YnV0dG9uPkVudGVyIGZ1bGxzY3JlZW48L2J1dHRvbj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dCByZXRhcmdldHMgdGhlIGZ1bGxzY3JlZW4gZWxlbWVudCBhc3NpZ25lZCB0byBhIHNsb3QuJyk7
CisKK2xldCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKK2xl
dCBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7
CitzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3Bhbj48c2xvdD48L3Nsb3Q+PC9zcGFuPic7CisK
K2Z1bmN0aW9uIGdvRnVsbHNjcmVlbigpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdz
ZWN0aW9uJykud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgaWYgKGRvbmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGVzdEZhaWxlZCgnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZSB3YXMgbm90IGZpcmVkJyk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDIwMDApOworfQorCitsZXQgZG9uZSA9IGZh
bHNlOworZnVuY3Rpb24gZmluYWxpemVUZXN0KCkgeworICAgIGlmIChkb25lKQorICAgICAgICBy
ZXR1cm47CisgICAgZG9uZSA9IHRydWU7CisKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQud2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50JywgJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rp
b24iKScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzaGFkb3dSb290LmFkZEV2ZW50TGlz
dGVuZXIoJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3QpOworZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIGZpbmFsaXplVGVzdCk7IC8vIFN0
YW5kYXJkIGZ1bGxzY3JlZW5jaGFuZ2Ugb25seSBmaXJlcyBhdCBkb2N1bWVudCBsZXZlbC4KKwor
bGV0IGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOworYnV0dG9uLm9u
Y2xpY2sgPSBnb0Z1bGxzY3JlZW47CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b24u
b2Zmc2V0TGVmdCArIDUsIGJ1dHRvbi5vZmZzZXRUb3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296603</attachid>
            <date>2016-12-08 17:45:00 -0800</date>
            <delta_ts>2016-12-08 19:25:26 -0800</delta_ts>
            <desc>Removed tabs</desc>
            <filename>bug-158471-20161208174419.patch</filename>
            <type>text/plain</type>
            <size>35599</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTEyLTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LndlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50IGxlYWtzIGVsZW1lbnRzIGluc2lkZSBhIHNoYWRvdyB0cmVlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5
IGNhbGxpbmcgdGhlIG5ld2x5IGFkZGVkIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlIGluIHdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudEZvckJpbmRpbmdzCisgICAgICAgIGFuZCB3ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudEZvckJpbmRpbmcuCisKKyAgICAgICAgVGhlIHNwZWNpZmljYXRp
b24gKGh0dHBzOi8vZnVsbHNjcmVlbi5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb2N1bWVudC1mdWxs
c2NyZWVuZWxlbWVudCkgdXNlcyAidGhlIHJlc3VsdCBvZgorICAgICAgICByZXRhcmdldGluZyBm
dWxsc2NyZWVuIGVsZW1lbnQiIGFuZCByZXR1cm5zIG51bGwgaWYgdGhlIHJlc3VsdCBpcyBub3Qg
aW4gdGhlIHNhbWUgdHJlZSBhcyB0aGUgY29udGV4dCBvYmplY3QuCisKKyAgICAgICAgVGhpcyBp
cyBlcXVpdmFsZW50IHRvIHRoZSBhbGdvcml0aG0gaW1wbGVtZW50ZWQgYnkgYW5jZXN0b3JFbGVt
ZW50SW5UaGlzU2NvcGUuIE9ic2VydmUgdGhhdCB0aGUgcmV0YXJnZXRpbmcKKyAgICAgICAgYWxn
b3JpdGhtIChodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3JldGFyZ2V0KSBmaW5kcyB0aGUg
bG93ZXN0IGNvbW1vbiB0cmVlIHNjb3BlIG9mIHRoZSByZXRhcmdldGVlIGFuZAorICAgICAgICB0
aGUgY29udGV4dCBvYmplY3QuIFRoZXJlIGFyZSB0d28gY2FzZXMgdG8gY29uc2lkZXIuCisKKyAg
ICAgICAgMS4gVGhlIGNvbnRleHQgb2JqZWN0J3MgdHJlZSBzY29wZSBpcyB0aGUgbG93ZXN0IGNv
bW1vbiB0cmVlIHNjb3BlOiBJbiB0aGlzIGNhc2UsIGFuIGFuY2VzdG9yIHNoYWRvdyBob3N0IG9y
CisgICAgICAgIHRoZSByZXRhcmdldGVlIGl0c2VsZiBpcyBpbiB0aGlzIHRyZWUgc2NvcGUuIEl0
J3Mgc3VmZmljaWVudCB0cmF2ZXJzZSBldmVyeSBzaGFkb3cgaG9zdCB0byBmaW5kIHRoZSBvbmUg
dGhhdAorICAgICAgICByZXNpZGVzIGluIHRoZSBzYW1lIHRyZWUgc2NvcGUgYXMgdGhlIGNvbnRl
eHQgb2JqZWN0LiBUaGlzIGlzIHByZWNpc2VseSB3aGF0IGFuY2VzdG9yRWxlbWVudEluVGhpc1Nj
b3BlIGRvZXMuCisKKyAgICAgICAgMi4gVGhlIGNvbnRleHQgb2JqZWN0J3MgdHJlZSBzY29wZSBp
cyBub3QgdGhlIGxvd2VzdCBjb21tb24gdHJlZSBzY29wZTogSW4gdGhpcyBjYXNlLCB0aGUgY29u
dGV4dCBvYmplY3QgaXMKKyAgICAgICAgaW5zaWRlIGEgc2hhZG93IHRyZWUgd2hvc2UgYW5jZXN0
b3Igc2hhZG93IGhvc3QgaXMgaW4gdGhlIGxvd2VzdCBjb21tb24gdHJlZSBzY29wZS4gSW4gdGhp
cyBjYXNlLCByZXRhcmdldGluZworICAgICAgICBhbGdvcml0aG0gZmluZHMgYSBub2RlIHdoaWNo
IGlzIG5vdCBpbiB0aGUgc2FtZSB0cmVlIGFzIHRoZSBjb250ZXh0IG9iamVjdC4gVGh1cywgdGhl
IHJlc3VsdCBpcyBudWxsLgorICAgICAgICBhbmNlc3RvckVsZW1lbnRJblRoaXNTY29wZSB0cmF2
ZXJlcyBhbmNlc3RvciBzaGFkb3cgaG9zdHMgYW5kIHJldHVybnMgbnVsbCBpZiBubyBzaGFkb3cg
aG9zdCdzIHRyZWUgc2NvcGUKKyAgICAgICAgbWF0Y2hlcyB0aGF0IG9mIHRoZSBjb250ZXh0IG9i
amVjdCdzIHRyZWUgc2NvcGUuIFRodXMsIGl0IHdvdWxkIHJldHVybiBudWxsIGluIHRoaXMgY2Fz
ZSBhcyBkZXNpcmVkLgorCisgICAgICAgIEFsc28gcmVuYW1lZCBUcmVlU2NvcGU6OmZvY3VzZWRF
bGVtZW50IHRvIGZvY3VzZWRFbGVtZW50SW5TY29wZSBmb3IgY2xhcml0eSBzaW5jZSBEb2N1bWVu
dCB3aGljaCBpbmhlcml0cworICAgICAgICBmcm9tIFRyZWVTY29wZSBhbHNvIGhhcyBhIGRpc3Rp
bmN0IG1lbWJlciBmdW5jdGlvbiBuYW1lZCBmb2N1c2VkRWxlbWVudCBjYWxsZWQgYnkgVHJlZVNj
b3BlOjpmb2N1c2VkRWxlbWVudCwKKyAgICAgICAgYW5kIHVzZWQgYW5jZXN0b3JFbGVtZW50SW5U
aGlzU2NvcGUgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBhbGdvcml0aG0uCisKKyAgICAgICAgVGVz
dHM6IGZhc3Qvc2hhZG93LWRvbS9hY3RpdmVFbGVtZW50LWZvci1mb2N1c2VkLWVsZW1lbnQtaW4t
YW5vdGhlci1zaGFkb3cuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL2JsdXIt
b24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxl
bWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1z
aGFkb3ctd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVlbkVsZW1lbnQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC13ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVGb2N1c2VkTm9kZU9mU3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWN0aXZlRWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Rm9yQmluZGluZ3MpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEZvckJpbmRpbmdzKTogQWRk
ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpibHVyKToKKyAgICAgICAgKiBkb20vU2hh
ZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YWN0aXZlRWxlbWVudCk6
CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKTogUmVuYW1lZCBmcm9tIGFuY2VzdG9ySW5UaGlz
U2NvcGUgZm9yIGNsYXJpdHkuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFuY2VzdG9y
RWxlbWVudEluVGhpc1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6Zm9jdXNl
ZEVsZW1lbnRJblNjb3BlKTogUmVuYW1lZCBmcm9tIGZvY3VzZWRFbGVtZW50IHRvIGRpc2FtYmln
dWF0ZSBpdCBmcm9tIERvY3VtZW50J3MKKyAgICAgICAgZm9jdXNlZEVsZW1lbnQuCisgICAgICAg
ICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RQb3NpdGlvbkZvckVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjphZGp1c3RQb3NpdGlvbkZvclN0YXJ0KToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVQb3NpdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Zmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXN0RWRpdGFibGVQb3NpdGlvbkJlZm9yZVBvc2l0aW9uSW5Sb290
KToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZWxlY3Rpb25TaGFkb3dBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246
OnNoYWRvd0FkanVzdGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNo
YWRvd0FkanVzdGVkT2Zmc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRU
ZXN0UmVzdWx0KTogQWRkZWQgYSBGSVhNRSBoZXJlIHNpbmNlIHRoaXMgaXMgY2xlYXJseSB3cm9u
ZyBmb3IKKyAgICAgICAgc2hhZG93IHRyZWVzIGNyZWF0ZWQgYnkgYXV0aG9yIHNjcmlwdHMuCisK
IDIwMTYtMTItMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2Vi
SURMXSBSZW1vdmUgY3VzdG9tIGJpbmRpbmdzIGZvciBHZW9sb2NhdGlvbgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQ1LDcgKzM1NDUsNyBAQCB2b2lkIERv
Y3VtZW50OjpyZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlCiAgICAgaWYgKCFtX2ZvY3VzZWRFbGVt
ZW50IHx8IHBhZ2VDYWNoZVN0YXRlKCkgIT0gTm90SW5QYWdlQ2FjaGUpIC8vIElmIHRoZSBkb2N1
bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZSwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIG91
dCB0aGUgZm9jdXNlZCBub2RlLgogICAgICAgICByZXR1cm47CiAKLSAgICBFbGVtZW50KiBmb2N1
c2VkRWxlbWVudCA9IG5vZGUudHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnQoKTsKKyAgICBFbGVt
ZW50KiBmb2N1c2VkRWxlbWVudCA9IG5vZGUudHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnRJblNj
b3BlKCk7CiAgICAgaWYgKCFmb2N1c2VkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIApA
QCAtNjc3NCw3ICs2Nzc0LDcgQEAgYm9vbCBEb2N1bWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlYwogCiBFbGVtZW50KiBEb2N1bWVudDo6YWN0aXZlRWxlbWVudCgpCiB7Ci0gICAgaWYgKEVs
ZW1lbnQqIGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5mb2N1c2VkRWxlbWVudCgpKQorICAgIGlmIChF
bGVtZW50KiBlbGVtZW50ID0gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnRJblNjb3BlKCkpCiAg
ICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIHJldHVybiBib2R5T3JGcmFtZXNldCgpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg4LDcgKzEwODgsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2Z1
bGxTY3JlZW5FbGVtZW50LmdldCgpOyB9CiAgICAgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9h
cmRJbnB1dEFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgp
ICYmIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW47IH0KICAgICBFbGVtZW50KiB3ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbGVt
ZW50LmdldCgpOyB9Ci0gICAgCisgICAgRWxlbWVudCogd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBhbmNlc3RvckVsZW1lbnRJblRoaXNT
Y29wZSh3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSk7IH0KKwogICAgIGVudW0gRnVs
bFNjcmVlbkNoZWNrVHlwZSB7CiAgICAgICAgIEVuZm9yY2VJRnJhbWVBbGxvd0Z1bGxTY3JlZW5S
ZXF1aXJlbWVudCwKICAgICAgICAgRXhlbXB0SUZyYW1lQWxsb3dGdWxsU2NyZWVuUmVxdWlyZW1l
bnQsCkBAIC0xMTE1LDYgKzExMTYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3Q7CiAgICAgRWxlbWVudCogd2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAhbV9mdWxsU2NyZWVuRWxlbWVudFN0
YWNrLmlzRW1wdHkoKSA/IG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5sYXN0KCkuZ2V0KCkgOiBu
dWxscHRyOyB9CisgICAgRWxlbWVudCogd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRGb3JCaW5kaW5n
cygpIGNvbnN0IHsgcmV0dXJuIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlKHdlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50KCkpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3ZWJraXRFeGl0RnVs
bHNjcmVlbigpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNp
b24gMjA5NTc2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMTQzLDEyICsxNDMsMTIgQEAKICAgICAvLyBNb3ppbGxhIHZlcnNpb24KICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW47CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2Vk
OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVu
RWxlbWVudDsKKyAgICBbSW1wbGVtZW50ZWRBcz13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgd2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50OwogICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogCiAg
ICAgLy8gVzNDIHZlcnNpb24KICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRG
dWxsc2NyZWVuRW5hYmxlZDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gd2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQ7CisgICAgW0ltcGxlbWVudGVkQXM9d2Via2l0RnVsbHNjcmVlbkVs
ZW1lbnRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHdlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50OwogICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsNyArMjQzOCw3
IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKFNlbGUKIHZvaWQgRWxlbWVu
dDo6Ymx1cigpCiB7CiAgICAgY2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7Ci0gICAgaWYg
KHRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50KCkgPT0gdGhpcykgeworICAgIGlmICh0cmVlU2Nv
cGUoKS5mb2N1c2VkRWxlbWVudEluU2NvcGUoKSA9PSB0aGlzKSB7CiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+cGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudCgwLCBmcmFtZSk7CiAgICAgICAg
IGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAkocmV2aXNpb24gMjA5NTc2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcg
KzExMCw3IEBAIHByaXZhdGU6CiAKIGlubGluZSBFbGVtZW50KiBTaGFkb3dSb290OjphY3RpdmVF
bGVtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnQo
KTsKKyAgICByZXR1cm4gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnRJblNjb3BlKCk7CiB9CiAK
IGlubGluZSBTaGFkb3dSb290KiBOb2RlOjpzaGFkb3dSb290KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIE5vZGUm
IFRyZWVTY29wZTo6cmV0YXJnZXRUb1Njb3BlKE5vZGUmIG4KICAgICByZXR1cm4gKnNoYWRvd1Jv
b3RJbkxvd2VzdENvbW1vblRyZWVTY29wZS5ob3N0KCk7CiB9CiAKLU5vZGUqIFRyZWVTY29wZTo6
YW5jZXN0b3JJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdAorTm9kZSogVHJlZVNjb3BlOjph
bmNlc3Rvck5vZGVJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdAogewogICAgIGZvciAoOyBu
b2RlOyBub2RlID0gbm9kZS0+c2hhZG93SG9zdCgpKSB7CiAgICAgICAgIGlmICgmbm9kZS0+dHJl
ZVNjb3BlKCkgPT0gdGhpcykKQEAgLTIwNiw2ICsyMDYsMTcgQEAgTm9kZSogVHJlZVNjb3BlOjph
bmNlc3RvckluVGhpc1Njb3BlKE5vZAogICAgIHJldHVybiBudWxscHRyOwogfQogCitFbGVtZW50
KiBUcmVlU2NvcGU6OmFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlKEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit7CisgICAgZm9yICg7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5zaGFkb3dI
b3N0KCkpIHsKKyAgICAgICAgaWYgKCZlbGVtZW50LT50cmVlU2NvcGUoKSA9PSB0aGlzKQorICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIGlmICghZWxlbWVudC0+aXNJblNoYWRv
d1RyZWUoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50
JiBpbWFnZU1hcCkKIHsKICAgICBBdG9taWNTdHJpbmdJbXBsKiBuYW1lID0gaW1hZ2VNYXAuZ2V0
TmFtZSgpLmltcGwoKTsKQEAgLTM2NCwyOCArMzc1LDE1IEBAIHN0YXRpYyBFbGVtZW50KiBmb2N1
c2VkRnJhbWVPd25lckVsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRWxlbWVudCog
VHJlZVNjb3BlOjpmb2N1c2VkRWxlbWVudCgpCitFbGVtZW50KiBUcmVlU2NvcGU6OmZvY3VzZWRF
bGVtZW50SW5TY29wZSgpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9yb290Tm9kZS5k
b2N1bWVudCgpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC5mb2N1c2VkRWxlbWVu
dCgpOwogCiAgICAgaWYgKCFlbGVtZW50ICYmIGRvY3VtZW50LnBhZ2UoKSkKICAgICAgICAgZWxl
bWVudCA9IGZvY3VzZWRGcmFtZU93bmVyRWxlbWVudChkb2N1bWVudC5wYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpLCBkb2N1bWVudC5mcmFtZSgpKTsKLSAgICBpZiAoIWVs
ZW1lbnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFRyZWVTY29wZSogdHJlZVNjb3Bl
ID0gJmVsZW1lbnQtPnRyZWVTY29wZSgpOwotICAgIFJFTEVBU0VfQVNTRVJUKCZkb2N1bWVudCA9
PSAmdHJlZVNjb3BlLT5kb2N1bWVudFNjb3BlKCkpOwotICAgIHdoaWxlICh0cmVlU2NvcGUgIT0g
dGhpcyAmJiB0cmVlU2NvcGUgIT0gJmRvY3VtZW50KSB7Ci0gICAgICAgIGF1dG8mIHJvb3ROb2Rl
ID0gdHJlZVNjb3BlLT5yb290Tm9kZSgpOwotICAgICAgICBpZiAoaXM8U2hhZG93Um9vdD4ocm9v
dE5vZGUpKQotICAgICAgICAgICAgZWxlbWVudCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KHJvb3RO
b2RlKS5ob3N0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB0cmVlU2NvcGUgPSAmZWxlbWVudC0+dHJlZVNjb3BlKCk7Ci0gICAgfQotICAgIGlm
ICh0aGlzICE9IHRyZWVTY29wZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGVsZW1lbnQ7CisKKyAgICByZXR1cm4gYW5jZXN0b3JFbGVtZW50SW5UaGlzU2NvcGUoZWxlbWVu
dCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpc3RUcmVlU2NvcGVzKE5vZGUqIG5vZGUsIFZlY3RvcjxU
cmVlU2NvcGUqLCA1PiYgdHJlZVNjb3BlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgJKHJl
dmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgVHJlZVNjb3BlKiBwYXJlbnRU
cmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFRyZWVTY29wZTsgfQogICAgIHZvaWQg
c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSYpOwogCi0gICAgRWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQoKTsKKyAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudEluU2NvcGUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBnZXRBbGxFbGVtZW50
c0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CkBAIC03Miw3ICs3Miw4IEBAIHB1Ymxp
YzoKICAgICAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3JldGFyZ2V0CiAgICAgTm9k
ZSYgcmV0YXJnZXRUb1Njb3BlKE5vZGUmKSBjb25zdDsKIAotICAgIE5vZGUqIGFuY2VzdG9ySW5U
aGlzU2NvcGUoTm9kZSopIGNvbnN0OworICAgIE5vZGUqIGFuY2VzdG9yTm9kZUluVGhpc1Njb3Bl
KE5vZGUqKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBhbmNlc3RvckVsZW1l
bnRJblRoaXNTY29wZShFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGFkZEltYWdlTWFwKEhU
TUxNYXBFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNyArNDczLDcgQEAgc3RhdGljIFBvc2l0aW9u
IGFkanVzdFBvc2l0aW9uRm9yRW5kKGNvbgogCiAgICAgQVNTRVJUKCZjdXJyZW50UG9zaXRpb24u
Y29udGFpbmVyTm9kZSgpLT50cmVlU2NvcGUoKSAhPSAmdHJlZVNjb3BlKTsKIAotICAgIGlmIChO
b2RlKiBhbmNlc3RvciA9IHRyZWVTY29wZS5hbmNlc3RvckluVGhpc1Njb3BlKGN1cnJlbnRQb3Np
dGlvbi5jb250YWluZXJOb2RlKCkpKSB7CisgICAgaWYgKE5vZGUqIGFuY2VzdG9yID0gdHJlZVNj
b3BlLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKGN1cnJlbnRQb3NpdGlvbi5jb250YWluZXJOb2Rl
KCkpKSB7CiAgICAgICAgIGlmIChhbmNlc3Rvci0+Y29udGFpbnMoc3RhcnRDb250YWluZXJOb2Rl
KSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkFmdGVyTm9kZShhbmNlc3Rvcik7CiAgICAg
ICAgIHJldHVybiBwb3NpdGlvbkJlZm9yZU5vZGUoYW5jZXN0b3IpOwpAQCAtNDkxLDcgKzQ5MSw3
IEBAIHN0YXRpYyBQb3NpdGlvbiBhZGp1c3RQb3NpdGlvbkZvclN0YXJ0KGMKIAogICAgIEFTU0VS
VCgmY3VycmVudFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKS0+dHJlZVNjb3BlKCkgIT0gJnRyZWVT
Y29wZSk7CiAgICAgCi0gICAgaWYgKE5vZGUqIGFuY2VzdG9yID0gdHJlZVNjb3BlLmFuY2VzdG9y
SW5UaGlzU2NvcGUoY3VycmVudFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICBpZiAo
Tm9kZSogYW5jZXN0b3IgPSB0cmVlU2NvcGUuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUoY3VycmVu
dFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSkpIHsKICAgICAgICAgaWYgKGFuY2VzdG9yLT5jb250
YWlucyhlbmRDb250YWluZXJOb2RlKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkJlZm9y
ZU5vZGUoYW5jZXN0b3IpOwogICAgICAgICByZXR1cm4gcG9zaXRpb25BZnRlck5vZGUoYW5jZXN0
b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9u
IDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MywxMiArODMsMTIgQEAgaW50IGNvbXBhcmVQb3NpdGlvbnMoY29uc3Qg
UG9zaXRpb24mIGEsIAogICAgIGlmICghY29tbW9uU2NvcGUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgTm9kZSogbm9kZUEgPSBjb21tb25TY29wZS0+YW5jZXN0b3JJblRoaXNTY29wZShhLmNv
bnRhaW5lck5vZGUoKSk7CisgICAgTm9kZSogbm9kZUEgPSBjb21tb25TY29wZS0+YW5jZXN0b3JO
b2RlSW5UaGlzU2NvcGUoYS5jb250YWluZXJOb2RlKCkpOwogICAgIEFTU0VSVChub2RlQSk7CiAg
ICAgYm9vbCBoYXNEZXNjZW5kZW50QSA9IG5vZGVBICE9IGEuY29udGFpbmVyTm9kZSgpOwogICAg
IGludCBvZmZzZXRBID0gaGFzRGVzY2VuZGVudEEgPyAwIDogYS5jb21wdXRlT2Zmc2V0SW5Db250
YWluZXJOb2RlKCk7CiAKLSAgICBOb2RlKiBub2RlQiA9IGNvbW1vblNjb3BlLT5hbmNlc3Rvcklu
VGhpc1Njb3BlKGIuY29udGFpbmVyTm9kZSgpKTsKKyAgICBOb2RlKiBub2RlQiA9IGNvbW1vblNj
b3BlLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShiLmNvbnRhaW5lck5vZGUoKSk7CiAgICAgQVNT
RVJUKG5vZGVCKTsKICAgICBib29sIGhhc0Rlc2NlbmRlbnRCID0gbm9kZUIgIT0gYi5jb250YWlu
ZXJOb2RlKCk7CiAgICAgaW50IG9mZnNldEIgPSBoYXNEZXNjZW5kZW50QiA/IDAgOiBiLmNvbXB1
dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBQb3NpdGlvbiBm
aXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0CiAgICAgUG9zaXRpb24gY2FuZGlkYXRlID0g
cG9zaXRpb247CiAKICAgICBpZiAoJnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnRyZWVTY29w
ZSgpICE9ICZoaWdoZXN0Um9vdC0+dHJlZVNjb3BlKCkpIHsKLSAgICAgICAgYXV0byogc2hhZG93
QW5jZXN0b3IgPSBoaWdoZXN0Um9vdC0+dHJlZVNjb3BlKCkuYW5jZXN0b3JJblRoaXNTY29wZShw
b3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICAgICAgYXV0byogc2hhZG93QW5jZXN0b3Ig
PSBoaWdoZXN0Um9vdC0+dHJlZVNjb3BlKCkuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUocG9zaXRp
b24uZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgICAgIGlmICghc2hhZG93QW5jZXN0b3IpCiAgICAg
ICAgICAgICByZXR1cm4geyB9OwogCkBAIC0zMjAsNyArMzIwLDcgQEAgUG9zaXRpb24gbGFzdEVk
aXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdAogICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHBvc2l0
aW9uOwogCiAgICAgaWYgKCZwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT50cmVlU2NvcGUoKSAh
PSAmaGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGF1dG8qIHNoYWRvd0FuY2Vz
dG9yID0gaGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpLmFuY2VzdG9ySW5UaGlzU2NvcGUocG9zaXRp
b24uZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgICAgIGF1dG8qIHNoYWRvd0FuY2VzdG9yID0gaGln
aGVzdFJvb3QtPnRyZWVTY29wZSgpLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKHBvc2l0aW9uLmRl
cHJlY2F0ZWROb2RlKCkpOwogICAgICAgICBpZiAoIXNoYWRvd0FuY2VzdG9yKQogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAko
cmV2aXNpb24gMjA5NTc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBOb2RlKiBzZWxlY3Rpb25T
aGFkb3dBbmNlc3RvcihGcmEKICAgICBpZiAoIW5vZGUtPmlzSW5TaGFkb3dUcmVlKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIEZJWE1FOiBVbmNsZWFyIG9uIHdoeSB0aGlzIG5l
ZWRzIHRvIGJlIHRoZSBwb3NzaWJseSBudWxsIGZyYW1lLmRvY3VtZW50KCkgaW5zdGVhZCBvZiB0
aGUgbmV2ZXIgbnVsbCBub2RlLT5kb2N1bWVudCgpLgotICAgIHJldHVybiBmcmFtZS5kb2N1bWVu
dCgpLT5hbmNlc3RvckluVGhpc1Njb3BlKG5vZGUpOworICAgIHJldHVybiBmcmFtZS5kb2N1bWVu
dCgpLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShub2RlKTsKIH0KIAogRE9NU2VsZWN0aW9uOjpE
T01TZWxlY3Rpb24oRnJhbWUmIGZyYW1lKQpAQCAtNDM2LDcgKzQzNiw3IEBAIE5vZGUqIERPTVNl
bGVjdGlvbjo6c2hhZG93QWRqdXN0ZWROb2RlKGMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvKiBjb250YWluZXJOb2RlID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAg
IGF1dG8qIGFkanVzdGVkTm9kZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmFuY2VzdG9ySW5UaGlz
U2NvcGUoY29udGFpbmVyTm9kZSk7CisgICAgYXV0byogYWRqdXN0ZWROb2RlID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUoY29udGFpbmVyTm9kZSk7CiAgICAg
aWYgKCFhZGp1c3RlZE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC00NTIsNyAr
NDUyLDcgQEAgdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3RlZE9mZgogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGF1dG8qIGNvbnRhaW5lck5vZGUgPSBwb3NpdGlvbi5jb250YWlu
ZXJOb2RlKCk7Ci0gICAgYXV0byogYWRqdXN0ZWROb2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YW5jZXN0b3JJblRoaXNTY29wZShjb250YWluZXJOb2RlKTsKKyAgICBhdXRvKiBhZGp1c3RlZE5v
ZGUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShjb250YWlu
ZXJOb2RlKTsKICAgICBpZiAoIWFkanVzdGVkTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9u
IDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjY4LDggKzY2OCw5IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRk
Tm9kZVRvUmVjdEJhc2VkVGUKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CisgICAgLy8gRklYTUU6IFRoaXMgbW92ZXMgb3V0IG9mIGEgYXV0aG9yIHNoYWRvdyB0cmVlLgog
ICAgIGlmIChyZXF1ZXN0LmRpc2FsbG93c1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQoKSkKLSAgICAg
ICAgbm9kZSA9IG5vZGUtPmRvY3VtZW50KCkuYW5jZXN0b3JJblRoaXNTY29wZShub2RlKTsKKyAg
ICAgICAgbm9kZSA9IG5vZGUtPmRvY3VtZW50KCkuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUobm9k
ZSk7CiAKICAgICBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKIApAQCAt
Njg4LDggKzY4OSw5IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGUK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gRklYTUU6IFRo
aXMgbW92ZXMgb3V0IG9mIGEgYXV0aG9yIHNoYWRvdyB0cmVlLgogICAgIGlmIChyZXF1ZXN0LmRp
c2FsbG93c1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQoKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPmRv
Y3VtZW50KCkuYW5jZXN0b3JJblRoaXNTY29wZShub2RlKTsKKyAgICAgICAgbm9kZSA9IG5vZGUt
PmRvY3VtZW50KCkuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUobm9kZSk7CiAKICAgICBtdXRhYmxl
UmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA5NTgzKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQg
bGVha3MgZWxlbWVudHMgaW5zaWRlIGEgc2hhZG93IHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgQVBJIGZvciBiaW5kaW5ncyB0byBh
dm9pZCBleHBvc2luZyBub2RlcyBpbnNpZGUgYSBzaGFkb3cgdHJlZS4KKworICAgICAgICAqIERP
TS9ET01Eb2N1bWVudC5tbToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgd2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IHdlYmtpdEZ1bGxzY3Jl
ZW5FbGVtZW50XSk6CisKIDIwMTYtMTItMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgU2hhcmVkQXJyYXlCdWZmZXIsIHJlbW92ZSB0aGUgZmxhZwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQkocmV2aXNpb24gMjA5NTc2KQor
KysgU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjEsNyArMzYxLDcgQEAgLSAoQk9PTCl3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFs
bAogLSAoRE9NRWxlbWVudCAqKXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudAogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKSk7CisgICAg
cmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnRGb3JCaW5kaW5ncygpKSk7CiB9CiAKIC0gKEJPT0wpd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQK
QEAgLTM3Myw3ICszNzMsNyBAQCAtIChCT09MKXdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkCiAtIChE
T01FbGVtZW50ICopd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKSk7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0
cihJTVBMLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudEZvckJpbmRpbmdzKCkpKTsKIH0KIAogI2Vu
ZGlmCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk1NzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0xMi0wOCAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVu
RWxlbWVudCBsZWFrcyBlbGVtZW50cyBpbnNpZGUgYSBzaGFkb3cgdHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIGNhbGxp
bmcgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQgYW5kIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCBvbiBhIGZ1bGxzY3JlZW5lZCBlbGVtZW50CisgICAgICAgIHRvIG1ha2Ugc3VyZSB0aGV5
IHJldHVybiB0aGUgc2hhZG93IGhvc3QgaW5zdGVhZC4KKworICAgICAgICBBbHNvIGFkZGVkIHR3
byB1bnJlbGF0ZWQgdGVzdCBjYXNlcyBmb3IgdGVtcG9yYWwgcmVncmVzc2lvbnMgSSBpbnRyb2R1
Y2VkIHdoaWxlIHdvcmtpbmcgb24gdGhpcyBwYXRjaC4KKworICAgICAgICAqIGZhc3Qvc2hhZG93
LWRvbS9hY3RpdmVFbGVtZW50LWZvci1mb2N1c2VkLWVsZW1lbnQtaW4tYW5vdGhlci1zaGFkb3ct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vYWN0aXZlRWxl
bWVudC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9ibHVyLW9uLXNoYWRvdy1ob3N0LXdpdGgtZm9jdXNl
ZC1zaGFkb3ctY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hh
ZG93LWRvbS9ibHVyLW9uLXNoYWRvdy1ob3N0LXdpdGgtZm9jdXNlZC1zaGFkb3ctY29udGVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zaGFk
b3ctZnVsbHNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctZnVsbHNjcmVlbkVsZW1lbnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LXdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Z1
bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVlbkVs
ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4t
aW4tc2xvdC13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LXdlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAxNi0xMi0wOCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJRExdIFJlbW92ZSBjdXN0b20g
YmluZGluZ3MgZm9yIEdlb2xvY2F0aW9uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vYWN0aXZlRWxlbWVudC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vYWN0
aXZlRWxlbWVudC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93LWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vYWN0aXZl
RWxlbWVudC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTaGFkb3dSb290LmFjdGl2
ZUVsZW1lbnQgbXVzdCByZXR1cm4gbnVsbCB0aGUgZm9jdXNlZCBlbGVtZW50IGlzIGluIGFub3Ro
ZXIgc2hhZG93IHRyZWUgd2hlbiBib3RoIHNoYWRvdyByb290cyBhcmUgb3Blbi4gCitQQVNTIFNo
YWRvd1Jvb3QuYWN0aXZlRWxlbWVudCBtdXN0IHJldHVybiBudWxsIHRoZSBmb2N1c2VkIGVsZW1l
bnQgaXMgaW4gYW5vdGhlciBzaGFkb3cgdHJlZSB3aGVuIGJvdGggc2hhZG93IHJvb3RzIGFyZSBj
bG9zZWQuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vYWN0aXZlRWxlbWVu
dC1mb3ItZm9jdXNlZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3VzZWQt
ZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9hY3RpdmVFbGVtZW50LWZvci1mb2N1c2VkLWVsZW1lbnQtaW4t
YW5vdGhlci1zaGFkb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJS
eW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9
ImFzc2VydCIgY29udGVudD0iU2hhZG93Um9vdCdzICI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHA6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2V4dGVuc2lv
bnMtdG8tZXZlbnQtaW50ZXJmYWNlIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V2ZW50
LXBhdGgtdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3RBY3RpdmVFbGVtZW50V2l0
aEZvY3VzZWRFbGVtZW50SW5Bbm90aGVyU2hhZG93KG1vZGUpIHsKKyAgICB0ZXN0KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgY29uc3QgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOworICAgICAgICBjb25z
dCBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeydtb2RlJzogbW9kZX0pOworICAgICAg
ICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICAg
IHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoaW5wdXQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNo
YWRvd1Jvb3QuYWN0aXZlRWxlbWVudCwgbnVsbCk7CisgICAgICAgIGlucHV0LmZvY3VzKCk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBpbnB1dCk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgaG9zdCk7CisKKyAg
ICAgICAgY29uc3QgYW5vdGhlckhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhbm90aGVySG9zdCk7CisgICAgICAg
IGNvbnN0IGFub3RoZXJTaGFkb3dSb290ID0gYW5vdGhlckhvc3QuYXR0YWNoU2hhZG93KHsnbW9k
ZSc6IG1vZGV9KTsKKyAgICAgICAgY29uc3QgYW5vdGhlcklucHV0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW5wdXQnKTsKKyAgICAgICAgYW5vdGhlclNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQo
YW5vdGhlcklucHV0KTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKGFub3RoZXJTaGFkb3dSb290
LmFjdGl2ZUVsZW1lbnQsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3Qu
YWN0aXZlRWxlbWVudCwgaW5wdXQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQsIGhvc3QpOworCisgICAgICAgIGFub3RoZXJJbnB1dC5mb2N1cygpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGFub3RoZXJTaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGFub3Ro
ZXJJbnB1dCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50
LCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBh
bm90aGVySG9zdCk7CisKKyAgICB9LCAnU2hhZG93Um9vdC5hY3RpdmVFbGVtZW50IG11c3QgcmV0
dXJuIG51bGwgdGhlIGZvY3VzZWQgZWxlbWVudCBpcyBpbiBhbm90aGVyIHNoYWRvdyB0cmVlIHdo
ZW4gYm90aCBzaGFkb3cgcm9vdHMgYXJlICcgKyBtb2RlICsgJy4nKTsKK30KKwordGVzdEFjdGl2
ZUVsZW1lbnRXaXRoRm9jdXNlZEVsZW1lbnRJbkFub3RoZXJTaGFkb3coJ29wZW4nKTsKK3Rlc3RB
Y3RpdmVFbGVtZW50V2l0aEZvY3VzZWRFbGVtZW50SW5Bbm90aGVyU2hhZG93KCdjbG9zZWQnKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vYmx1ci1vbi1zaGFkb3ctaG9zdC13aXRoLWZvY3VzZWQtc2hhZG93LWNvbnRlbnQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9i
bHVyLW9uLXNoYWRvdy1ob3N0LXdpdGgtZm9jdXNlZC1zaGFkb3ctY29udGVudC1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2JsdXItb24t
c2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACitUZXN0IHRoYXQgY2FsbGluZyBibHVyKCkgb24g
YSBzaGFkb3cgaG9zdCBvZiBhIGZvY3VzZWQgZWxlbWVudCBjbGVhcnMgdGhlIGZvY3VzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnB1dCA9IHNoYWRvd1Jvb3QucXVl
cnlTZWxlY3RvcigiaW5wdXQiKTsgaW5wdXQuZm9jdXMoKTsgc2hhZG93Um9vdC5hY3RpdmVFbGVt
ZW50IGlzIGlucHV0CitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgc2hhZG93SG9zdAor
UEFTUyBzaGFkb3dIb3N0LmJsdXIoKTsgc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50IGlzIG51bGwK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vYmx1ci1vbi1zaGFkb3ctaG9zdC13aXRoLWZv
Y3VzZWQtc2hhZG93LWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vYmx1ci1vbi1zaGFkb3ctaG9zdC13aXRoLWZvY3VzZWQtc2hhZG93LWNvbnRl
bnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vYmx1
ci1vbi1zaGFkb3ctaG9zdC13aXRoLWZvY3VzZWQtc2hhZG93LWNvbnRlbnQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8ZGl2IGlkPSJob3N0Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGNh
bGxpbmcgYmx1cigpIG9uIGEgc2hhZG93IGhvc3Qgb2YgYSBmb2N1c2VkIGVsZW1lbnQgY2xlYXJz
IHRoZSBmb2N1cy4nKTsKKworbGV0IHNoYWRvd0hvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaG9zdCcpOworbGV0IHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9k
ZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gYDxpbnB1dD5gOworCitzaG91
bGRCZSgnaW5wdXQgPSBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7IGlucHV0LmZv
Y3VzKCk7IHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCcsICdpbnB1dCcpOworc2hvdWxkQmUoJ2Rv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQnLCAnc2hhZG93SG9zdCcpOworc2hvdWxkQmUoJ3NoYWRvd0hv
c3QuYmx1cigpOyBzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQnLCAnbnVsbCcpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctZnVs
bHNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxlbWVudC1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1
bGxzY3JlZW4taW4tc2hhZG93LWZ1bGxzY3JlZW5FbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IHRoYXQgd2Via2l0RnVsbHNjcmVlbkVsZW1l
bnQgcmV0YXJnZXRzIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IHRyZWUu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LndlYmtpdEZ1
bGxzY3JlZW5FbGVtZW50IGlzIHNoYWRvd0hvc3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorRW50ZXIgZnVsbHNjcmVlbgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LWZ1bGxzY3JlZW5FbGVtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3Jl
ZW4taW4tc2hhZG93LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LWZ1bGxzY3JlZW5F
bGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iaG9zdCI+PC9kaXY+Cis8YnV0dG9uPkVudGVy
IGZ1bGxzY3JlZW48L2J1dHRvbj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlYmtp
dEZ1bGxzY3JlZW5FbGVtZW50IHJldGFyZ2V0cyB0aGUgZnVsbHNjcmVlbiBlbGVtZW50IGluc2lk
ZSBhIHNoYWRvdyB0cmVlLicpOworCitsZXQgc2hhZG93SG9zdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdob3N0Jyk7CitsZXQgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93
KHttb2RlOiAnY2xvc2VkJ30pOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNwYW4+ZnVsbCBz
Y3JlZW4gY29udGVudDwvc3Bhbj4nOworCitmdW5jdGlvbiBnb0Z1bGxzY3JlZW4oKSB7CisgICAg
c2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdzcGFuJykud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4o
KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKGRvbmUpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0ZnVsbHNjcmVlbmNo
YW5nZSB3YXMgbm90IGZpcmVkJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDIw
MDApOworfQorCitsZXQgZG9uZSA9IGZhbHNlOworZnVuY3Rpb24gZmluYWxpemVUZXN0KCkgewor
ICAgIGlmIChkb25lKQorICAgICAgICByZXR1cm47CisgICAgZG9uZSA9IHRydWU7CisKKyAgICBz
aG91bGRCZSgnZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQnLCAnc2hhZG93SG9zdCcp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIo
J3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3QpOworZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIGZpbmFsaXplVGVzdCk7IC8vIFN0YW5kYXJk
IGZ1bGxzY3JlZW5jaGFuZ2Ugb25seSBmaXJlcyBhdCBkb2N1bWVudCBsZXZlbC4KKworbGV0IGJ1
dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOworYnV0dG9uLm9uY2xpY2sg
PSBnb0Z1bGxzY3JlZW47CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b24ub2Zmc2V0
TGVmdCArIDUsIGJ1dHRvbi5vZmZzZXRUb3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4t
aW4tc2hhZG93LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hh
ZG93LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93
LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCByZXRhcmdldHMgdGhlIGZ1bGxzY3JlZW4gZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgdHJl
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQud2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IGlzIHNoYWRvd0hvc3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorRW50ZXIgZnVsbHNjcmVlbgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LXdlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50RnVsbFNjcmVl
bkVsZW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPGRpdiBpZD0iaG9zdCI+PC9kaXY+Cis8YnV0dG9uPkVudGVyIGZ1bGxzY3Jl
ZW48L2J1dHRvbj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCByZXRhcmdldHMgdGhlIGZ1bGxzY3JlZW4gZWxlbWVudCBpbnNpZGUg
YSBzaGFkb3cgdHJlZS4nKTsKKworbGV0IHNoYWRvd0hvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaG9zdCcpOworbGV0IHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7
bW9kZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuPmZ1bGwgc2Ny
ZWVuIGNvbnRlbnQ8L3NwYW4+JzsKKworZnVuY3Rpb24gZ29GdWxsc2NyZWVuKCkgeworICAgIHNo
YWRvd1Jvb3QucXVlcnlTZWxlY3Rvcignc3BhbicpLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7
CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChkb25lKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2Ugd2FzIG5vdCBmaXJlZCcpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAyMDAw
KTsKK30KKworbGV0IGRvbmUgPSBmYWxzZTsKK2Z1bmN0aW9uIGZpbmFsaXplVGVzdCgpIHsKKyAg
ICBpZiAoZG9uZSkKKyAgICAgICAgcmV0dXJuOworICAgIGRvbmUgPSB0cnVlOworCisgICAgc2hv
dWxkQmUoJ2RvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCcsICdzaGFkb3dI
b3N0Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3NoYWRvd1Jvb3QuYWRkRXZlbnRMaXN0
ZW5lcignd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZpbmFsaXplVGVzdCk7Citkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCdmdWxsc2NyZWVuY2hhbmdlJywgZmluYWxpemVUZXN0KTsgLy8gU3Rh
bmRhcmQgZnVsbHNjcmVlbmNoYW5nZSBvbmx5IGZpcmVzIGF0IGRvY3VtZW50IGxldmVsLgorCits
ZXQgYnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7CitidXR0b24ub25j
bGljayA9IGdvRnVsbHNjcmVlbjsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGJ1dHRvbi5v
ZmZzZXRMZWZ0ICsgNSwgYnV0dG9uLm9mZnNldFRvcCArIDUpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNj
cmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3Jl
ZW5FbGVtZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitUZXN0IHRoYXQgd2Via2l0RnVs
bHNjcmVlbkVsZW1lbnQgcmV0YXJnZXRzIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQgYXNzaWduZWQg
dG8gYSBzbG90LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVu
dC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCBpcyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0
aW9uIikKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
ZnVsbCBzY3JlZW4gY29udGVudAorRW50ZXIgZnVsbHNjcmVlbgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWlu
LXNsb3QtZnVsbHNjcmVlbkVsZW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPGRpdiBpZD0iaG9zdCI+PHNlY3Rpb24+ZnVsbCBzY3JlZW4gY29udGVudDwv
c2VjdGlvbj48L2Rpdj4KKzxidXR0b24+RW50ZXIgZnVsbHNjcmVlbjwvYnV0dG9uPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisK
K2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQgcmV0YXJnZXRz
IHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQgYXNzaWduZWQgdG8gYSBzbG90LicpOworCitsZXQgc2hh
ZG93SG9zdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob3N0Jyk7CitsZXQgc2hhZG93Um9v
dCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworc2hhZG93Um9v
dC5pbm5lckhUTUwgPSAnPHNwYW4+PHNsb3Q+PC9zbG90Pjwvc3Bhbj4nOworCitmdW5jdGlvbiBn
b0Z1bGxzY3JlZW4oKSB7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2VjdGlvbicpLndl
YmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRlc3RGYWls
ZWQoJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Ugd2FzIG5vdCBmaXJlZCcpOworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9LCAyMDAwKTsKK30KKworbGV0IGRvbmUgPSBmYWxzZTsKK2Z1bmN0
aW9uIGZpbmFsaXplVGVzdCgpIHsKKyAgICBpZiAoZG9uZSkKKyAgICAgICAgcmV0dXJuOworICAg
IGRvbmUgPSB0cnVlOworCisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5F
bGVtZW50JywgJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24iKScpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitzaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3QpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
ZnVsbHNjcmVlbmNoYW5nZScsIGZpbmFsaXplVGVzdCk7IC8vIFN0YW5kYXJkIGZ1bGxzY3JlZW5j
aGFuZ2Ugb25seSBmaXJlcyBhdCBkb2N1bWVudCBsZXZlbC4KKworbGV0IGJ1dHRvbiA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOworYnV0dG9uLm9uY2xpY2sgPSBnb0Z1bGxzY3Jl
ZW47CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b24ub2Zmc2V0TGVmdCArIDUsIGJ1
dHRvbi5vZmZzZXRUb3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC13ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qtd2Via2l0Q3VycmVu
dEZ1bGxTY3JlZW5FbGVtZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LXdlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBA
QAorVGVzdCB0aGF0IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCByZXRhcmdldHMgdGhl
IGZ1bGxzY3JlZW4gZWxlbWVudCBhc3NpZ25lZCB0byBhIHNsb3QuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCBpcyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uIikKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorZnVsbCBzY3JlZW4gY29udGVudAor
RW50ZXIgZnVsbHNjcmVlbgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxz
Y3JlZW4taW4tc2xvdC13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LXdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qtd2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iaG9zdCI+PHNlY3Rpb24+ZnVs
bCBzY3JlZW4gY29udGVudDwvc2VjdGlvbj48L2Rpdj4KKzxidXR0b24+RW50ZXIgZnVsbHNjcmVl
bjwvYnV0dG9uPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgd2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50IHJldGFyZ2V0cyB0aGUgZnVsbHNjcmVlbiBlbGVtZW50IGFzc2lnbmVk
IHRvIGEgc2xvdC4nKTsKKworbGV0IHNoYWRvd0hvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaG9zdCcpOworbGV0IHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9k
ZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuPjxzbG90Pjwvc2xv
dD48L3NwYW4+JzsKKworZnVuY3Rpb24gZ29GdWxsc2NyZWVuKCkgeworICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ3NlY3Rpb24nKS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIHdhcyBu
b3QgZmlyZWQnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMjAwMCk7Cit9CisK
K2xldCBkb25lID0gZmFsc2U7CitmdW5jdGlvbiBmaW5hbGl6ZVRlc3QoKSB7CisgICAgaWYgKGRv
bmUpCisgICAgICAgIHJldHVybjsKKyAgICBkb25lID0gdHJ1ZTsKKworICAgIHNob3VsZEJlKCdk
b2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQnLCAnZG9jdW1lbnQucXVlcnlT
ZWxlY3Rvcigic2VjdGlvbiIpJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3NoYWRvd1Jv
b3QuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZpbmFsaXplVGVz
dCk7Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmdWxsc2NyZWVuY2hhbmdlJywgZmluYWxp
emVUZXN0KTsgLy8gU3RhbmRhcmQgZnVsbHNjcmVlbmNoYW5nZSBvbmx5IGZpcmVzIGF0IGRvY3Vt
ZW50IGxldmVsLgorCitsZXQgYnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9u
Jyk7CitidXR0b24ub25jbGljayA9IGdvRnVsbHNjcmVlbjsKKworaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKGJ1dHRvbi5vZmZzZXRMZWZ0ICsgNSwgYnV0dG9uLm9mZnNldFRvcCArIDUpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30K
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>296615</attachid>
            <date>2016-12-08 19:21:18 -0800</date>
            <delta_ts>2016-12-08 19:25:40 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews121 for ios-simulator-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>0</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296619</attachid>
            <date>2016-12-08 19:25:30 -0800</date>
            <delta_ts>2016-12-09 13:34:17 -0800</delta_ts>
            <desc>Skip the test on iOS WK2</desc>
            <filename>bug-158471-20161208192449.patch</filename>
            <type>text/plain</type>
            <size>36718</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTEyLTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LndlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50IGxlYWtzIGVsZW1lbnRzIGluc2lkZSBhIHNoYWRvdyB0cmVlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5
IGNhbGxpbmcgdGhlIG5ld2x5IGFkZGVkIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlIGluIHdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudEZvckJpbmRpbmdzCisgICAgICAgIGFuZCB3ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudEZvckJpbmRpbmcuCisKKyAgICAgICAgVGhlIHNwZWNpZmljYXRp
b24gKGh0dHBzOi8vZnVsbHNjcmVlbi5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb2N1bWVudC1mdWxs
c2NyZWVuZWxlbWVudCkgdXNlcyAidGhlIHJlc3VsdCBvZgorICAgICAgICByZXRhcmdldGluZyBm
dWxsc2NyZWVuIGVsZW1lbnQiIGFuZCByZXR1cm5zIG51bGwgaWYgdGhlIHJlc3VsdCBpcyBub3Qg
aW4gdGhlIHNhbWUgdHJlZSBhcyB0aGUgY29udGV4dCBvYmplY3QuCisKKyAgICAgICAgVGhpcyBp
cyBlcXVpdmFsZW50IHRvIHRoZSBhbGdvcml0aG0gaW1wbGVtZW50ZWQgYnkgYW5jZXN0b3JFbGVt
ZW50SW5UaGlzU2NvcGUuIE9ic2VydmUgdGhhdCB0aGUgcmV0YXJnZXRpbmcKKyAgICAgICAgYWxn
b3JpdGhtIChodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3JldGFyZ2V0KSBmaW5kcyB0aGUg
bG93ZXN0IGNvbW1vbiB0cmVlIHNjb3BlIG9mIHRoZSByZXRhcmdldGVlIGFuZAorICAgICAgICB0
aGUgY29udGV4dCBvYmplY3QuIFRoZXJlIGFyZSB0d28gY2FzZXMgdG8gY29uc2lkZXIuCisKKyAg
ICAgICAgMS4gVGhlIGNvbnRleHQgb2JqZWN0J3MgdHJlZSBzY29wZSBpcyB0aGUgbG93ZXN0IGNv
bW1vbiB0cmVlIHNjb3BlOiBJbiB0aGlzIGNhc2UsIGFuIGFuY2VzdG9yIHNoYWRvdyBob3N0IG9y
CisgICAgICAgIHRoZSByZXRhcmdldGVlIGl0c2VsZiBpcyBpbiB0aGlzIHRyZWUgc2NvcGUuIEl0
J3Mgc3VmZmljaWVudCB0cmF2ZXJzZSBldmVyeSBzaGFkb3cgaG9zdCB0byBmaW5kIHRoZSBvbmUg
dGhhdAorICAgICAgICByZXNpZGVzIGluIHRoZSBzYW1lIHRyZWUgc2NvcGUgYXMgdGhlIGNvbnRl
eHQgb2JqZWN0LiBUaGlzIGlzIHByZWNpc2VseSB3aGF0IGFuY2VzdG9yRWxlbWVudEluVGhpc1Nj
b3BlIGRvZXMuCisKKyAgICAgICAgMi4gVGhlIGNvbnRleHQgb2JqZWN0J3MgdHJlZSBzY29wZSBp
cyBub3QgdGhlIGxvd2VzdCBjb21tb24gdHJlZSBzY29wZTogSW4gdGhpcyBjYXNlLCB0aGUgY29u
dGV4dCBvYmplY3QgaXMKKyAgICAgICAgaW5zaWRlIGEgc2hhZG93IHRyZWUgd2hvc2UgYW5jZXN0
b3Igc2hhZG93IGhvc3QgaXMgaW4gdGhlIGxvd2VzdCBjb21tb24gdHJlZSBzY29wZS4gSW4gdGhp
cyBjYXNlLCByZXRhcmdldGluZworICAgICAgICBhbGdvcml0aG0gZmluZHMgYSBub2RlIHdoaWNo
IGlzIG5vdCBpbiB0aGUgc2FtZSB0cmVlIGFzIHRoZSBjb250ZXh0IG9iamVjdC4gVGh1cywgdGhl
IHJlc3VsdCBpcyBudWxsLgorICAgICAgICBhbmNlc3RvckVsZW1lbnRJblRoaXNTY29wZSB0cmF2
ZXJlcyBhbmNlc3RvciBzaGFkb3cgaG9zdHMgYW5kIHJldHVybnMgbnVsbCBpZiBubyBzaGFkb3cg
aG9zdCdzIHRyZWUgc2NvcGUKKyAgICAgICAgbWF0Y2hlcyB0aGF0IG9mIHRoZSBjb250ZXh0IG9i
amVjdCdzIHRyZWUgc2NvcGUuIFRodXMsIGl0IHdvdWxkIHJldHVybiBudWxsIGluIHRoaXMgY2Fz
ZSBhcyBkZXNpcmVkLgorCisgICAgICAgIEFsc28gcmVuYW1lZCBUcmVlU2NvcGU6OmZvY3VzZWRF
bGVtZW50IHRvIGZvY3VzZWRFbGVtZW50SW5TY29wZSBmb3IgY2xhcml0eSBzaW5jZSBEb2N1bWVu
dCB3aGljaCBpbmhlcml0cworICAgICAgICBmcm9tIFRyZWVTY29wZSBhbHNvIGhhcyBhIGRpc3Rp
bmN0IG1lbWJlciBmdW5jdGlvbiBuYW1lZCBmb2N1c2VkRWxlbWVudCBjYWxsZWQgYnkgVHJlZVNj
b3BlOjpmb2N1c2VkRWxlbWVudCwKKyAgICAgICAgYW5kIHVzZWQgYW5jZXN0b3JFbGVtZW50SW5U
aGlzU2NvcGUgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBhbGdvcml0aG0uCisKKyAgICAgICAgVGVz
dHM6IGZhc3Qvc2hhZG93LWRvbS9hY3RpdmVFbGVtZW50LWZvci1mb2N1c2VkLWVsZW1lbnQtaW4t
YW5vdGhlci1zaGFkb3cuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL2JsdXIt
b24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxl
bWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1z
aGFkb3ctd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVlbkVsZW1lbnQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC13ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVGb2N1c2VkTm9kZU9mU3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWN0aXZlRWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Rm9yQmluZGluZ3MpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEZvckJpbmRpbmdzKTogQWRk
ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpibHVyKToKKyAgICAgICAgKiBkb20vU2hh
ZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YWN0aXZlRWxlbWVudCk6
CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKTogUmVuYW1lZCBmcm9tIGFuY2VzdG9ySW5UaGlz
U2NvcGUgZm9yIGNsYXJpdHkuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFuY2VzdG9y
RWxlbWVudEluVGhpc1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6Zm9jdXNl
ZEVsZW1lbnRJblNjb3BlKTogUmVuYW1lZCBmcm9tIGZvY3VzZWRFbGVtZW50IHRvIGRpc2FtYmln
dWF0ZSBpdCBmcm9tIERvY3VtZW50J3MKKyAgICAgICAgZm9jdXNlZEVsZW1lbnQuCisgICAgICAg
ICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RQb3NpdGlvbkZvckVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjphZGp1c3RQb3NpdGlvbkZvclN0YXJ0KToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVQb3NpdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Zmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXN0RWRpdGFibGVQb3NpdGlvbkJlZm9yZVBvc2l0aW9uSW5Sb290
KToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZWxlY3Rpb25TaGFkb3dBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246
OnNoYWRvd0FkanVzdGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNo
YWRvd0FkanVzdGVkT2Zmc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRU
ZXN0UmVzdWx0KTogQWRkZWQgYSBGSVhNRSBoZXJlIHNpbmNlIHRoaXMgaXMgY2xlYXJseSB3cm9u
ZyBmb3IKKyAgICAgICAgc2hhZG93IHRyZWVzIGNyZWF0ZWQgYnkgYXV0aG9yIHNjcmlwdHMuCisK
IDIwMTYtMTItMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2Vi
SURMXSBSZW1vdmUgY3VzdG9tIGJpbmRpbmdzIGZvciBHZW9sb2NhdGlvbgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQ1LDcgKzM1NDUsNyBAQCB2b2lkIERv
Y3VtZW50OjpyZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlCiAgICAgaWYgKCFtX2ZvY3VzZWRFbGVt
ZW50IHx8IHBhZ2VDYWNoZVN0YXRlKCkgIT0gTm90SW5QYWdlQ2FjaGUpIC8vIElmIHRoZSBkb2N1
bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZSwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIG91
dCB0aGUgZm9jdXNlZCBub2RlLgogICAgICAgICByZXR1cm47CiAKLSAgICBFbGVtZW50KiBmb2N1
c2VkRWxlbWVudCA9IG5vZGUudHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnQoKTsKKyAgICBFbGVt
ZW50KiBmb2N1c2VkRWxlbWVudCA9IG5vZGUudHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnRJblNj
b3BlKCk7CiAgICAgaWYgKCFmb2N1c2VkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIApA
QCAtNjc3NCw3ICs2Nzc0LDcgQEAgYm9vbCBEb2N1bWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlYwogCiBFbGVtZW50KiBEb2N1bWVudDo6YWN0aXZlRWxlbWVudCgpCiB7Ci0gICAgaWYgKEVs
ZW1lbnQqIGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5mb2N1c2VkRWxlbWVudCgpKQorICAgIGlmIChF
bGVtZW50KiBlbGVtZW50ID0gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnRJblNjb3BlKCkpCiAg
ICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIHJldHVybiBib2R5T3JGcmFtZXNldCgpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg4LDcgKzEwODgsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2Z1
bGxTY3JlZW5FbGVtZW50LmdldCgpOyB9CiAgICAgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9h
cmRJbnB1dEFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgp
ICYmIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW47IH0KICAgICBFbGVtZW50KiB3ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbGVt
ZW50LmdldCgpOyB9Ci0gICAgCisgICAgRWxlbWVudCogd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBhbmNlc3RvckVsZW1lbnRJblRoaXNT
Y29wZSh3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSk7IH0KKwogICAgIGVudW0gRnVs
bFNjcmVlbkNoZWNrVHlwZSB7CiAgICAgICAgIEVuZm9yY2VJRnJhbWVBbGxvd0Z1bGxTY3JlZW5S
ZXF1aXJlbWVudCwKICAgICAgICAgRXhlbXB0SUZyYW1lQWxsb3dGdWxsU2NyZWVuUmVxdWlyZW1l
bnQsCkBAIC0xMTE1LDYgKzExMTYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3Q7CiAgICAgRWxlbWVudCogd2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAhbV9mdWxsU2NyZWVuRWxlbWVudFN0
YWNrLmlzRW1wdHkoKSA/IG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5sYXN0KCkuZ2V0KCkgOiBu
dWxscHRyOyB9CisgICAgRWxlbWVudCogd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRGb3JCaW5kaW5n
cygpIGNvbnN0IHsgcmV0dXJuIGFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlKHdlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50KCkpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3ZWJraXRFeGl0RnVs
bHNjcmVlbigpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNp
b24gMjA5NTc2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMTQzLDEyICsxNDMsMTIgQEAKICAgICAvLyBNb3ppbGxhIHZlcnNpb24KICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW47CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2Vk
OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVu
RWxlbWVudDsKKyAgICBbSW1wbGVtZW50ZWRBcz13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgd2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50OwogICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogCiAg
ICAgLy8gVzNDIHZlcnNpb24KICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRG
dWxsc2NyZWVuRW5hYmxlZDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gd2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQ7CisgICAgW0ltcGxlbWVudGVkQXM9d2Via2l0RnVsbHNjcmVlbkVs
ZW1lbnRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHdlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50OwogICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsNyArMjQzOCw3
IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKFNlbGUKIHZvaWQgRWxlbWVu
dDo6Ymx1cigpCiB7CiAgICAgY2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7Ci0gICAgaWYg
KHRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50KCkgPT0gdGhpcykgeworICAgIGlmICh0cmVlU2Nv
cGUoKS5mb2N1c2VkRWxlbWVudEluU2NvcGUoKSA9PSB0aGlzKSB7CiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+cGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudCgwLCBmcmFtZSk7CiAgICAgICAg
IGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAkocmV2aXNpb24gMjA5NTc2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcg
KzExMCw3IEBAIHByaXZhdGU6CiAKIGlubGluZSBFbGVtZW50KiBTaGFkb3dSb290OjphY3RpdmVF
bGVtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnQo
KTsKKyAgICByZXR1cm4gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnRJblNjb3BlKCk7CiB9CiAK
IGlubGluZSBTaGFkb3dSb290KiBOb2RlOjpzaGFkb3dSb290KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCShyZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIE5vZGUm
IFRyZWVTY29wZTo6cmV0YXJnZXRUb1Njb3BlKE5vZGUmIG4KICAgICByZXR1cm4gKnNoYWRvd1Jv
b3RJbkxvd2VzdENvbW1vblRyZWVTY29wZS5ob3N0KCk7CiB9CiAKLU5vZGUqIFRyZWVTY29wZTo6
YW5jZXN0b3JJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdAorTm9kZSogVHJlZVNjb3BlOjph
bmNlc3Rvck5vZGVJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdAogewogICAgIGZvciAoOyBu
b2RlOyBub2RlID0gbm9kZS0+c2hhZG93SG9zdCgpKSB7CiAgICAgICAgIGlmICgmbm9kZS0+dHJl
ZVNjb3BlKCkgPT0gdGhpcykKQEAgLTIwNiw2ICsyMDYsMTcgQEAgTm9kZSogVHJlZVNjb3BlOjph
bmNlc3RvckluVGhpc1Njb3BlKE5vZAogICAgIHJldHVybiBudWxscHRyOwogfQogCitFbGVtZW50
KiBUcmVlU2NvcGU6OmFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlKEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit7CisgICAgZm9yICg7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5zaGFkb3dI
b3N0KCkpIHsKKyAgICAgICAgaWYgKCZlbGVtZW50LT50cmVlU2NvcGUoKSA9PSB0aGlzKQorICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIGlmICghZWxlbWVudC0+aXNJblNoYWRv
d1RyZWUoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50
JiBpbWFnZU1hcCkKIHsKICAgICBBdG9taWNTdHJpbmdJbXBsKiBuYW1lID0gaW1hZ2VNYXAuZ2V0
TmFtZSgpLmltcGwoKTsKQEAgLTM2NCwyOCArMzc1LDE1IEBAIHN0YXRpYyBFbGVtZW50KiBmb2N1
c2VkRnJhbWVPd25lckVsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRWxlbWVudCog
VHJlZVNjb3BlOjpmb2N1c2VkRWxlbWVudCgpCitFbGVtZW50KiBUcmVlU2NvcGU6OmZvY3VzZWRF
bGVtZW50SW5TY29wZSgpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9yb290Tm9kZS5k
b2N1bWVudCgpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC5mb2N1c2VkRWxlbWVu
dCgpOwogCiAgICAgaWYgKCFlbGVtZW50ICYmIGRvY3VtZW50LnBhZ2UoKSkKICAgICAgICAgZWxl
bWVudCA9IGZvY3VzZWRGcmFtZU93bmVyRWxlbWVudChkb2N1bWVudC5wYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpLCBkb2N1bWVudC5mcmFtZSgpKTsKLSAgICBpZiAoIWVs
ZW1lbnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFRyZWVTY29wZSogdHJlZVNjb3Bl
ID0gJmVsZW1lbnQtPnRyZWVTY29wZSgpOwotICAgIFJFTEVBU0VfQVNTRVJUKCZkb2N1bWVudCA9
PSAmdHJlZVNjb3BlLT5kb2N1bWVudFNjb3BlKCkpOwotICAgIHdoaWxlICh0cmVlU2NvcGUgIT0g
dGhpcyAmJiB0cmVlU2NvcGUgIT0gJmRvY3VtZW50KSB7Ci0gICAgICAgIGF1dG8mIHJvb3ROb2Rl
ID0gdHJlZVNjb3BlLT5yb290Tm9kZSgpOwotICAgICAgICBpZiAoaXM8U2hhZG93Um9vdD4ocm9v
dE5vZGUpKQotICAgICAgICAgICAgZWxlbWVudCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KHJvb3RO
b2RlKS5ob3N0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB0cmVlU2NvcGUgPSAmZWxlbWVudC0+dHJlZVNjb3BlKCk7Ci0gICAgfQotICAgIGlm
ICh0aGlzICE9IHRyZWVTY29wZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGVsZW1lbnQ7CisKKyAgICByZXR1cm4gYW5jZXN0b3JFbGVtZW50SW5UaGlzU2NvcGUoZWxlbWVu
dCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpc3RUcmVlU2NvcGVzKE5vZGUqIG5vZGUsIFZlY3RvcjxU
cmVlU2NvcGUqLCA1PiYgdHJlZVNjb3BlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgJKHJl
dmlzaW9uIDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgVHJlZVNjb3BlKiBwYXJlbnRU
cmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFRyZWVTY29wZTsgfQogICAgIHZvaWQg
c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSYpOwogCi0gICAgRWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQoKTsKKyAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudEluU2NvcGUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBnZXRBbGxFbGVtZW50
c0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CkBAIC03Miw3ICs3Miw4IEBAIHB1Ymxp
YzoKICAgICAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3JldGFyZ2V0CiAgICAgTm9k
ZSYgcmV0YXJnZXRUb1Njb3BlKE5vZGUmKSBjb25zdDsKIAotICAgIE5vZGUqIGFuY2VzdG9ySW5U
aGlzU2NvcGUoTm9kZSopIGNvbnN0OworICAgIE5vZGUqIGFuY2VzdG9yTm9kZUluVGhpc1Njb3Bl
KE5vZGUqKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBhbmNlc3RvckVsZW1l
bnRJblRoaXNTY29wZShFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGFkZEltYWdlTWFwKEhU
TUxNYXBFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAyMDk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNyArNDczLDcgQEAgc3RhdGljIFBvc2l0aW9u
IGFkanVzdFBvc2l0aW9uRm9yRW5kKGNvbgogCiAgICAgQVNTRVJUKCZjdXJyZW50UG9zaXRpb24u
Y29udGFpbmVyTm9kZSgpLT50cmVlU2NvcGUoKSAhPSAmdHJlZVNjb3BlKTsKIAotICAgIGlmIChO
b2RlKiBhbmNlc3RvciA9IHRyZWVTY29wZS5hbmNlc3RvckluVGhpc1Njb3BlKGN1cnJlbnRQb3Np
dGlvbi5jb250YWluZXJOb2RlKCkpKSB7CisgICAgaWYgKE5vZGUqIGFuY2VzdG9yID0gdHJlZVNj
b3BlLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKGN1cnJlbnRQb3NpdGlvbi5jb250YWluZXJOb2Rl
KCkpKSB7CiAgICAgICAgIGlmIChhbmNlc3Rvci0+Y29udGFpbnMoc3RhcnRDb250YWluZXJOb2Rl
KSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkFmdGVyTm9kZShhbmNlc3Rvcik7CiAgICAg
ICAgIHJldHVybiBwb3NpdGlvbkJlZm9yZU5vZGUoYW5jZXN0b3IpOwpAQCAtNDkxLDcgKzQ5MSw3
IEBAIHN0YXRpYyBQb3NpdGlvbiBhZGp1c3RQb3NpdGlvbkZvclN0YXJ0KGMKIAogICAgIEFTU0VS
VCgmY3VycmVudFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKS0+dHJlZVNjb3BlKCkgIT0gJnRyZWVT
Y29wZSk7CiAgICAgCi0gICAgaWYgKE5vZGUqIGFuY2VzdG9yID0gdHJlZVNjb3BlLmFuY2VzdG9y
SW5UaGlzU2NvcGUoY3VycmVudFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICBpZiAo
Tm9kZSogYW5jZXN0b3IgPSB0cmVlU2NvcGUuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUoY3VycmVu
dFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSkpIHsKICAgICAgICAgaWYgKGFuY2VzdG9yLT5jb250
YWlucyhlbmRDb250YWluZXJOb2RlKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkJlZm9y
ZU5vZGUoYW5jZXN0b3IpOwogICAgICAgICByZXR1cm4gcG9zaXRpb25BZnRlck5vZGUoYW5jZXN0
b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9u
IDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MywxMiArODMsMTIgQEAgaW50IGNvbXBhcmVQb3NpdGlvbnMoY29uc3Qg
UG9zaXRpb24mIGEsIAogICAgIGlmICghY29tbW9uU2NvcGUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgTm9kZSogbm9kZUEgPSBjb21tb25TY29wZS0+YW5jZXN0b3JJblRoaXNTY29wZShhLmNv
bnRhaW5lck5vZGUoKSk7CisgICAgTm9kZSogbm9kZUEgPSBjb21tb25TY29wZS0+YW5jZXN0b3JO
b2RlSW5UaGlzU2NvcGUoYS5jb250YWluZXJOb2RlKCkpOwogICAgIEFTU0VSVChub2RlQSk7CiAg
ICAgYm9vbCBoYXNEZXNjZW5kZW50QSA9IG5vZGVBICE9IGEuY29udGFpbmVyTm9kZSgpOwogICAg
IGludCBvZmZzZXRBID0gaGFzRGVzY2VuZGVudEEgPyAwIDogYS5jb21wdXRlT2Zmc2V0SW5Db250
YWluZXJOb2RlKCk7CiAKLSAgICBOb2RlKiBub2RlQiA9IGNvbW1vblNjb3BlLT5hbmNlc3Rvcklu
VGhpc1Njb3BlKGIuY29udGFpbmVyTm9kZSgpKTsKKyAgICBOb2RlKiBub2RlQiA9IGNvbW1vblNj
b3BlLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShiLmNvbnRhaW5lck5vZGUoKSk7CiAgICAgQVNT
RVJUKG5vZGVCKTsKICAgICBib29sIGhhc0Rlc2NlbmRlbnRCID0gbm9kZUIgIT0gYi5jb250YWlu
ZXJOb2RlKCk7CiAgICAgaW50IG9mZnNldEIgPSBoYXNEZXNjZW5kZW50QiA/IDAgOiBiLmNvbXB1
dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBQb3NpdGlvbiBm
aXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0CiAgICAgUG9zaXRpb24gY2FuZGlkYXRlID0g
cG9zaXRpb247CiAKICAgICBpZiAoJnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnRyZWVTY29w
ZSgpICE9ICZoaWdoZXN0Um9vdC0+dHJlZVNjb3BlKCkpIHsKLSAgICAgICAgYXV0byogc2hhZG93
QW5jZXN0b3IgPSBoaWdoZXN0Um9vdC0+dHJlZVNjb3BlKCkuYW5jZXN0b3JJblRoaXNTY29wZShw
b3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICAgICAgYXV0byogc2hhZG93QW5jZXN0b3Ig
PSBoaWdoZXN0Um9vdC0+dHJlZVNjb3BlKCkuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUocG9zaXRp
b24uZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgICAgIGlmICghc2hhZG93QW5jZXN0b3IpCiAgICAg
ICAgICAgICByZXR1cm4geyB9OwogCkBAIC0zMjAsNyArMzIwLDcgQEAgUG9zaXRpb24gbGFzdEVk
aXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdAogICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHBvc2l0
aW9uOwogCiAgICAgaWYgKCZwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT50cmVlU2NvcGUoKSAh
PSAmaGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGF1dG8qIHNoYWRvd0FuY2Vz
dG9yID0gaGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpLmFuY2VzdG9ySW5UaGlzU2NvcGUocG9zaXRp
b24uZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgICAgIGF1dG8qIHNoYWRvd0FuY2VzdG9yID0gaGln
aGVzdFJvb3QtPnRyZWVTY29wZSgpLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKHBvc2l0aW9uLmRl
cHJlY2F0ZWROb2RlKCkpOwogICAgICAgICBpZiAoIXNoYWRvd0FuY2VzdG9yKQogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAko
cmV2aXNpb24gMjA5NTc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBOb2RlKiBzZWxlY3Rpb25T
aGFkb3dBbmNlc3RvcihGcmEKICAgICBpZiAoIW5vZGUtPmlzSW5TaGFkb3dUcmVlKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIEZJWE1FOiBVbmNsZWFyIG9uIHdoeSB0aGlzIG5l
ZWRzIHRvIGJlIHRoZSBwb3NzaWJseSBudWxsIGZyYW1lLmRvY3VtZW50KCkgaW5zdGVhZCBvZiB0
aGUgbmV2ZXIgbnVsbCBub2RlLT5kb2N1bWVudCgpLgotICAgIHJldHVybiBmcmFtZS5kb2N1bWVu
dCgpLT5hbmNlc3RvckluVGhpc1Njb3BlKG5vZGUpOworICAgIHJldHVybiBmcmFtZS5kb2N1bWVu
dCgpLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShub2RlKTsKIH0KIAogRE9NU2VsZWN0aW9uOjpE
T01TZWxlY3Rpb24oRnJhbWUmIGZyYW1lKQpAQCAtNDM2LDcgKzQzNiw3IEBAIE5vZGUqIERPTVNl
bGVjdGlvbjo6c2hhZG93QWRqdXN0ZWROb2RlKGMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvKiBjb250YWluZXJOb2RlID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAg
IGF1dG8qIGFkanVzdGVkTm9kZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmFuY2VzdG9ySW5UaGlz
U2NvcGUoY29udGFpbmVyTm9kZSk7CisgICAgYXV0byogYWRqdXN0ZWROb2RlID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUoY29udGFpbmVyTm9kZSk7CiAgICAg
aWYgKCFhZGp1c3RlZE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC00NTIsNyAr
NDUyLDcgQEAgdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3RlZE9mZgogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGF1dG8qIGNvbnRhaW5lck5vZGUgPSBwb3NpdGlvbi5jb250YWlu
ZXJOb2RlKCk7Ci0gICAgYXV0byogYWRqdXN0ZWROb2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YW5jZXN0b3JJblRoaXNTY29wZShjb250YWluZXJOb2RlKTsKKyAgICBhdXRvKiBhZGp1c3RlZE5v
ZGUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShjb250YWlu
ZXJOb2RlKTsKICAgICBpZiAoIWFkanVzdGVkTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9u
IDIwOTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjY4LDggKzY2OCw5IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRk
Tm9kZVRvUmVjdEJhc2VkVGUKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CisgICAgLy8gRklYTUU6IFRoaXMgbW92ZXMgb3V0IG9mIGEgYXV0aG9yIHNoYWRvdyB0cmVlLgog
ICAgIGlmIChyZXF1ZXN0LmRpc2FsbG93c1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQoKSkKLSAgICAg
ICAgbm9kZSA9IG5vZGUtPmRvY3VtZW50KCkuYW5jZXN0b3JJblRoaXNTY29wZShub2RlKTsKKyAg
ICAgICAgbm9kZSA9IG5vZGUtPmRvY3VtZW50KCkuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUobm9k
ZSk7CiAKICAgICBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKIApAQCAt
Njg4LDggKzY4OSw5IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGUK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gRklYTUU6IFRo
aXMgbW92ZXMgb3V0IG9mIGEgYXV0aG9yIHNoYWRvdyB0cmVlLgogICAgIGlmIChyZXF1ZXN0LmRp
c2FsbG93c1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQoKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPmRv
Y3VtZW50KCkuYW5jZXN0b3JJblRoaXNTY29wZShub2RlKTsKKyAgICAgICAgbm9kZSA9IG5vZGUt
PmRvY3VtZW50KCkuYW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUobm9kZSk7CiAKICAgICBtdXRhYmxl
UmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA5NTgzKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQg
bGVha3MgZWxlbWVudHMgaW5zaWRlIGEgc2hhZG93IHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgQVBJIGZvciBiaW5kaW5ncyB0byBh
dm9pZCBleHBvc2luZyBub2RlcyBpbnNpZGUgYSBzaGFkb3cgdHJlZS4KKworICAgICAgICAqIERP
TS9ET01Eb2N1bWVudC5tbToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgd2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IHdlYmtpdEZ1bGxzY3Jl
ZW5FbGVtZW50XSk6CisKIDIwMTYtMTItMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgU2hhcmVkQXJyYXlCdWZmZXIsIHJlbW92ZSB0aGUgZmxhZwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQkocmV2aXNpb24gMjA5NTc2KQor
KysgU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjEsNyArMzYxLDcgQEAgLSAoQk9PTCl3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFs
bAogLSAoRE9NRWxlbWVudCAqKXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudAogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKSk7CisgICAg
cmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnRGb3JCaW5kaW5ncygpKSk7CiB9CiAKIC0gKEJPT0wpd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQK
QEAgLTM3Myw3ICszNzMsNyBAQCAtIChCT09MKXdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkCiAtIChE
T01FbGVtZW50ICopd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKSk7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0
cihJTVBMLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudEZvckJpbmRpbmdzKCkpKTsKIH0KIAogI2Vu
ZGlmCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk1OTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxNi0xMi0wOCAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVu
RWxlbWVudCBsZWFrcyBlbGVtZW50cyBpbnNpZGUgYSBzaGFkb3cgdHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIGNhbGxp
bmcgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQgYW5kIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCBvbiBhIGZ1bGxzY3JlZW5lZCBlbGVtZW50CisgICAgICAgIHRvIG1ha2Ugc3VyZSB0aGV5
IHJldHVybiB0aGUgc2hhZG93IGhvc3QgaW5zdGVhZC4KKworICAgICAgICBBbHNvIGFkZGVkIHR3
byB1bnJlbGF0ZWQgdGVzdCBjYXNlcyBmb3IgdGVtcG9yYWwgcmVncmVzc2lvbnMgSSBpbnRyb2R1
Y2VkIHdoaWxlIHdvcmtpbmcgb24gdGhpcyBwYXRjaC4KKworICAgICAgICBTa2lwIHRoZSBmdWxs
c2NyZWVuIHRlc3RzIG9uIGlPUyBXSzIgc2luY2UgZXZlbnRTZW5kZXIgZG9lc24ndCB3b3JrIHRo
ZXJlLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3Vz
ZWQtZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2hhZG93LWRvbS9hY3RpdmVFbGVtZW50LWZvci1mb2N1c2VkLWVsZW1lbnQtaW4t
YW5vdGhlci1zaGFkb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Js
dXItb24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2JsdXItb24tc2hhZG93LWhvc3Qt
d2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxlbWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNo
YWRvdy1mdWxsc2NyZWVuRWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRv
dy1kb20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3Jl
ZW4taW4tc2hhZG93LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5F
bGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Z1
bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LXdlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRv
bS9mdWxsc2NyZWVuLWluLXNsb3Qtd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTYtMTItMDggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBFeGl0aW5nIGZ1bGxzY3JlZW4gd2l0
aCBwYXVzZWQgbWVkaWEgc2hvd3MgdGhlIHN0YXJ0IGJ1dHRvbgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3VzZWQtZWxlbWVudC1pbi1hbm90
aGVyLXNoYWRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3VzZWQtZWxlbWVudC1pbi1hbm90aGVyLXNo
YWRvdy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3VzZWQtZWxlbWVudC1pbi1hbm90aGVyLXNoYWRv
dy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgU2hh
ZG93Um9vdC5hY3RpdmVFbGVtZW50IG11c3QgcmV0dXJuIG51bGwgdGhlIGZvY3VzZWQgZWxlbWVu
dCBpcyBpbiBhbm90aGVyIHNoYWRvdyB0cmVlIHdoZW4gYm90aCBzaGFkb3cgcm9vdHMgYXJlIG9w
ZW4uIAorUEFTUyBTaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQgbXVzdCByZXR1cm4gbnVsbCB0aGUg
Zm9jdXNlZCBlbGVtZW50IGlzIGluIGFub3RoZXIgc2hhZG93IHRyZWUgd2hlbiBib3RoIHNoYWRv
dyByb290cyBhcmUgY2xvc2VkLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L2FjdGl2ZUVsZW1lbnQtZm9yLWZvY3VzZWQtZWxlbWVudC1pbi1hbm90aGVyLXNoYWRvdy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9hY3RpdmVFbGVtZW50
LWZvci1mb2N1c2VkLWVsZW1lbnQtaW4tYW5vdGhlci1zaGFkb3cuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vYWN0aXZlRWxlbWVudC1mb3ItZm9jdXNl
ZC1lbGVtZW50LWluLWFub3RoZXItc2hhZG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0iYXV0
aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+
Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlNoYWRvd1Jvb3QncyAiPgorPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hh
ZG93LyNleHRlbnNpb25zLXRvLWV2ZW50LWludGVyZmFjZSI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ldmVudC1wYXRoLXRlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0QWN0
aXZlRWxlbWVudFdpdGhGb2N1c2VkRWxlbWVudEluQW5vdGhlclNoYWRvdyhtb2RlKSB7CisgICAg
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChob3N0KTsK
KyAgICAgICAgY29uc3Qgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9kZSc6IG1v
ZGV9KTsKKyAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1
dCcpOworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGlucHV0KTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIG51bGwpOworICAgICAgICBpbnB1
dC5mb2N1cygpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVu
dCwgaW5wdXQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQs
IGhvc3QpOworCisgICAgICAgIGNvbnN0IGFub3RoZXJIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYW5vdGhlckhv
c3QpOworICAgICAgICBjb25zdCBhbm90aGVyU2hhZG93Um9vdCA9IGFub3RoZXJIb3N0LmF0dGFj
aFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7CisgICAgICAgIGNvbnN0IGFub3RoZXJJbnB1dCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICAgIGFub3RoZXJTaGFkb3dSb290
LmFwcGVuZENoaWxkKGFub3RoZXJJbnB1dCk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhbm90
aGVyU2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGlucHV0KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBob3N0KTsKKworICAgICAgICBhbm90aGVySW5wdXQu
Zm9jdXMoKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyU2hhZG93Um9vdC5hY3RpdmVF
bGVtZW50LCBhbm90aGVySW5wdXQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3Qu
YWN0aXZlRWxlbWVudCwgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0
aXZlRWxlbWVudCwgYW5vdGhlckhvc3QpOworCisgICAgfSwgJ1NoYWRvd1Jvb3QuYWN0aXZlRWxl
bWVudCBtdXN0IHJldHVybiBudWxsIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgaW4gYW5vdGhlciBz
aGFkb3cgdHJlZSB3aGVuIGJvdGggc2hhZG93IHJvb3RzIGFyZSAnICsgbW9kZSArICcuJyk7Cit9
CisKK3Rlc3RBY3RpdmVFbGVtZW50V2l0aEZvY3VzZWRFbGVtZW50SW5Bbm90aGVyU2hhZG93KCdv
cGVuJyk7Cit0ZXN0QWN0aXZlRWxlbWVudFdpdGhGb2N1c2VkRWxlbWVudEluQW5vdGhlclNoYWRv
dygnY2xvc2VkJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2JsdXItb24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNo
YWRvdy1jb250ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vYmx1ci1vbi1zaGFkb3ctaG9zdC13aXRoLWZvY3VzZWQtc2hhZG93LWNvbnRl
bnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9ibHVyLW9uLXNoYWRvdy1ob3N0LXdpdGgtZm9jdXNlZC1zaGFkb3ctY29udGVudC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorVGVzdCB0aGF0IGNhbGxp
bmcgYmx1cigpIG9uIGEgc2hhZG93IGhvc3Qgb2YgYSBmb2N1c2VkIGVsZW1lbnQgY2xlYXJzIHRo
ZSBmb2N1cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQgPSBz
aGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7IGlucHV0LmZvY3VzKCk7IHNoYWRvd1Jv
b3QuYWN0aXZlRWxlbWVudCBpcyBpbnB1dAorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlz
IHNoYWRvd0hvc3QKK1BBU1Mgc2hhZG93SG9zdC5ibHVyKCk7IHNoYWRvd1Jvb3QuYWN0aXZlRWxl
bWVudCBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2JsdXItb24tc2hhZG93
LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2JsdXItb24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2Vk
LXNoYWRvdy1jb250ZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL2JsdXItb24tc2hhZG93LWhvc3Qtd2l0aC1mb2N1c2VkLXNoYWRvdy1jb250ZW50
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iaG9zdCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24o
J1Rlc3QgdGhhdCBjYWxsaW5nIGJsdXIoKSBvbiBhIHNoYWRvdyBob3N0IG9mIGEgZm9jdXNlZCBl
bGVtZW50IGNsZWFycyB0aGUgZm9jdXMuJyk7CisKK2xldCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKK2xldCBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRh
Y2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CitzaGFkb3dSb290LmlubmVySFRNTCA9IGA8aW5w
dXQ+YDsKKworc2hvdWxkQmUoJ2lucHV0ID0gc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJpbnB1
dCIpOyBpbnB1dC5mb2N1cygpOyBzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQnLCAnaW5wdXQnKTsK
K3Nob3VsZEJlKCdkb2N1bWVudC5hY3RpdmVFbGVtZW50JywgJ3NoYWRvd0hvc3QnKTsKK3Nob3Vs
ZEJlKCdzaGFkb3dIb3N0LmJsdXIoKTsgc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50JywgJ251bGwn
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4t
aW4tc2hhZG93LWZ1bGxzY3JlZW5FbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctZnVsbHNjcmVl
bkVsZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
c2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxlbWVudC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IHdlYmtpdEZ1
bGxzY3JlZW5FbGVtZW50IHJldGFyZ2V0cyB0aGUgZnVsbHNjcmVlbiBlbGVtZW50IGluc2lkZSBh
IHNoYWRvdyB0cmVlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1
bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCBpcyBzaGFkb3dIb3N0CitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0VudGVyIGZ1bGxzY3JlZW4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxs
c2NyZWVuRWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy1mdWxsc2NyZWVuRWxlbWVudC5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRv
dy1mdWxsc2NyZWVuRWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9Imhvc3QiPjwvZGl2Pgor
PGJ1dHRvbj5FbnRlciBmdWxsc2NyZWVuPC9idXR0b24+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rl
c3QgdGhhdCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCByZXRhcmdldHMgdGhlIGZ1bGxzY3JlZW4g
ZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgdHJlZS4nKTsKKworbGV0IHNoYWRvd0hvc3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaG9zdCcpOworbGV0IHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0
LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0g
JzxzcGFuPmZ1bGwgc2NyZWVuIGNvbnRlbnQ8L3NwYW4+JzsKKworZnVuY3Rpb24gZ29GdWxsc2Ny
ZWVuKCkgeworICAgIHNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcignc3BhbicpLndlYmtpdFJlcXVl
c3RGdWxsc2NyZWVuKCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIGlm
IChkb25lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2Ugd2FzIG5vdCBmaXJlZCcpOworICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICB9LCAyMDAwKTsKK30KKworbGV0IGRvbmUgPSBmYWxzZTsKK2Z1bmN0aW9uIGZpbmFs
aXplVGVzdCgpIHsKKyAgICBpZiAoZG9uZSkKKyAgICAgICAgcmV0dXJuOworICAgIGRvbmUgPSB0
cnVlOworCisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50Jywg
J3NoYWRvd0hvc3QnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc2hhZG93Um9vdC5hZGRF
dmVudExpc3RlbmVyKCd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZmluYWxpemVUZXN0KTsKK2Rv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Z1bGxzY3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3Qp
OyAvLyBTdGFuZGFyZCBmdWxsc2NyZWVuY2hhbmdlIG9ubHkgZmlyZXMgYXQgZG9jdW1lbnQgbGV2
ZWwuCisKK2xldCBidXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTsKK2J1
dHRvbi5vbmNsaWNrID0gZ29GdWxsc2NyZWVuOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
YnV0dG9uLm9mZnNldExlZnQgKyA1LCBidXR0b24ub2Zmc2V0VG9wICsgNSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxs
c2NyZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2Ny
ZWVuLWluLXNoYWRvdy13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgdGhhdCB3ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQgcmV0YXJnZXRzIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQgaW5zaWRl
IGEgc2hhZG93IHRyZWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRv
Y3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCBpcyBzaGFkb3dIb3N0CitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0VudGVyIGZ1bGxz
Y3JlZW4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNo
YWRvdy13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zaGFkb3ctd2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LXdlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9Imhvc3QiPjwvZGl2PgorPGJ1dHRvbj5F
bnRlciBmdWxsc2NyZWVuPC9idXR0b24+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgcmV0YXJnZXRzIHRoZSBmdWxsc2NyZWVuIGVs
ZW1lbnQgaW5zaWRlIGEgc2hhZG93IHRyZWUuJyk7CisKK2xldCBzaGFkb3dIb3N0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKK2xldCBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5h
dHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CitzaGFkb3dSb290LmlubmVySFRNTCA9ICc8
c3Bhbj5mdWxsIHNjcmVlbiBjb250ZW50PC9zcGFuPic7CisKK2Z1bmN0aW9uIGdvRnVsbHNjcmVl
bigpIHsKKyAgICBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS53ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbigpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAo
ZG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlIHdhcyBub3QgZmlyZWQnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfSwgMjAwMCk7Cit9CisKK2xldCBkb25lID0gZmFsc2U7CitmdW5jdGlvbiBmaW5hbGl6
ZVRlc3QoKSB7CisgICAgaWYgKGRvbmUpCisgICAgICAgIHJldHVybjsKKyAgICBkb25lID0gdHJ1
ZTsKKworICAgIHNob3VsZEJlKCdkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnQnLCAnc2hhZG93SG9zdCcpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzaGFkb3dSb290
LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3Qp
OworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIGZpbmFsaXpl
VGVzdCk7IC8vIFN0YW5kYXJkIGZ1bGxzY3JlZW5jaGFuZ2Ugb25seSBmaXJlcyBhdCBkb2N1bWVu
dCBsZXZlbC4KKworbGV0IGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicp
OworYnV0dG9uLm9uY2xpY2sgPSBnb0Z1bGxzY3JlZW47CisKK2lmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhidXR0b24ub2Zmc2V0TGVmdCArIDUsIGJ1dHRvbi5vZmZzZXRUb3AgKyA1KTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4t
c2xvdC1mdWxsc2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxl
bWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorVGVzdCB0
aGF0IHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50IHJldGFyZ2V0cyB0aGUgZnVsbHNjcmVlbiBlbGVt
ZW50IGFzc2lnbmVkIHRvIGEgc2xvdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQgaXMgZG9jdW1lbnQucXVlcnlT
ZWxlY3Rvcigic2VjdGlvbiIpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK2Z1bGwgc2NyZWVuIGNvbnRlbnQKK0VudGVyIGZ1bGxzY3JlZW4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVl
bkVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
ZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC1mdWxsc2Ny
ZWVuRWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9Imhvc3QiPjxzZWN0aW9uPmZ1bGwgc2Ny
ZWVuIGNvbnRlbnQ8L3NlY3Rpb24+PC9kaXY+Cis8YnV0dG9uPkVudGVyIGZ1bGxzY3JlZW48L2J1
dHRvbj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlYmtpdEZ1bGxzY3JlZW5FbGVt
ZW50IHJldGFyZ2V0cyB0aGUgZnVsbHNjcmVlbiBlbGVtZW50IGFzc2lnbmVkIHRvIGEgc2xvdC4n
KTsKKworbGV0IHNoYWRvd0hvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9zdCcpOwor
bGV0IHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9
KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuPjxzbG90Pjwvc2xvdD48L3NwYW4+JzsK
KworZnVuY3Rpb24gZ29GdWxsc2NyZWVuKCkgeworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J3NlY3Rpb24nKS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOworICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeworICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIHdhcyBub3QgZmlyZWQnKTsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMjAwMCk7Cit9CisKK2xldCBkb25lID0g
ZmFsc2U7CitmdW5jdGlvbiBmaW5hbGl6ZVRlc3QoKSB7CisgICAgaWYgKGRvbmUpCisgICAgICAg
IHJldHVybjsKKyAgICBkb25lID0gdHJ1ZTsKKworICAgIHNob3VsZEJlKCdkb2N1bWVudC53ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudCcsICdkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uIikn
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVy
KCd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZmluYWxpemVUZXN0KTsKK2RvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoJ2Z1bGxzY3JlZW5jaGFuZ2UnLCBmaW5hbGl6ZVRlc3QpOyAvLyBTdGFuZGFy
ZCBmdWxsc2NyZWVuY2hhbmdlIG9ubHkgZmlyZXMgYXQgZG9jdW1lbnQgbGV2ZWwuCisKK2xldCBi
dXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTsKK2J1dHRvbi5vbmNsaWNr
ID0gZ29GdWxsc2NyZWVuOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAganNUZXN0
SXNBc3luYyA9IHRydWU7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYnV0dG9uLm9mZnNl
dExlZnQgKyA1LCBidXR0b24ub2Zmc2V0VG9wICsgNSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VE
b3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVu
LWluLXNsb3Qtd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90
LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2xvdC13ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTEgQEAKK1Rlc3QgdGhhdCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQg
cmV0YXJnZXRzIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQgYXNzaWduZWQgdG8gYSBzbG90LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC53ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQgaXMgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbiIpCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2Z1bGwgc2Ny
ZWVuIGNvbnRlbnQKK0VudGVyIGZ1bGxzY3JlZW4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qtd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3Jl
ZW4taW4tc2xvdC13ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LXdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9Imhvc3Qi
PjxzZWN0aW9uPmZ1bGwgc2NyZWVuIGNvbnRlbnQ8L3NlY3Rpb24+PC9kaXY+Cis8YnV0dG9uPkVu
dGVyIGZ1bGxzY3JlZW48L2J1dHRvbj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCByZXRhcmdldHMgdGhlIGZ1bGxzY3JlZW4gZWxl
bWVudCBhc3NpZ25lZCB0byBhIHNsb3QuJyk7CisKK2xldCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKK2xldCBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRh
Y2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CitzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3Bh
bj48c2xvdD48L3Nsb3Q+PC9zcGFuPic7CisKK2Z1bmN0aW9uIGdvRnVsbHNjcmVlbigpIHsKKyAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzZWN0aW9uJykud2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW4oKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKGRvbmUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0ZnVsbHNjcmVl
bmNoYW5nZSB3YXMgbm90IGZpcmVkJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0s
IDIwMDApOworfQorCitsZXQgZG9uZSA9IGZhbHNlOworZnVuY3Rpb24gZmluYWxpemVUZXN0KCkg
eworICAgIGlmIChkb25lKQorICAgICAgICByZXR1cm47CisgICAgZG9uZSA9IHRydWU7CisKKyAg
ICBzaG91bGRCZSgnZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50JywgJ2Rv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24iKScpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitzaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Un
LCBmaW5hbGl6ZVRlc3QpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNo
YW5nZScsIGZpbmFsaXplVGVzdCk7IC8vIFN0YW5kYXJkIGZ1bGxzY3JlZW5jaGFuZ2Ugb25seSBm
aXJlcyBhdCBkb2N1bWVudCBsZXZlbC4KKworbGV0IGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2J1dHRvbicpOworYnV0dG9uLm9uY2xpY2sgPSBnb0Z1bGxzY3JlZW47CisKK2lmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b24ub2Zmc2V0TGVmdCArIDUsIGJ1dHRvbi5vZmZzZXRU
b3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0
YXRpb25zCShyZXZpc2lvbiAyMDk1NzYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2lt
dWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xNzc4LDYgKzE3
NzgsMTAgQEAgZmFzdC9sb2FkZXIvbG9jYXRpb24taGFzaC11c2VyLWdlc3R1cmUuaAogaW1wb3J0
ZWQvYmxpbmsvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0c3RhcnQtZXZlbnQtY3Jhc2guaHRtbCBb
IFNraXAgXQogZmFzdC9kb20vV2luZG93L3Bvc3QtbWVzc2FnZS11c2VyLWFjdGlvbi5odG1sIFsg
U2tpcCBdCiBmYXN0L3NoYWRvdy1kb20vY2xpY2stdGV4dC1pbnNpZGUtbGlua2VkLXNsb3QuaHRt
bCBbIFNraXAgXQorZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3JlZW4taW4tc2hhZG93LWZ1bGxzY3Jl
ZW5FbGVtZW50Lmh0bWwKK2Zhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNoYWRvdy13ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQuaHRtbAorZmFzdC9zaGFkb3ctZG9tL2Z1bGxzY3Jl
ZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC5odG1sCitmYXN0L3NoYWRvdy1kb20vZnVsbHNj
cmVlbi1pbi1zbG90LXdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudC5odG1sCiAKICMgTm8g
dG91Y2ggZXZlbnRzCiBodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5k
Ym94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLWFsd2F5cy5odG1s
IFsgU2tpcCBdCg==
</data>
<flag name="review"
          id="319043"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>