<?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>148502</bug_id>
          
          <creation_ts>2015-08-26 17:13:42 -0700</creation_ts>
          <short_desc>Web Inspector: Separate creating a style sheet from adding a new rule in the protocol</short_desc>
          <delta_ts>2015-08-28 10:59:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121113</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-26 17:13:42 -0700</bug_when>
    <thetext>* SUMMARY
Separate creating a style sheet from adding a new rule.

Currently the only way to create a new style from the inspector is by calling &quot;CSSAgent.addRule&quot; this is opaque to the frontend. Also, CSSAgent.addRule takes a contextNode to determine the frame/document to create the new style sheet. Extract createStyleSheet(frameId) =&gt; styleSheetId and convert addRule(contextNode, ...) to addRule(styleSheetId, ...).

* NOTES
- Blink has done the same here.
- This will be useful if we want a way to view/edit all inspector added styles for a page, e.g. everything added via the style sidebar
- This will be useful if we want the frontend to create arbitrary stylesheets for a page, e.g. in page building
- Also, the frontend can use the new addRule to add rules to an existing stylesheet instead of the inspector stylesheet (might be useful for diffs / editing workflows)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121114</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-26 17:14:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/22448323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121133</commentid>
    <comment_count>2</comment_count>
      <attachid>260011</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-26 17:52:01 -0700</bug_when>
    <thetext>Created attachment 260011
[PATCH] Proposed Fix

An open question here would be, should we allow creating more than one StyleSheet per-Frame?

This patch says no, the backend will only create one. We could change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121142</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-26 18:04:30 -0700</bug_when>
    <thetext>One question I have been wondering is how a playground like feature could use this. It might best to have that create a separate style sheet. But it could also append rules to the existing inspector sheet. It would be easier if it didn&apos;t have to worry about mixing with other edits, so deprecate sheets might be more desirable and easier for us to manage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121204</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-26 22:20:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; One question I have been wondering is how a playground like feature could
&gt; use this. It might best to have that create a separate style sheet. But it
&gt; could also append rules to the existing inspector sheet. It would be easier
&gt; if it didn&apos;t have to worry about mixing with other edits, so deprecate
&gt; sheets might be more desirable and easier for us to manage.

Yeah, I&apos;m going to put up a new patch that makes:

  - CSS.createStyleSheet(frameId) always creates a new style sheet for that frame
  - CSSManager.preferredInspectorStyleSheetForFrame(frame) returns one, preferred, style sheet for &quot;Web Inspector&quot; added styles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121216</commentid>
    <comment_count>5</comment_count>
      <attachid>260036</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-26 23:01:37 -0700</bug_when>
    <thetext>Created attachment 260036
[PATCH] Proposed Fix

This makes a lot more sense!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121753</commentid>
    <comment_count>6</comment_count>
      <attachid>260036</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-28 10:59:46 -0700</bug_when>
    <thetext>Comment on attachment 260036
[PATCH] Proposed Fix

Clearing flags on attachment: 260036

Committed r189104: &lt;http://trac.webkit.org/changeset/189104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121754</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-28 10:59:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260011</attachid>
            <date>2015-08-26 17:52:01 -0700</date>
            <delta_ts>2015-08-26 23:01:37 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>createStyleSheet.patch</filename>
            <type>text/plain</type>
            <size>32470</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZWYwZDdiLi45YWFkYjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTUtMDgt
MjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTZXBhcmF0ZSBjcmVhdGluZyBhIHN0eWxlIHNoZWV0IGZyb20gYWRkaW5nIGEg
bmV3IHJ1bGUgaW4gdGhlIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL2luc3BlY3Rvci1zdHlsZXNoZWV0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9pbnNwZWN0b3It
c3R5bGVzaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL3N0eWxlc2hl
ZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0Lmh0bWw6
CisKKzIwMTUtMDgtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgdHJhY2tpbmcgb2YgYWN0aXZlIHN0eWxl
c2hlZXRzIGluIHRoZSBmcm9udGVuZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA1ODI4CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jc3MvY3JlYXRlU3R5bGVTaGVldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL2NyZWF0ZVN0eWxlU2hlZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjEzODM3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY3NzL2NyZWF0ZVN0eWxlU2hlZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEg
QEAKK1Rlc3QgQ1NTLmNyZWF0ZVN0eWxlU2hlZXQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBDU1MuY3JlYXRlU3R5bGVTaGVldAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IENoZWNrTm9TdHls
ZVNoZWV0cworUEFTUzogU2hvdWxkIGJlIG5vIHN0eWxlc2hlZXRzLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogQ3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldAorUEFTUzogU2hvdWxkIGluY3JlYXNl
IHRoZSBsaXN0IG9mIHN0eWxlc2hlZXRzLgorUEFTUzogQWRkZWQgU3R5bGVTaGVldCBvcmlnaW4g
c2hvdWxkIGJlICdpbnNwZWN0b3InLgorUEFTUzogU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxl
U2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4KK1BBU1M6IEFkZGVkIFN0eWxlU2hlZXQgZnJhbWUgc2hv
dWxkIGJlIHRoZSBtYWluIGZyYW1lLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ3JlYXRlSW5z
cGVjdG9yU3R5bGVTaGVldENhbGwyCitQQVNTOiBTaG91bGQgbm90IGluY3JlYXNlIHRoZSBsaXN0
IG9mIHN0eWxlc2hlZXRzLgorUEFTUzogU2hvdWxkIHJldHVybiB0aGUgc2FtZSBpbnNwZWN0b3Ig
c3R5bGVzaGVldC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IENyZWF0ZUluc3BlY3RvclN0eWxl
U2hlZXRDYWxsMworUEFTUzogU2hvdWxkIG5vdCBpbmNyZWFzZSB0aGUgbGlzdCBvZiBzdHlsZXNo
ZWV0cy4KK1BBU1M6IFNob3VsZCByZXR1cm4gdGhlIHNhbWUgaW5zcGVjdG9yIHN0eWxlc2hlZXQu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVl
dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9jcmVhdGVTdHlsZVNoZWV0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUyNzQxNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC5odG1sCkBA
IC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBhZGRl
ZFN0eWxlU2hlZXQ7CisgICAgbGV0IG1haW5GcmFtZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291
cmNlTWFuYWdlci5tYWluRnJhbWU7CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUFzeW5jU3VpdGUoIkNTUy5jcmVhdGVTdHlsZVNoZWV0Iik7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDaGVja05vU3R5bGVTaGVldHMiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIkVuc3VyZSB0aGVyZSBhcmUgbm8gc3R5bGVzaGVldHMuIiwKKyAgICAgICAg
dGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3Ro
ID09PSAwLCAiU2hvdWxkIGJlIG5vIHN0eWxlc2hlZXRzLiIpOworICAgICAgICAgICAgcmVzb2x2
ZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJDcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0IiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgY3JlYXRlIGEgbmV3IGluc3BlY3RvciBzdHlsZXNoZWV0LiIsCisgICAgICAg
IHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIENTU0FnZW50LmNyZWF0
ZVN0eWxlU2hlZXQobWFpbkZyYW1lLmlkKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NT
dHlsZU1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdlYkluc3BlY3Rvci5jc3NTdHlsZU1h
bmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIGluY3JlYXNlIHRoZSBsaXN0
IG9mIHN0eWxlc2hlZXRzLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQub3JpZ2luID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIkFkZGVkIFN0eWxlU2hlZXQgb3JpZ2luIHNob3VsZCBi
ZSAnaW5zcGVjdG9yJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpLCAiU3R5bGVT
aGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4iKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0LnBh
cmVudEZyYW1lID09PSBtYWluRnJhbWUsICJBZGRlZCBTdHlsZVNoZWV0IGZyYW1lIHNob3VsZCBi
ZSB0aGUgbWFpbiBmcmFtZS4iKTsKKworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NT
dHlsZU1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIG5vdCBiZSBh
ZGRpbmcgYW55IG1vcmUgU3R5bGVTaGVldHMgaW4gdGhpcyB0ZXN0LiIpOworICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgYWRkZWRTdHlsZVNoZWV0ID0gZXZlbnQuZGF0YS5z
dHlsZVNoZWV0OworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMjsgaSA8PSAzOyArK2kpIHsK
KyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZTogIkNyZWF0ZUlu
c3BlY3RvclN0eWxlU2hlZXRDYWxsIiArIGksCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIlNo
b3VsZCBub3QgY3JlYXRlIGEgbmV3IGluc3BlY3RvciBzdHlsZXNoZWV0LiIsCisgICAgICAgICAg
ICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICAgICAgQ1NTQWdlbnQu
Y3JlYXRlU3R5bGVTaGVldChtYWluRnJhbWUuaWQsIGZ1bmN0aW9uKGVycm9yLCBzdHlsZVNoZWV0
SWQpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdlYklu
c3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxk
IG5vdCBpbmNyZWFzZSB0aGUgbGlzdCBvZiBzdHlsZXNoZWV0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFkZGVkU3R5bGVTaGVldC5pZCA9PT0gc3R5
bGVTaGVldElkLCAiU2hvdWxkIHJldHVybiB0aGUgc2FtZSBpbnNwZWN0b3Igc3R5bGVzaGVldC4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBXZWJJbnNwZWN0b3IuY3Nz
U3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldFJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIG5vdCBiZSByZW1vdmluZyBh
bnkgU3R5bGVTaGVldHMgaW4gdGhpcyB0ZXN0LiIpOworICAgIH0pOworCisgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0IENTUy5jcmVhdGVTdHlsZVNoZWV0LjwvcD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvaW5z
cGVjdG9yLXN0eWxlc2hlZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9pbnNwZWN0b3Itc3R5bGVzaGVldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYmI0YWQyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jc3MvaW5zcGVjdG9yLXN0eWxlc2hlZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzQgQEAKK1Rlc3QgQ1NTTWFuYWdlci5pbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUuCisKKwor
Cis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IENTU01hbmFnZXIuaW5zcGVjdG9yU3R5bGVTaGVldEZv
ckZyYW1lCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2hlY2tOb1N0eWxlU2hlZXRzCitQQVNTOiBT
aG91bGQgYmUgbm8gc3R5bGVzaGVldHMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDcmVhdGVN
YWluRnJhbWVJbnNwZWN0b3JTdHlsZVNoZWV0CitQQVNTOiBBZGRlZCBTdHlsZVNoZWV0IG9yaWdp
biBzaG91bGQgYmUgJ2luc3BlY3RvcicuCitQQVNTOiBTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5
bGVTaGVldCgpIHNob3VsZCBiZSB0cnVlLgorUEFTUzogQWRkZWQgU3R5bGVTaGVldCBmcmFtZSBz
aG91bGQgYmUgdGhlIG1haW4gZnJhbWUuCitQQVNTOiBTaG91bGQgYmUgb25lIHN0eWxlc2hlZXQu
CitQQVNTOiBTdHlsZVNoZWV0IG9yaWdpbiBpcyBpbnNwZWN0b3IuCitQQVNTOiBTdHlsZVNoZWV0
LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBiZSB0cnVlLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogQW5vdGhlck1haW5GcmFtZVJlcXVlc3REb2VzTm90aGluZworUEFTUzogU2hvdWxk
IHN0aWxsIGJlIG9uZSBzdHlsZXNoZWV0LgorUEFTUzogU3R5bGVTaGVldCBvcmlnaW4gc2hvdWxk
IGJlICdpbnNwZWN0b3InLgorUEFTUzogU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQo
KSBzaG91bGQgYmUgdHJ1ZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IENyZWF0ZVN1YkZyYW1l
SW5zcGVjdG9yU3R5bGVTaGVldAorUEFTUzogQWRkZWQgU3R5bGVTaGVldCBvcmlnaW4gc2hvdWxk
IGJlICdpbnNwZWN0b3InLgorUEFTUzogU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQo
KSBzaG91bGQgYmUgdHJ1ZS4KK1BBU1M6IEFkZGVkIFN0eWxlU2hlZXQgZnJhbWUgc2hvdWxkIGJl
IGEgY2hpbGQgZnJhbWUuCitQQVNTOiBTaG91bGQgYmUgdHdvIHN0eWxlc2hlZXRzLgorUEFTUzog
U3R5bGVTaGVldCBvcmlnaW4gc2hvdWxkIGJlICdpbnNwZWN0b3InLgorUEFTUzogU3R5bGVTaGVl
dC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEFub3RoZXJTdWJGcmFtZVJlcXVlc3REb2VzTm90aGluZworUEFTUzogU2hvdWxk
IGJlIHR3byBzdHlsZXNoZWV0cy4KK1BBU1M6IFN0eWxlU2hlZXQgb3JpZ2luIHNob3VsZCBiZSAn
aW5zcGVjdG9yJy4KK1BBU1M6IFN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hv
dWxkIGJlIHRydWUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvaW5z
cGVjdG9yLXN0eWxlc2hlZXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvaW5zcGVj
dG9yLXN0eWxlc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NjAyNDJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9pbnNw
ZWN0b3Itc3R5bGVzaGVldC5odG1sCkBAIC0wLDAgKzEsMTA0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbWFpbkZyYW1lID0gV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICBsZXQgY2hpbGRGcmFtZSA9IG1haW5GcmFtZS5jaGls
ZEZyYW1lc1swXTsKKworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiQ1NTTWFuYWdlci5pbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUiKTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJlIHRoZXJlIGFyZSBubyBzdHlsZXNoZWV0cy4iLAor
ICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0
cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVzaGVldHMuIik7CisgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIkNyZWF0ZU1haW5GcmFtZUluc3BlY3RvclN0eWxlU2hlZXQiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIkZpcnN0IHJlcXVlc3QgZm9yIG1haW4gZnJhbWUgc2hvdWxk
IGNyZWF0ZSBpbnNwZWN0b3Igc3R5bGVzaGVldC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnNp
bmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQu
U3R5bGVTaGVldEFkZGVkLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQub3JpZ2luID09PSBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIkFkZGVkIFN0eWxlU2hlZXQg
b3JpZ2luIHNob3VsZCBiZSAnaW5zcGVjdG9yJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVT
aGVldCgpLCAiU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1
ZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0
YS5zdHlsZVNoZWV0LnBhcmVudEZyYW1lID09PSBtYWluRnJhbWUsICJBZGRlZCBTdHlsZVNoZWV0
IGZyYW1lIHNob3VsZCBiZSB0aGUgbWFpbiBmcmFtZS4iKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5pbnNwZWN0b3JTdHlsZVNoZWV0
Rm9yRnJhbWUobWFpbkZyYW1lLCBmdW5jdGlvbihzdHlsZVNoZWV0KSB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIu
c3R5bGVTaGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LiIpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzdHlsZVNoZWV0Lm9yaWdp
biA9PT0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJTdHlsZVNo
ZWV0IG9yaWdpbiBpcyBpbnNwZWN0b3IuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCksICJTdHlsZVNo
ZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBiZSB0cnVlLiIpOworICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJBbm90aGVyTWFpbkZyYW1l
UmVxdWVzdERvZXNOb3RoaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTZWNvbmQgcmVxdWVz
dCBmb3IgbWFpbiBmcmFtZSBzaG91bGQgbm90IGNyZWF0ZSBhIG5ldyBzdHlsZXNoZWV0LiIsCisg
ICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGxldCBsaXN0
ZW5lciA9IFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFs
c2UsICJTaG91bGQgbm90IGNyZWF0ZSBhIG5ldyBTdHlsZVNoZWV0LCBzaG91bGQgcmV1c2UgdGhl
IGV4aXN0aW5nIG9uZSIpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzU3R5bGVNYW5hZ2VyLmluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShtYWluRnJhbWUs
IGZ1bmN0aW9uKHN0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGgg
PT09IDEsICJTaG91bGQgc3RpbGwgYmUgb25lIHN0eWxlc2hlZXQuIik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQub3JpZ2luID09PSBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIlN0eWxlU2hlZXQgb3JpZ2luIHNo
b3VsZCBiZSAnaW5zcGVjdG9yJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQu
aXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuIik7CisgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwg
bnVsbCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IkNyZWF0ZVN1YkZyYW1lSW5zcGVjdG9yU3R5bGVTaGVldCIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiRmlyc3QgcmVxdWVzdCBmb3Igc3ViZnJhbWUgc2hvdWxkIGNyZWF0ZSBpbnNwZWN0b3Igc3R5
bGVzaGVldC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCBmdW5j
dGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChl
dmVudC5kYXRhLnN0eWxlU2hlZXQub3JpZ2luID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVl
dC5UeXBlLkluc3BlY3RvciwgIkFkZGVkIFN0eWxlU2hlZXQgb3JpZ2luIHNob3VsZCBiZSAnaW5z
cGVjdG9yJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZl
bnQuZGF0YS5zdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpLCAiU3R5bGVTaGVldC5p
c0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4iKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0LnBhcmVudEZy
YW1lID09PSBjaGlsZEZyYW1lLCAiQWRkZWQgU3R5bGVTaGVldCBmcmFtZSBzaG91bGQgYmUgYSBj
aGlsZCBmcmFtZS4iKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5pbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUoY2hpbGRGcmFtZSwg
ZnVuY3Rpb24oc3R5bGVTaGVldCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9
PT0gMiwgIlNob3VsZCBiZSB0d28gc3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQub3JpZ2luID09PSBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIlN0eWxlU2hlZXQgb3JpZ2luIHNob3VsZCBi
ZSAnaW5zcGVjdG9yJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNw
ZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuIik7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkFub3RoZXJTdWJGcmFtZVJlcXVlc3REb2Vz
Tm90aGluZyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2Vjb25kIHJlcXVlc3QgZm9yIG1haW4g
ZnJhbWUgc2hvdWxkIG5vdCBjcmVhdGUgYSBuZXcgc3R5bGVzaGVldC4iLAorICAgICAgICB0ZXN0
OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXZWJJ
bnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGZhbHNlLCAiU2hvdWxk
IG5vdCBjcmVhdGUgYSBuZXcgU3R5bGVTaGVldCwgc2hvdWxkIHJldXNlIHRoZSBleGlzdGluZyBv
bmUiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxl
TWFuYWdlci5pbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUoY2hpbGRGcmFtZSwgZnVuY3Rpb24o
c3R5bGVTaGVldCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChX
ZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMiwgIlNo
b3VsZCBiZSB0d28gc3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KHN0eWxlU2hlZXQub3JpZ2luID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVT
aGVldC5UeXBlLkluc3BlY3RvciwgIlN0eWxlU2hlZXQgb3JpZ2luIHNob3VsZCBiZSAnaW5zcGVj
dG9yJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVT
aGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHls
ZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuIik7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCwg
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2UsICJT
aG91bGQgbm90IGJlIHJlbW92aW5nIGFueSBTdHlsZVNoZWV0cyBpbiB0aGlzIHRlc3QuIik7Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3QgQ1NTTWFu
YWdlci5pbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUuPC9wPgorICAgIDxpZnJhbWUgc3JjPSJh
Ym91dDpibGFuayI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNo
ZWV0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1l
dmVudHMtaW5zcGVjdG9yLXN0eWxlc2hlZXQtZXhwZWN0ZWQudHh0CmluZGV4IGNkNDk5MjAuLjI3
ZDBmZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1l
dmVudHMtaW5zcGVjdG9yLXN0eWxlc2hlZXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtaW5zcGVjdG9yLXN0eWxlc2hlZXQtZXhw
ZWN0ZWQudHh0CkBAIC03LDUgKzcsNSBAQCBQQVNTOiBTaG91bGQgYmUgbm8gc3R5bGVzaGVldHMu
CiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0CiBQQVNT
OiBTaG91bGQgYmUgb25lIHN0eWxlc2hlZXQuCi1QQVNTOiBTdHlsZVNoZWV0IG9yaWdpbiBpcyBp
bnNwZWN0b3IuCitQQVNTOiBTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3Rvcicu
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVu
dHMtaW5zcGVjdG9yLXN0eWxlc2hlZXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mv
c3R5bGVzaGVldC1ldmVudHMtaW5zcGVjdG9yLXN0eWxlc2hlZXQuaHRtbAppbmRleCA5MmJlNTUz
Li5mZTY2NDc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hl
ZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbnNwZWN0b3Itc3R5bGVzaGVldC5odG1sCkBA
IC03LDggKzcsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBsZXQgc3VpdGUgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNTUy5TdHlsZVNoZWV0RXZlbnRzLkluc3BlY3RvclN0
eWxlU2hlZXQiKTsKIAotICAgIGxldCBib2R5Tm9kZUlkOwotCiAgICAgc3VpdGUuYWRkVGVzdENh
c2UoewogICAgICAgICBuYW1lOiAiQ2hlY2tOb1N0eWxlU2hlZXRzIiwKICAgICAgICAgZGVzY3Jp
cHRpb246ICJFbnN1cmUgdGhlcmUgYXJlIGN1cnJlbnRseSBubyBzdHlsZXNoZWV0cy4iLApAQCAt
MjIsMjQgKzIwLDE3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ3JlYXRlSW5z
cGVjdG9yU3R5bGVTaGVldCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ3JlYXRpbmcgYW4gaW5z
cGVjdG9yIHN0eWxlc2hlZXQgYWRkcyBhIHN0eWxlc2hlZXQuIiwKICAgICAgICAgdGVzdDogKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgQ1NTQWdlbnQuY3JlYXRlU3R5bGVTaGVl
dChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmlkKTsKICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAxLCAi
U2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KGV2ZW50LmRhdGEuc3R5bGVTaGVldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5D
U1NTdHlsZVNoZWV0LCAiRXZlbnQgZGF0YSBzaG91bGQgYmUgYSBDU1NTdHlsZVNoZWV0Iik7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVT
aGVldC5vcmlnaW4gPT09IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LlR5cGUuSW5zcGVjdG9y
LCAiU3R5bGVTaGVldCBvcmlnaW4gaXMgaW5zcGVjdG9yLiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQub3JpZ2luID09PSBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIlN0eWxlU2hlZXQgb3Jp
Z2luIHNob3VsZCBiZSAnaW5zcGVjdG9yJy4iKTsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CiAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGUg
b25seSB3YXkgdG8gY3JlYXRlIGFuIGluc3BlY3RvciBzdHlsZXNoZWV0IGlzIHRocm91Z2ggYENT
Uy5hZGRSdWxlYC4KLSAgICAgICAgICAgIENTU0FnZW50LmFkZFJ1bGUoYm9keU5vZGVJZCwgImJv
ZHkiKTsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5h
Z2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVudE5vZGUpIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAi
Ym9keSIsIGZ1bmN0aW9uKGNvbnRlbnROb2RlSWQpIHsKLSAgICAgICAgICAgIGJvZHlOb2RlSWQg
PSBjb250ZW50Tm9kZUlkOwotICAgICAgICAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTcyNTg1Li5lM2M3NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBA
QAogMjAxNS0wOC0yNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFNlcGFyYXRlIGNyZWF0aW5nIGEgc3R5bGUgc2hlZXQgZnJv
bSBhZGRpbmcgYSBuZXcgcnVsZSBpbiB0aGUgcHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29u
OgorICAgICAgICBBZGQgQ1NTLmNyZWF0ZVN0eWxlU2hlZXQuIE1vZGlmeSBDU1MuYWRkUnVsZS4K
KworMjAxNS0wOC0yNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCB0cmFja2luZyBvZiBhY3RpdmUgc3R5bGVz
aGVldHMgaW4gdGhlIGZyb250ZW5kCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDU4MjgKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24KaW5kZXggNWFkZTA2YS4uN2FiYmUyMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uCkBAIC0z
MzMsMTUgKzMzMywyNSBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk1vZGlmaWVzIHRo
ZSBydWxlIHNlbGVjdG9yLiIKICAgICAgICAgfSwKICAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiY3JlYXRlU3R5bGVTaGVldCIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1l
SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgZnJhbWUgd2hlcmUgdGhlIG5l
dyBcImluc3BlY3RvclwiIHN0eWxlc2hlZXQgc2hvdWxkIGJlIGNyZWF0ZWQuIiB9CisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzdHlsZVNoZWV0SWQiLCAiJHJlZiI6ICJTdHlsZVNoZWV0SWQiLCAiZGVzY3JpcHRpb24i
OiAiSWRlbnRpZmllciBvZiB0aGUgY3JlYXRlZCBcImluc3BlY3RvclwiIHN0eWxlc2hlZXQuIiB9
CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYSBu
ZXcgc3BlY2lhbCBcImluc3BlY3RvclwiIHN0eWxlc2hlZXQgaW4gdGhlIGZyYW1lIHdpdGggZ2l2
ZW4gPGNvZGU+ZnJhbWVJZDwvY29kZT4uIgorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAg
ICAgICAibmFtZSI6ICJhZGRSdWxlIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGV4dE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2Rl
SWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdHlsZVNoZWV0SWQiLCAiJHJlZiI6
ICJTdHlsZVNoZWV0SWQiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWxlY3RvciIs
ICJ0eXBlIjogInN0cmluZyIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJyZXR1cm5z
IjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicnVsZSIsICIkcmVmIjogIkNTU1J1bGUi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIG5ld2x5IGNyZWF0ZWQgcnVsZS4iIH0KICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhIG5ldyBlbXB0eSBydWxl
IHdpdGggdGhlIGdpdmVuIDxjb2RlPnNlbGVjdG9yPC9jb2RlPiBpbiBhIHNwZWNpYWwgXCJpbnNw
ZWN0b3JcIiBzdHlsZXNoZWV0IGluIHRoZSBvd25lciBkb2N1bWVudCBvZiB0aGUgY29udGV4dCBu
b2RlLiIKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGEgbmV3IGVtcHR5IHJ1
bGUgd2l0aCB0aGUgZ2l2ZW4gPGNvZGU+c2VsZWN0b3I8L2NvZGU+IGluIGEgc3R5bGVzaGVldCB3
aXRoIGdpdmVuIDxjb2RlPnN0eWxlU2hlZXRJZDwvY29kZT4uIgogICAgICAgICB9LAogICAgICAg
ICB7CiAgICAgICAgICAgICAibmFtZSI6ICJnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzIiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhYWYxMjQwLi5hMDFiOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAK
IDIwMTUtMDgtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBTZXBhcmF0ZSBjcmVhdGluZyBhIHN0eWxlIHNoZWV0IGZyb20g
YWRkaW5nIGEgbmV3IHJ1bGUgaW4gdGhlIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL2Nzcy9jcmVhdGVTdHls
ZVNoZWV0Lmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9jc3MvaW5zcGVjdG9yLXN0eWxl
c2hlZXQuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVTdHlsZVNoZWV0KToKKyAgICAgICAgRXh0cmFj
dCB0aGUgcGFydCBhYm91dCBjcmVhdGluZyBhIHZpYS1pbnNwZWN0b3Igc3R5bGVzaGVldCBoZXJl
LgorCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAg
ICAgIExvb2t1cCBzdHlsZXNoZWV0IHRvIGFkZCBhIHJ1bGUgdG8gdmlhIHRoZSBwcm92aWRlZCBz
dHlsZXNoZWV0IGlkLgorCisyMDE1LTA4LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHRyYWNraW5nIG9m
IGFjdGl2ZSBzdHlsZXNoZWV0cyBpbiB0aGUgZnJvbnRlbmQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTgyOAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA2N2QxODgwLi45NjFjNjcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5oIgogI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOb2RlLmgi
CkBAIC03NDcsMTMgKzc0OCwzMiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2Vs
ZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0bwogICAgIGVycm9y
U3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lk
IEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgaW50IGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpjcmVhdGVTdHlsZVNoZWV0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIHN0eWxlU2hlZXRJZCkKIHsKLSAgICBOb2RlKiBub2Rl
ID0gbV9kb21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgY29udGV4dE5vZGVJZCk7Ci0g
ICAgaWYgKCFub2RlKQorICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgp
LT5mcmFtZUZvcklkKGZyYW1lSWQpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGZyYW1lIGZvciBnaXZlbiBpZCBmb3VuZCIpOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9y
U3R5bGVTaGVldCA9IHZpYUluc3BlY3RvclN0eWxlU2hlZXQoJm5vZGUtPmRvY3VtZW50KCksIHRy
dWUpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGRv
Y3VtZW50IGZvciBmcmFtZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSW5zcGVj
dG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IHZpYUluc3BlY3RvclN0eWxlU2hl
ZXQoZG9jdW1lbnQsIHRydWUpOworICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkgeworICAg
ICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gdGFyZ2V0IHN0eWxlc2hlZXQgZm91
bmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICpzdHlsZVNoZWV0SWQgPSBpbnNw
ZWN0b3JTdHlsZVNoZWV0LT5pZCgpOworfQorCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRS
dWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1J1bGU+JiByZXN1bHQpCit7CisgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9y
U3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVl
dElkKTsKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIk5vIHRhcmdldCBzdHlsZXNoZWV0IGZvdW5kIik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
aW5kZXggOGRhNzRhOS4uNTNlYTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmgKQEAgLTExOSw3ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHls
ZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldFN0eWxlVGV4dChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JiBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QmIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcmLCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJl
c3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVN0eWxlU2hlZXQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogc3R5bGVTaGVldElkKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3Bl
cnR5SW5mbz4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0
ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDdhMzUyMDYuLjQ4ZTcwMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDE1LTA4LTI2ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2VwYXJhdGUg
Y3JlYXRpbmcgYSBzdHlsZSBzaGVldCBmcm9tIGFkZGluZyBhIG5ldyBydWxlIGluIHRoZSBwcm90
b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Vy
cmVudGx5IGJvdGggdGhlIGJhY2tlbmQgYW5kIGZyb250ZW5kIGVuZm9yY2UgMSBpbnNwZWN0b3Ig
c3R5bGVzaGVldCBwZXIgZnJhbWUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvT2Jq
ZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdC5zaW5nbGVGaXJlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIFJldHVybiB0aGUgd3JhcHBlZCBsaXN0ZW5lciBzbyBpdCBjYW4gYmUg
cmVtb3ZlZCBpZiBuZWVkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NT
dHlsZVNoZWV0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90
eXBlLmlzSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIEhlbHBlciB0byBjaGVjayBpZiB0
aGUgY3VycmVudCBzdHlsZXNoZWV0IGlzIGFuIGluc3BlY3RvciBjcmVhdGVkIHN0eWxlc2hlZXQu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIucHJvdG90eXBlLmluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
YW5hZ2VyLnByb3RvdHlwZS5pbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUuZG9jdW1lbnROb2Rl
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIucHJvdG90
eXBlLmluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZS5ib2R5Tm9kZUF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvdHlwZS5pbnNwZWN0b3JTdHls
ZVNoZWV0Rm9yRnJhbWUuY3NzUnVsZUF2YWlsYWJsZSk6CisgICAgICAgIExvb2t1cCB0aGUgaW5z
cGVjdG9yIHN0eWxlc2hlZXQgZm9yIGEgcGFydGljdWxhciBmcmFtZS4gSWYgb25lIGRvZXNuJ3Qg
ZXhpc3QgY3JlYXRlIGl0LgorICAgICAgICBGb3IgbGVnYWN5IGJhY2tlbmRzLCBleHBsb2l0ICJh
ZGRSdWxlIiB0byBjcmVhdGUgdGhlIGluc3BlY3RvciBzdHlsZXNoZWV0LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9ET01Ob2RlU3R5bGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVT
dHlsZXMucHJvdG90eXBlLmFkZEVtcHR5UnVsZS5pbnNwZWN0b3JTdHlsZVNoZWV0QXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5hZGRFbXB0
eVJ1bGUpOgorICAgICAgICBDdXJyZW50bHkgYWRkIGFsbCBuZXcgcnVsZXMgdG8gdGhlIGluc3Bl
Y3RvciBzdHlsZXNoZWV0LgorCisyMDE1LTA4LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHRyYWNraW5n
IG9mIGFjdGl2ZSBzdHlsZXNoZWV0cyBpbiB0aGUgZnJvbnRlbmQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTgyOAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL09iamVjdC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzCmluZGV4IDIxMzQwMzYu
LjA2ZDAyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvT2JqZWN0LmpzCkBAIC02Myw2ICs2Myw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3QgPSBj
bGFzcyBPYmplY3QKICAgICAgICAgfS5iaW5kKHRoaXMpOwogCiAgICAgICAgIHRoaXMuYWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIHdyYXBwZWRDYWxsYmFjaywgbnVsbCk7CisgICAgICAgIHJl
dHVybiB3cmFwcGVkQ2FsbGJhY2s7CiAgICAgfQogCiAgICAgc3RhdGljIHJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NT
U1N0eWxlTWFuYWdlci5qcwppbmRleCBhYzJiNjU4Li44OGNmYTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ1NTU3R5bGVNYW5hZ2VyLmpzCkBAIC0xNTEsNiArMTUxLDkzIEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1hbmFnZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiBzdHlsZXM7CiAgICAgfQogCisgICAgaW5zcGVjdG9y
U3R5bGVTaGVldEZvckZyYW1lKGZyYW1lLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICgh
ZnJhbWUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgc3R5bGVTaGVldCBvZiB0aGlzLnN0eWxl
U2hlZXRzKSB7CisgICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hl
ZXQoKSAmJiBzdHlsZVNoZWV0LnBhcmVudEZyYW1lID09PSBmcmFtZSkgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHN0eWxlU2hlZXQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChDU1NBZ2VudC5jcmVhdGVTdHlsZVNo
ZWV0KSB7CisgICAgICAgICAgICBDU1NBZ2VudC5jcmVhdGVTdHlsZVNoZWV0KGZyYW1lLmlkLCBm
dW5jdGlvbihlcnJvciwgc3R5bGVTaGVldElkKSB7CisgICAgICAgICAgICAgICAgbGV0IHN0eWxl
U2hlZXQgPSBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlm
aWVyKHN0eWxlU2hlZXRJZCk7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVT
aGVldCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3R5bGVTaGVldCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyA5KTogTGVnYWN5IGJhY2tlbmRzIG9ubHkgY3JlYXRlIHRoZSBJbnNwZWN0
b3IgU3R5bGVTaGVldAorICAgICAgICAvLyB0aHJvdWdoIENTUy5hZGRSdWxlLiBFeHBsb2l0IHRo
YXQgdG8gY3JlYXRlIHRoZSBJbnNwZWN0b3IgU3R5bGVTaGVldCBmb3IgdGhlCisgICAgICAgIC8v
IGRvY3VtZW50LmJvZHkgbm9kZSBpbiB0aGlzIGZyYW1lLCB0aGVuIGdldCB0aGUgU3R5bGVTaGVl
dCBmb3IgdGhlIG5ldyBydWxlLgorCisgICAgICAgIGxldCBleHByZXNzaW9uID0gYXBwZW5kV2Vi
SW5zcGVjdG9yU291cmNlVVJMKCJkb2N1bWVudCIpOworICAgICAgICBsZXQgY29udGV4dElkID0g
ZnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQuaWQ7CisgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFs
dWF0ZS5pbnZva2Uoe2V4cHJlc3Npb24sIG9iamVjdEdyb3VwOiAiIiwgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJOiBmYWxzZSwgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlOiB0cnVl
LCBjb250ZXh0SWQsIHJldHVybkJ5VmFsdWU6IGZhbHNlLCBnZW5lcmF0ZVByZXZpZXc6IGZhbHNl
fSwgZG9jdW1lbnRBdmFpbGFibGUpOworCisgICAgICAgIGZ1bmN0aW9uIGRvY3VtZW50QXZhaWxh
YmxlKGVycm9yLCBkb2N1bWVudFJlbW90ZU9iamVjdFBheWxvYWQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHJl
bW90ZU9iamVjdCA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZG9jdW1l
bnRSZW1vdGVPYmplY3RQYXlsb2FkKTsKKyAgICAgICAgICAgIHJlbW90ZU9iamVjdC5wdXNoTm9k
ZVRvRnJvbnRlbmQoZG9jdW1lbnROb2RlQXZhaWxhYmxlLmJpbmQobnVsbCwgcmVtb3RlT2JqZWN0
KSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBkb2N1bWVudE5vZGVBdmFpbGFibGUo
cmVtb3RlT2JqZWN0LCBkb2N1bWVudE5vZGVJZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVt
b3RlT2JqZWN0LnJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkg
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3Rvcihk
b2N1bWVudE5vZGVJZCwgImJvZHkiLCBib2R5Tm9kZUF2YWlsYWJsZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBib2R5Tm9kZUF2YWlsYWJsZShlcnJvciwgYm9keU5vZGVJZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgc2VsZWN0
b3IgPSAiIjsgLy8gSW50ZW50aW9uYWxseSBlbXB0eS4KKyAgICAgICAgICAgIENTU0FnZW50LmFk
ZFJ1bGUoYm9keU5vZGVJZCwgc2VsZWN0b3IsIGNzc1J1bGVBdmFpbGFibGUpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY3NzUnVsZUF2YWlsYWJsZShlcnJvciwgcGF5bG9hZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFwYXlsb2FkLnJ1bGVJZCkgeworICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXRJZCA9IHBheWxvYWQucnVs
ZUlkLnN0eWxlU2hlZXRJZDsKKyAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gV2ViSW5zcGVj
dG9yLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SWQp
OworICAgICAgICAgICAgaWYgKCFzdHlsZVNoZWV0KSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2sobnVsbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgp
KTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlU2hlZXQucGFyZW50RnJhbWUgPT09
IGZyYW1lKTsKKworICAgICAgICAgICAgY2FsbGJhY2soc3R5bGVTaGVldCk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9DU1NTdHlsZVNoZWV0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU1N0eWxlU2hlZXQuanMKaW5kZXggYjI5NGRjZi4uNGE2NGZlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hl
ZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NT
U1N0eWxlU2hlZXQuanMKQEAgLTExMiw2ICsxMTIsMTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
U2hlZXQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGUKICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0luZm87CiAgICAgfQogCisgICAgaXNJbnNwZWN0
b3JTdHlsZVNoZWV0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vcmlnaW4gPT09IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LlR5cGUuSW5zcGVjdG9yOworICAgIH0KKwogICAgIGlz
SW5saW5lU3R5bGVUYWcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZVN0eWxl
VGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTU5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NTm9kZS5qcwppbmRleCBkMDZjMzU1Li5jMjZkMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwpAQCAtMTI4
LDYgKzEyOCwxOCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAorICAgIGdldCBmcmFtZUlk
ZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lSWRlbnRpZmllciB8
fCB0aGlzLm93bmVyRG9jdW1lbnQuZnJhbWVJZGVudGlmaWVyOworICAgIH0KKworICAgIGdldCBm
cmFtZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lKQorICAgICAgICAgICAgdGhp
cy5fZnJhbWUgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVGb3JJZGVu
dGlmaWVyKHRoaXMuZnJhbWVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1l
OworICAgIH0KKwogICAgIGdldCBjaGlsZHJlbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2NoaWxkcmVuKQpAQCAtNjQzLDExICs2NTUsNiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGNs
YXNzIERPTU5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgICAgICAgfTsKICAgICB9Ci0KLSAg
ICBnZXQgZnJhbWVJZGVudGlmaWVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9mcmFt
ZUlkZW50aWZpZXI7Ci0gICAgfQogfTsKIAogV2ViSW5zcGVjdG9yLkRPTU5vZGUuRXZlbnQgPSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
RE9NTm9kZVN0eWxlcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9ET01Ob2RlU3R5bGVzLmpzCmluZGV4IDhjODhkNTQuLjVmMDcwMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVz
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01O
b2RlU3R5bGVzLmpzCkBAIC0yMzUsOSArMjM1LDIwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5
bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICAgICAgICAgIHRoaXMucmVmcmVzaCgpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNlbGVj
dG9yID0gdGhpcy5fbm9kZS5hcHByb3ByaWF0ZVNlbGVjdG9yRm9yKHRydWUpOworICAgICAgICBs
ZXQgc2VsZWN0b3IgPSB0aGlzLl9ub2RlLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3IodHJ1ZSk7CiAK
LSAgICAgICAgQ1NTQWdlbnQuYWRkUnVsZS5pbnZva2Uoe2NvbnRleHROb2RlSWQ6IHRoaXMuX25v
ZGUuaWQsIHNlbGVjdG9yfSwgYWRkZWRSdWxlLmJpbmQodGhpcykpOworICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgOSk6IEJlZm9yZSBDU1MuY3JlYXRlU3R5bGVTaGVldCwgQ1NTLmFkZFJ1
bGUgY291bGQgYmUgY2FsbGVkIHdpdGggYSBjb250ZXh0Tm9kZS4KKyAgICAgICAgaWYgKCFDU1NB
Z2VudC5jcmVhdGVTdHlsZVNoZWV0KSB7CisgICAgICAgICAgICBDU1NBZ2VudC5hZGRSdWxlLmlu
dm9rZSh7Y29udGV4dE5vZGVJZDogdGhpcy5fbm9kZS5pZCAsIHNlbGVjdG9yfSwgYWRkZWRSdWxl
LmJpbmQodGhpcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gaW5zcGVjdG9yU3R5bGVTaGVldEF2YWlsYWJsZShzdHlsZVNoZWV0KQorICAgICAg
ICB7CisgICAgICAgICAgICBDU1NBZ2VudC5hZGRSdWxlKHN0eWxlU2hlZXQuaWQsIHNlbGVjdG9y
LCBhZGRlZFJ1bGUuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzU3R5bGVNYW5hZ2VyLmluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZSh0aGlzLl9ub2Rl
LmZyYW1lLCBpbnNwZWN0b3JTdHlsZVNoZWV0QXZhaWxhYmxlLmJpbmQodGhpcykpOwogICAgIH0K
IAogICAgIGFkZFJ1bGVXaXRoU2VsZWN0b3Ioc2VsZWN0b3IpCg==
</data>
<flag name="review"
          id="285203"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260036</attachid>
            <date>2015-08-26 23:01:37 -0700</date>
            <delta_ts>2015-08-28 10:59:46 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>createStyleSheet-2.patch</filename>
            <type>text/plain</type>
            <size>43624</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZWYwZDdiLi43OWI2NTRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTUtMDgt
MjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTZXBhcmF0ZSBjcmVhdGluZyBhIHN0eWxlIHNoZWV0IGZyb20gYWRkaW5nIGEg
bmV3IHJ1bGUgaW4gdGhlIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL21hbmFnZXItcHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldEZvckZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Nzcy9tYW5hZ2VyLXByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRz
LWluc3BlY3Rvci1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0Lmh0bWw6CisKKzIwMTUt
MDgtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgdHJhY2tpbmcgb2YgYWN0aXZlIHN0eWxlc2hlZXRzIGlu
IHRoZSBmcm9udGVuZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1ODI4CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvY3Jl
YXRlU3R5bGVTaGVldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2Ny
ZWF0ZVN0eWxlU2hlZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNhNWY5MDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Nzcy9jcmVhdGVTdHlsZVNoZWV0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitUZXN0
IENTUy5jcmVhdGVTdHlsZVNoZWV0LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ1NTLmNy
ZWF0ZVN0eWxlU2hlZXQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDaGVja05vU3R5bGVTaGVldHMK
K1BBU1M6IFNob3VsZCBiZSBubyBzdHlsZXNoZWV0cy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IENyZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRDYWxsMQorUEFTUzogU2hvdWxkIGluY3JlYXNlIHRo
ZSBsaXN0IG9mIHN0eWxlc2hlZXRzLgorUEFTUzogQWRkZWQgU3R5bGVTaGVldCBvcmlnaW4gc2hv
dWxkIGJlICdpbnNwZWN0b3InLgorUEFTUzogU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hl
ZXQoKSBzaG91bGQgYmUgdHJ1ZS4KK1BBU1M6IEFkZGVkIFN0eWxlU2hlZXQgZnJhbWUgc2hvdWxk
IGJlIHRoZSBtYWluIGZyYW1lLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ3JlYXRlSW5zcGVj
dG9yU3R5bGVTaGVldENhbGwyCitQQVNTOiBTaG91bGQgaW5jcmVhc2UgdGhlIGxpc3Qgb2Ygc3R5
bGVzaGVldHMuCitQQVNTOiBBZGRlZCBTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3Bl
Y3RvcicuCitQQVNTOiBTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBi
ZSB0cnVlLgorUEFTUzogQWRkZWQgU3R5bGVTaGVldCBmcmFtZSBzaG91bGQgYmUgdGhlIG1haW4g
ZnJhbWUuCitQQVNTOiBBZGRlZCBTdHlsZVNoZWV0IHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0
aGUgbGFzdCBhZGRlZCBzdHlsZXNoZWV0LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ3JlYXRl
SW5zcGVjdG9yU3R5bGVTaGVldENhbGwzCitQQVNTOiBTaG91bGQgaW5jcmVhc2UgdGhlIGxpc3Qg
b2Ygc3R5bGVzaGVldHMuCitQQVNTOiBBZGRlZCBTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUg
J2luc3BlY3RvcicuCitQQVNTOiBTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNo
b3VsZCBiZSB0cnVlLgorUEFTUzogQWRkZWQgU3R5bGVTaGVldCBmcmFtZSBzaG91bGQgYmUgdGhl
IG1haW4gZnJhbWUuCitQQVNTOiBBZGRlZCBTdHlsZVNoZWV0IHNob3VsZCBiZSBkaWZmZXJlbnQg
ZnJvbSB0aGUgbGFzdCBhZGRlZCBzdHlsZXNoZWV0LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY3NzL2NyZWF0ZVN0eWxlU2hlZXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjIwYmE3MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL2NyZWF0ZVN0eWxlU2hlZXQuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgYWRkZWRTdHlsZVNoZWV0OworICAgIGxldCBtYWlu
RnJhbWUgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworCisg
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDU1MuY3JlYXRl
U3R5bGVTaGVldCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
Q2hlY2tOb1N0eWxlU2hlZXRzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhlcmUg
YXJlIG5vIHN0eWxlc2hlZXRzLiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXZWJJbnNwZWN0b3IuY3Nz
U3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMCwgIlNob3VsZCBiZSBubyBzdHls
ZXNoZWV0cy4iKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMzsgKytpKSB7CisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6ICJDcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Q2Fs
bCIgKyBpLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgY3JlYXRlIGEgbmV3IGlu
c3BlY3RvciBzdHlsZXNoZWV0LiIsCisgICAgICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgICAgICAgICAgQ1NTQWdlbnQuY3JlYXRlU3R5bGVTaGVldChtYWluRnJh
bWUuaWQpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc2lu
Z2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5FdmVudC5T
dHlsZVNoZWV0QWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxl
U2hlZXRzLmxlbmd0aCA9PT0gaSwgIlNob3VsZCBpbmNyZWFzZSB0aGUgbGlzdCBvZiBzdHlsZXNo
ZWV0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2
ZW50LmRhdGEuc3R5bGVTaGVldC5vcmlnaW4gPT09IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0
LlR5cGUuSW5zcGVjdG9yLCAiQWRkZWQgU3R5bGVTaGVldCBvcmlnaW4gc2hvdWxkIGJlICdpbnNw
ZWN0b3InLiIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
ZXZlbnQuZGF0YS5zdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpLCAiU3R5bGVTaGVl
dC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5w
YXJlbnRGcmFtZSA9PT0gbWFpbkZyYW1lLCAiQWRkZWQgU3R5bGVTaGVldCBmcmFtZSBzaG91bGQg
YmUgdGhlIG1haW4gZnJhbWUuIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZGRlZFN0eWxl
U2hlZXQpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
ZXZlbnQuZGF0YS5zdHlsZVNoZWV0ICE9PSBhZGRlZFN0eWxlU2hlZXQsICJBZGRlZCBTdHlsZVNo
ZWV0IHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbGFzdCBhZGRlZCBzdHlsZXNoZWV0LiIp
OworICAgICAgICAgICAgICAgICAgICBhZGRlZFN0eWxlU2hlZXQgPSBldmVudC5kYXRhLnN0eWxl
U2hlZXQ7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1vdmVkLCBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChmYWxzZSwgIlNob3VsZCBub3QgYmUgcmVtb3Zp
bmcgYW55IFN0eWxlU2hlZXRzIGluIHRoaXMgdGVzdC4iKTsKKyAgICB9KTsKKworICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdCBDU1MuY3JlYXRlU3R5bGVTaGVldC48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3Nz
L21hbmFnZXItcHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvbWFuYWdlci1wcmVmZXJyZWRJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9yRnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjFlMDAwZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL21hbmFnZXItcHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitUZXN0IENTU01hbmFnZXIucHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldEZvckZyYW1lLgorCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDU1NN
YW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZQorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IENoZWNrTm9TdHlsZVNoZWV0cworUEFTUzogU2hvdWxkIGJlIG5vIHN0eWxlc2hl
ZXRzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ3JlYXRlTWFpbkZyYW1lSW5zcGVjdG9yU3R5
bGVTaGVldAorUEFTUzogQWRkZWQgU3R5bGVTaGVldCBvcmlnaW4gc2hvdWxkIGJlICdpbnNwZWN0
b3InLgorUEFTUzogU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUg
dHJ1ZS4KK1BBU1M6IEFkZGVkIFN0eWxlU2hlZXQgZnJhbWUgc2hvdWxkIGJlIHRoZSBtYWluIGZy
YW1lLgorUEFTUzogU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LgorUEFTUzogU3R5bGVTaGVldCBv
cmlnaW4gaXMgaW5zcGVjdG9yLgorUEFTUzogU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hl
ZXQoKSBzaG91bGQgYmUgdHJ1ZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEFub3RoZXJNYWlu
RnJhbWVSZXF1ZXN0RG9lc05vdGhpbmcKK1BBU1M6IFNob3VsZCBzdGlsbCBiZSBvbmUgc3R5bGVz
aGVldC4KK1BBU1M6IFN0eWxlU2hlZXQgb3JpZ2luIHNob3VsZCBiZSAnaW5zcGVjdG9yJy4KK1BB
U1M6IFN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDcmVhdGVTdWJGcmFtZUluc3BlY3RvclN0eWxlU2hlZXQK
K1BBU1M6IEFkZGVkIFN0eWxlU2hlZXQgb3JpZ2luIHNob3VsZCBiZSAnaW5zcGVjdG9yJy4KK1BB
U1M6IFN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuCitQ
QVNTOiBBZGRlZCBTdHlsZVNoZWV0IGZyYW1lIHNob3VsZCBiZSBhIGNoaWxkIGZyYW1lLgorUEFT
UzogU2hvdWxkIGJlIHR3byBzdHlsZXNoZWV0cy4KK1BBU1M6IFN0eWxlU2hlZXQgb3JpZ2luIHNo
b3VsZCBiZSAnaW5zcGVjdG9yJy4KK1BBU1M6IFN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KCkgc2hvdWxkIGJlIHRydWUuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBBbm90aGVyU3Vi
RnJhbWVSZXF1ZXN0RG9lc05vdGhpbmcKK1BBU1M6IFNob3VsZCBiZSB0d28gc3R5bGVzaGVldHMu
CitQQVNTOiBTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuCitQQVNTOiBT
dHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBiZSB0cnVlLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL21hbmFnZXItcHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldEZvckZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL21h
bmFnZXItcHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwOWU4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3MvbWFuYWdlci1wcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9yRnJhbWUuaHRtbApAQCAtMCwwICsxLDEwNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgbGV0IG1haW5GcmFtZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWU7CisgICAgbGV0IGNoaWxkRnJhbWUgPSBtYWluRnJhbWUuY2hpbGRGcmFt
ZXNbMF07CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
IkNTU01hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lIik7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDaGVja05vU3R5bGVTaGVldHMi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSB0aGVyZSBhcmUgbm8gc3R5bGVzaGVldHMu
IiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc3R5bGVT
aGVldHMubGVuZ3RoID09PSAwLCAiU2hvdWxkIGJlIG5vIHN0eWxlc2hlZXRzLiIpOworICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDcmVhdGVNYWluRnJhbWVJbnNwZWN0b3JTdHlsZVNoZWV0
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJGaXJzdCByZXF1ZXN0IGZvciBtYWluIGZyYW1lIHNo
b3VsZCBjcmVhdGUgaW5zcGVjdG9yIHN0eWxlc2hlZXQuIiwKKyAgICAgICAgdGVzdDogKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdl
ci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2
ZW50LlN0eWxlU2hlZXRBZGRlZCwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0Lm9yaWdpbiA9PT0g
V2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJBZGRlZCBTdHlsZVNo
ZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5pc0luc3BlY3RvclN0
eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJl
IHRydWUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50
LmRhdGEuc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gbWFpbkZyYW1lLCAiQWRkZWQgU3R5bGVT
aGVldCBmcmFtZSBzaG91bGQgYmUgdGhlIG1haW4gZnJhbWUuIik7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIucHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldEZvckZyYW1lKG1haW5GcmFtZSwgZnVuY3Rpb24oc3R5bGVTaGVldCkgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXZWJJbnNwZWN0b3IuY3Nz
U3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMSwgIlNob3VsZCBiZSBvbmUgc3R5
bGVzaGVldC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5
bGVTaGVldC5vcmlnaW4gPT09IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LlR5cGUuSW5zcGVj
dG9yLCAiU3R5bGVTaGVldCBvcmlnaW4gaXMgaW5zcGVjdG9yLiIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVl
dCgpLCAiU3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4i
KTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQW5v
dGhlck1haW5GcmFtZVJlcXVlc3REb2VzTm90aGluZyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
U2Vjb25kIHJlcXVlc3QgZm9yIG1haW4gZnJhbWUgc2hvdWxkIG5vdCBjcmVhdGUgYSBuZXcgc3R5
bGVzaGVldC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICBsZXQgbGlzdGVuZXIgPSBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVT
aGVldEFkZGVkLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIG5vdCBjcmVhdGUgYSBuZXcgU3R5bGVTaGVldCwgc2hv
dWxkIHJldXNlIHRoZSBleGlzdGluZyBvbmUiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9yRnJhbWUobWFpbkZyYW1lLCBmdW5jdGlvbihzdHlsZVNoZWV0KSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFn
ZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIHN0aWxsIGJlIG9uZSBzdHlsZXNo
ZWV0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzdHlsZVNo
ZWV0Lm9yaWdpbiA9PT0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3Is
ICJTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHls
ZVNoZWV0KCksICJTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBiZSB0
cnVlLiIpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxl
U2hlZXRBZGRlZCwgbGlzdGVuZXIsIG51bGwpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDcmVhdGVTdWJGcmFtZUluc3BlY3RvclN0eWxlU2hlZXQi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkZpcnN0IHJlcXVlc3QgZm9yIHN1YmZyYW1lIHNob3Vs
ZCBjcmVhdGUgaW5zcGVjdG9yIHN0eWxlc2hlZXQuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50
LlN0eWxlU2hlZXRBZGRlZCwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0Lm9yaWdpbiA9PT0gV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJBZGRlZCBTdHlsZVNoZWV0
IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxl
U2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRy
dWUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRh
dGEuc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gY2hpbGRGcmFtZSwgIkFkZGVkIFN0eWxlU2hl
ZXQgZnJhbWUgc2hvdWxkIGJlIGEgY2hpbGQgZnJhbWUuIik7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9y
U3R5bGVTaGVldEZvckZyYW1lKGNoaWxkRnJhbWUsIGZ1bmN0aW9uKHN0eWxlU2hlZXQpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV2ViSW5zcGVjdG9yLmNzc1N0
eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDIsICJTaG91bGQgYmUgdHdvIHN0eWxl
c2hlZXRzLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzdHls
ZVNoZWV0Lm9yaWdpbiA9PT0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0
b3IsICJTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JT
dHlsZVNoZWV0KCksICJTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBi
ZSB0cnVlLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJBbm90aGVyU3ViRnJhbWVSZXF1ZXN0RG9lc05vdGhpbmciLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlNlY29uZCByZXF1ZXN0IGZvciBtYWluIGZyYW1lIHNob3VsZCBub3QgY3JlYXRlIGEg
bmV3IHN0eWxlc2hlZXQuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50
LlN0eWxlU2hlZXRBZGRlZCwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChmYWxzZSwgIlNob3VsZCBub3QgY3JlYXRlIGEgbmV3IFN0eWxlU2hl
ZXQsIHNob3VsZCByZXVzZSB0aGUgZXhpc3Rpbmcgb25lIik7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9y
U3R5bGVTaGVldEZvckZyYW1lKGNoaWxkRnJhbWUsIGZ1bmN0aW9uKHN0eWxlU2hlZXQpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV2ViSW5zcGVjdG9yLmNzc1N0
eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDIsICJTaG91bGQgYmUgdHdvIHN0eWxl
c2hlZXRzLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzdHls
ZVNoZWV0Lm9yaWdpbiA9PT0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0
b3IsICJTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JT
dHlsZVNoZWV0KCksICJTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBi
ZSB0cnVlLiIpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0
eWxlU2hlZXRBZGRlZCwgbGlzdGVuZXIsIG51bGwpOworICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBXZWJJbnNwZWN0
b3IuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldFJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIG5vdCBiZSByZW1v
dmluZyBhbnkgU3R5bGVTaGVldHMgaW4gdGhpcyB0ZXN0LiIpOworICAgIH0pOworCisgICAgc3Vp
dGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0IENTU01hbmFnZXIucHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldEZvckZyYW1lLjwvcD4KKyAgICA8aWZyYW1lIHNyYz0iYWJvdXQ6Ymxh
bmsiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbnNwZWN0b3Itc3R5bGVzaGVldC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWlu
c3BlY3Rvci1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dAppbmRleCBjZDQ5OTIwLi4yN2QwZmRkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWlu
c3BlY3Rvci1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4
dApAQCAtNyw1ICs3LDUgQEAgUEFTUzogU2hvdWxkIGJlIG5vIHN0eWxlc2hlZXRzLgogCiAtLSBS
dW5uaW5nIHRlc3QgY2FzZTogQ3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldAogUEFTUzogU2hvdWxk
IGJlIG9uZSBzdHlsZXNoZWV0LgotUEFTUzogU3R5bGVTaGVldCBvcmlnaW4gaXMgaW5zcGVjdG9y
LgorUEFTUzogU3R5bGVTaGVldCBvcmlnaW4gc2hvdWxkIGJlICdpbnNwZWN0b3InLgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3Bl
Y3Rvci1zdHlsZXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hl
ZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0Lmh0bWwKaW5kZXggOTJiZTU1My4uZmU2NjQ3
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50
cy1pbnNwZWN0b3Itc3R5bGVzaGVldC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
c3Mvc3R5bGVzaGVldC1ldmVudHMtaW5zcGVjdG9yLXN0eWxlc2hlZXQuaHRtbApAQCAtNyw4ICs3
LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJDU1MuU3R5bGVTaGVldEV2ZW50cy5JbnNwZWN0b3JTdHlsZVNoZWV0
Iik7CiAKLSAgICBsZXQgYm9keU5vZGVJZDsKLQogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAg
ICAgICAgbmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAi
RW5zdXJlIHRoZXJlIGFyZSBjdXJyZW50bHkgbm8gc3R5bGVzaGVldHMuIiwKQEAgLTIyLDI0ICsy
MCwxNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNyZWF0ZUluc3BlY3RvclN0
eWxlU2hlZXQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkNyZWF0aW5nIGFuIGluc3BlY3RvciBz
dHlsZXNoZWV0IGFkZHMgYSBzdHlsZXNoZWV0LiIsCiAgICAgICAgIHRlc3Q6IChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKKyAgICAgICAgICAgIENTU0FnZW50LmNyZWF0ZVN0eWxlU2hlZXQoV2ViSW5z
cGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5pZCk7CiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCBmdW5jdGlvbihl
dmVudCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXZWJJbnNw
ZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMSwgIlNob3VsZCBi
ZSBvbmUgc3R5bGVzaGVldC4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChldmVudC5kYXRhLnN0eWxlU2hlZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVT
aGVldCwgIkV2ZW50IGRhdGEgc2hvdWxkIGJlIGEgQ1NTU3R5bGVTaGVldCIpOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQub3Jp
Z2luID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIlN0eWxl
U2hlZXQgb3JpZ2luIGlzIGluc3BlY3Rvci4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0Lm9yaWdpbiA9PT0gV2ViSW5zcGVj
dG9yLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJTdHlsZVNoZWV0IG9yaWdpbiBzaG91
bGQgYmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAg
ICAgICAgfSk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhlIG9ubHkgd2F5
IHRvIGNyZWF0ZSBhbiBpbnNwZWN0b3Igc3R5bGVzaGVldCBpcyB0aHJvdWdoIGBDU1MuYWRkUnVs
ZWAuCi0gICAgICAgICAgICBDU1NBZ2VudC5hZGRSdWxlKGJvZHlOb2RlSWQsICJib2R5Iik7CiAg
ICAgICAgIH0KICAgICB9KTsKIAotICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZXF1
ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgImJvZHkiLCBm
dW5jdGlvbihjb250ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICBib2R5Tm9kZUlkID0gY29udGVu
dE5vZGVJZDsKLSAgICAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0K
IDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MjU4NS4u
ZTNjNzU2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUt
MDgtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBTZXBhcmF0ZSBjcmVhdGluZyBhIHN0eWxlIHNoZWV0IGZyb20gYWRkaW5n
IGEgbmV3IHJ1bGUgaW4gdGhlIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbjoKKyAgICAg
ICAgQWRkIENTUy5jcmVhdGVTdHlsZVNoZWV0LiBNb2RpZnkgQ1NTLmFkZFJ1bGUuCisKKzIwMTUt
MDgtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgdHJhY2tpbmcgb2YgYWN0aXZlIHN0eWxlc2hlZXRzIGlu
IHRoZSBmcm9udGVuZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1ODI4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvQ1NTLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL0NTUy5qc29uCmluZGV4IDVhZGUwNmEuLjdhYmJlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbgpAQCAtMzMzLDE1ICsz
MzMsMjUgQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJNb2RpZmllcyB0aGUgcnVsZSBz
ZWxlY3Rvci4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImNy
ZWF0ZVN0eWxlU2hlZXQiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYiOiAiTmV0d29yay5GcmFtZUlkIiwgImRl
c2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGZyYW1lIHdoZXJlIHRoZSBuZXcgXCJpbnNw
ZWN0b3JcIiBzdHlsZXNoZWV0IHNob3VsZCBiZSBjcmVhdGVkLiIgfQorICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5
bGVTaGVldElkIiwgIiRyZWYiOiAiU3R5bGVTaGVldElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50
aWZpZXIgb2YgdGhlIGNyZWF0ZWQgXCJpbnNwZWN0b3JcIiBzdHlsZXNoZWV0LiIgfQorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGEgbmV3IHNwZWNp
YWwgXCJpbnNwZWN0b3JcIiBzdHlsZXNoZWV0IGluIHRoZSBmcmFtZSB3aXRoIGdpdmVuIDxjb2Rl
PmZyYW1lSWQ8L2NvZGU+LiIKKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAgIm5h
bWUiOiAiYWRkUnVsZSIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImNvbnRleHROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVTaGVldElkIiwgIiRyZWYiOiAiU3R5bGVT
aGVldElkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VsZWN0b3IiLCAidHlwZSI6
ICJzdHJpbmciIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAicmV0dXJucyI6IFsKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJ1bGUiLCAiJHJlZiI6ICJDU1NSdWxlIiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBuZXdseSBjcmVhdGVkIHJ1bGUuIiB9CiAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYSBuZXcgZW1wdHkgcnVsZSB3aXRoIHRo
ZSBnaXZlbiA8Y29kZT5zZWxlY3RvcjwvY29kZT4gaW4gYSBzcGVjaWFsIFwiaW5zcGVjdG9yXCIg
c3R5bGVzaGVldCBpbiB0aGUgb3duZXIgZG9jdW1lbnQgb2YgdGhlIGNvbnRleHQgbm9kZS4iCisg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhIG5ldyBlbXB0eSBydWxlIHdpdGgg
dGhlIGdpdmVuIDxjb2RlPnNlbGVjdG9yPC9jb2RlPiBpbiBhIHN0eWxlc2hlZXQgd2l0aCBnaXZl
biA8Y29kZT5zdHlsZVNoZWV0SWQ8L2NvZGU+LiIKICAgICAgICAgfSwKICAgICAgICAgewogICAg
ICAgICAgICAgIm5hbWUiOiAiZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYWFmMTI0MC4uODdiNjQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE1LTA4
LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogU2VwYXJhdGUgY3JlYXRpbmcgYSBzdHlsZSBzaGVldCBmcm9tIGFkZGluZyBh
IG5ldyBydWxlIGluIHRoZSBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IGluc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC5o
dG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvY3NzL21hbmFnZXItcHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldEZvckZyYW1lLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oOgorICAgICAgICBBbGxvdyBmb3IgbXVsdGlwbGUgaW5zcGVjdG9yIHN0eWxl
IHNoZWV0cyBwZXIgZG9jdW1lbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZVN0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZUlu
c3BlY3RvclN0eWxlU2hlZXRGb3JEb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OnZpYUluc3BlY3RvclN0eWxlU2hlZXQpOiBEZWxldGVkLgorICAg
ICAgICBFeHRyYWN0IGFuZCBnZW5lcmFsaXplIGNyZWF0aW5nIGEgdmlhLWluc3BlY3RvciBzdHls
ZXNoZWV0IGhlcmUuCisKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRS
dWxlKToKKyAgICAgICAgTG9va3VwIHN0eWxlc2hlZXQgdG8gYWRkIGEgcnVsZSB0byB2aWEgdGhl
IHByb3ZpZGVkIHN0eWxlc2hlZXQgaWQuCisKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpiaW5kU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6ZGV0ZWN0T3JpZ2luKToKKyAgICAgICAgVXBkYXRlIHRvIGFjY291bnQgZm9yIGEgbGlz
dCBvZiBzdHlsZXNoZWV0cyBwZXIgZG9jdW1lbnQgaW5zdGVhZCBvZiBvbmUuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KToKKworMjAxNS0wOC0yNiAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEltcGxlbWVudCB0cmFja2luZyBvZiBhY3RpdmUgc3R5bGVzaGVldHMgaW4gdGhlIGZy
b250ZW5kCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDU4MjgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKaW5kZXggNjdkMTg4MC4uZDliNTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSFRN
TFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgorI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNzQ3LDEzICs3NDgsNzggQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgSW5zcGVjdG8KICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBT
dHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxl
PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlU3R5bGVTaGVldChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHls
ZVNoZWV0SWQpCiB7Ci0gICAgTm9kZSogbm9kZSA9IG1fZG9tQWdlbnQtPmFzc2VydE5vZGUoZXJy
b3JTdHJpbmcsIGNvbnRleHROb2RlSWQpOwotICAgIGlmICghbm9kZSkKKyAgICBGcmFtZSogZnJh
bWUgPSBtX2RvbUFnZW50LT5wYWdlQWdlbnQoKS0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKKyAgICBp
ZiAoIWZyYW1lKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBmcmFt
ZSBmb3IgZ2l2ZW4gaWQgZm91bmQiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSB2aWFJbnNwZWN0b3JTdHls
ZVNoZWV0KCZub2RlLT5kb2N1bWVudCgpLCB0cnVlKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KSB7CisgICAgICAgIGVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBkb2N1bWVudCBmb3IgZnJhbWUiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxl
U2hlZXQgPSBjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1lbnQoKmRvY3VtZW50KTsK
KyAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBjcmVhdGUgc3R5bGVzaGVldCBmb3IgdGhlIGZyYW1lLiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKnN0eWxlU2hlZXRJZCA9IGluc3BlY3Rv
clN0eWxlU2hlZXQtPmlkKCk7Cit9CisKK0luc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNT
U0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50KQoreworICAgIGlmICghZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1l
bnQuaXNTVkdEb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxFbGVtZW50PiBzdHlsZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoInR5cGUiLCAi
dGV4dC9jc3MiLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIENvbnRhaW5lck5vZGUqIHRhcmdldE5vZGU7CisgICAgLy8gSEVBRCBpcyBhYnNlbnQgaW4g
SW1hZ2VEb2N1bWVudHMsIGZvciBleGFtcGxlLgorICAgIGlmIChhdXRvKiBoZWFkID0gZG9jdW1l
bnQuaGVhZCgpKQorICAgICAgICB0YXJnZXROb2RlID0gaGVhZDsKKyAgICBlbHNlIGlmIChhdXRv
KiBib2R5ID0gZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQoKSkKKyAgICAgICAgdGFyZ2V0Tm9kZSA9
IGJvZHk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEluc2Vy
dGluZyB0aGlzIDxzdHlsZT4gaW50byB0aGUgZG9jdW1lbnQgd2lsbCB0cmlnZ2VyIGFjdGl2ZVN0
eWxlU2hlZXRzVXBkYXRlZAorICAgIC8vIGFuZCB3ZSB3aWxsIGNyZWF0ZSBhbiBJbnNwZWN0b3JT
dHlsZVNoZWV0IGZvciB0aGlzIDxzdHlsZT4ncyBDU1NTdHlsZVNoZWV0LgorICAgIC8vIFNldCB0
aGlzIGZsYWcsIHNvIHdoZW4gd2UgY3JlYXRlIGl0LCB3ZSBwdXQgaXQgaW50byB0aGUgdmlhIGlu
c3BlY3RvciBtYXAuCisgICAgbV9jcmVhdGluZ1ZpYUluc3BlY3RvclN0eWxlU2hlZXQgPSB0cnVl
OworICAgIElubGluZVN0eWxlT3ZlcnJpZGVTY29wZSBvdmVycmlkZVNjb3BlKGRvY3VtZW50KTsK
KyAgICB0YXJnZXROb2RlLT5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIGVjKTsKKyAgICBtX2Ny
ZWF0aW5nVmlhSW5zcGVjdG9yU3R5bGVTaGVldCA9IGZhbHNlOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9kb2N1bWVudFRvSW5z
cGVjdG9yU3R5bGVTaGVldC5maW5kKCZkb2N1bWVudCk7CisgICAgQVNTRVJUKGl0ZXJhdG9yICE9
IG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpOworICAgIGlmIChpdGVyYXRv
ciA9PSBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LmVuZCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGluc3BlY3RvclN0eWxlU2hlZXRzRm9yRG9jdW1lbnQg
PSBpdGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKCFpbnNwZWN0b3JTdHlsZVNoZWV0c0ZvckRv
Y3VtZW50LmlzRW1wdHkoKSk7CisgICAgaWYgKGluc3BlY3RvclN0eWxlU2hlZXRzRm9yRG9jdW1l
bnQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBpbnNw
ZWN0b3JTdHlsZVNoZWV0c0ZvckRvY3VtZW50Lmxhc3QoKS5nZXQoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQoreworICAgIEluc3BlY3RvclN0
eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJy
b3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KSB7
CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyB0YXJnZXQgc3R5bGVzaGVl
dCBmb3VuZCIpOwogICAgICAgICByZXR1cm47CkBAIC05MDUsNTkgKzk3MSwxOSBAQCBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YmluZFN0eWxlU2hlZXQoQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldAogICAgICAgICBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9y
U3R5bGVTaGVldDo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBpZCwgc3R5bGVTaGVl
dCwgZGV0ZWN0T3JpZ2luKHN0eWxlU2hlZXQsIGRvY3VtZW50KSwgSW5zcGVjdG9yRE9NQWdlbnQ6
OmRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSwgdGhpcyk7CiAgICAgICAgIG1faWRUb0luc3Bl
Y3RvclN0eWxlU2hlZXQuc2V0KGlkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAgbV9j
c3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChzdHlsZVNoZWV0LCBpbnNwZWN0
b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgaWYgKG1fY3JlYXRpbmdWaWFJbnNwZWN0b3JTdHlsZVNo
ZWV0KQotICAgICAgICAgICAgbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5bGVTaGVldC5hZGQoZG9j
dW1lbnQsIGluc3BlY3RvclN0eWxlU2hlZXQpOworICAgICAgICBpZiAobV9jcmVhdGluZ1ZpYUlu
c3BlY3RvclN0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgIGF1dG8mIGluc3BlY3RvclN0eWxlU2hl
ZXRzRm9yRG9jdW1lbnQgPSBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LmFkZChkb2N1
bWVudCwgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Pj4oKSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICAgICAgaW5zcGVjdG9yU3R5bGVTaGVldHNGb3JEb2N1bWVudC5hcHBlbmQo
aW5zcGVjdG9yU3R5bGVTaGVldCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGluc3Bl
Y3RvclN0eWxlU2hlZXQuZ2V0KCk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3Rv
ckNTU0FnZW50Ojp2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBjcmVhdGVJZkFic2VudCkKLXsKLSAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIEFTU0VS
VCghY3JlYXRlSWZBYnNlbnQpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpICYmICFkb2N1bWVudC0+aXNTVkdEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3JT
dHlsZVNoZWV0PiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5
bGVTaGVldC5nZXQoZG9jdW1lbnQpOwotICAgIGlmIChpbnNwZWN0b3JTdHlsZVNoZWV0IHx8ICFj
cmVhdGVJZkFic2VudCkKLSAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQuZ2V0KCk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVF
bGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoInN0eWxlIiwgZWMpOwotICAgIGlmICgh
ZWMpCi0gICAgICAgIHN0eWxlRWxlbWVudC0+c2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQvY3Nz
IiwgZWMpOwotICAgIGlmICghZWMpIHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSogdGFyZ2V0Tm9k
ZTsKLSAgICAgICAgLy8gSEVBRCBpcyBhYnNlbnQgaW4gSW1hZ2VEb2N1bWVudHMsIGZvciBleGFt
cGxlLgotICAgICAgICBpZiAoYXV0byogaGVhZCA9IGRvY3VtZW50LT5oZWFkKCkpCi0gICAgICAg
ICAgICB0YXJnZXROb2RlID0gaGVhZDsKLSAgICAgICAgZWxzZSBpZiAoYXV0byogYm9keSA9IGRv
Y3VtZW50LT5ib2R5T3JGcmFtZXNldCgpKQotICAgICAgICAgICAgdGFyZ2V0Tm9kZSA9IGJvZHk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIC8v
IEluc2VydGluZyB0aGlzIDxzdHlsZT4gaW50byB0aGUgZG9jdW1lbnQgd2lsbCB0cmlnZ2VyIGFj
dGl2ZVN0eWxlU2hlZXRzVXBkYXRlZAotICAgICAgICAvLyBhbmQgd2Ugd2lsbCBjcmVhdGUgYW4g
SW5zcGVjdG9yU3R5bGVTaGVldCBmb3IgdGhpcyA8c3R5bGU+J3MgQ1NTU3R5bGVTaGVldC4KLSAg
ICAgICAgLy8gU2V0IHRoaXMgZmxhZywgc28gd2hlbiB3ZSBjcmVhdGUgaXQsIHdlIHB1dCBpdCBp
bnRvIHRoZSB2aWEgaW5zcGVjdG9yIGhhc2ggbWFwLgotICAgICAgICBtX2NyZWF0aW5nVmlhSW5z
cGVjdG9yU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAgIElubGluZVN0eWxlT3ZlcnJpZGVTY29w
ZSBvdmVycmlkZVNjb3BlKGRvY3VtZW50KTsKLSAgICAgICAgdGFyZ2V0Tm9kZS0+YXBwZW5kQ2hp
bGQoc3R5bGVFbGVtZW50LCBlYyk7Ci0gICAgICAgIG1fY3JlYXRpbmdWaWFJbnNwZWN0b3JTdHls
ZVNoZWV0ID0gZmFsc2U7Ci0gICAgfQotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5bGVTaGVldC5nZXQoZG9j
dW1lbnQpOwotfQotCiBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNz
ZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBzdHlsZVNoZWV0SWQpCiB7CiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQ6Oml0ZXJhdG9y
IGl0ID0gbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5maW5kKHN0eWxlU2hlZXRJZCk7CiAgICAg
aWYgKGl0ID09IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKLSAgICAgICAgZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIHN0eWxlIHNoZWV0IHdpdGggZ2l2ZW4gaWQgZm91
bmQiKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIHN0eWxlc2hlZXQg
d2l0aCBnaXZlbiBpZCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKQEAgLTk3MCwxMyArOTk2LDE3IEBAIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0
ZWN0T3JpZ2luKENTU1N0CiAKICAgICBpZiAocGFnZVN0eWxlU2hlZXQgJiYgIXBhZ2VTdHlsZVNo
ZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
VXNlckFnZW50OwotICAgIAorCiAgICAgaWYgKHBhZ2VTdHlsZVNoZWV0ICYmIHBhZ2VTdHlsZVNo
ZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1l
KCkgPT0gIiNkb2N1bWVudCIpCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7CiAKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiB2
aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXIgPSB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KG93
bmVyRG9jdW1lbnQsIGZhbHNlKTsKLSAgICBpZiAodmlhSW5zcGVjdG9yU3R5bGVTaGVldEZvck93
bmVyICYmIHBhZ2VTdHlsZVNoZWV0ID09IHZpYUluc3BlY3RvclN0eWxlU2hlZXRGb3JPd25lci0+
cGFnZVN0eWxlU2hlZXQoKSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Rv
Y3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LmZpbmQob3duZXJEb2N1bWVudCk7CisgICAgaWYg
KGl0ZXJhdG9yICE9IG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JTdHlsZVNoZWV0IDogaXRlcmF0b3ItPnZhbHVlKSB7
CisgICAgICAgICAgICBpZiAocGFnZVN0eWxlU2hlZXQgPT0gaW5zcGVjdG9yU3R5bGVTaGVldC0+
cGFnZVN0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3I7CisgICAgICAgIH0KKyAgICB9
CiAKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2lu
OjpSZWd1bGFyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaAppbmRleCA4ZGE3NGE5Li4zZTliNDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtNDUsMjEgKzQ1LDE2IEBAIGNsYXNzIENTU0Zyb250
ZW5kRGlzcGF0Y2hlcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUnVsZTsKLWNs
YXNzIENTU1J1bGVMaXN0OwotY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU1N0
eWxlUnVsZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDaGFuZ2VSZWdpb25PdmVyc2V0
VGFzazsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjsKIGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOwogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIE5hbWVOb2RlTWFwOwogY2xhc3MgTm9kZTsKIGNs
YXNzIE5vZGVMaXN0OwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlUnVsZTsKLWNs
YXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudCBm
aW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQpAQCAtNzEsOCArNjYsOCBAQCBj
bGFzcyBJbnNwZWN0b3JDU1NBZ2VudCBmaW5hbAogcHVibGljOgogICAgIGNsYXNzIElubGluZVN0
eWxlT3ZlcnJpZGVTY29wZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbmxpbmVTdHlsZU92ZXJy
aWRlU2NvcGUoU2VjdXJpdHlDb250ZXh0KiBjb250ZXh0KQotICAgICAgICAgICAgOiBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeShjb250ZXh0LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkKKyAgICAg
ICAgSW5saW5lU3R5bGVPdmVycmlkZVNjb3BlKFNlY3VyaXR5Q29udGV4dCYgY29udGV4dCkKKyAg
ICAgICAgICAgIDogbV9jb250ZW50U2VjdXJpdHlQb2xpY3koY29udGV4dC5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSkKICAgICAgICAgewogICAgICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3ktPnNldE92ZXJyaWRlQWxsb3dJbmxpbmVTdHlsZSh0cnVlKTsKICAgICAgICAgfQpAQCAtMTE5
LDcgKzExNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVTaGVldFRleHQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0
ZXh0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0KEVycm9yU3RyaW5n
JiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHN0eWxlSWQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiByZXN1
bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJp
bmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcnVsZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYg
cmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyYs
IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlU3R5bGVTaGVldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgU3RyaW5nKiBzdHlsZVNoZWV0SWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBh
ZGRSdWxlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+
JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIHJlc3VsdCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYg
cmVzdWx0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGZv
cmNlZFBzZXVkb0NsYXNzZXMpIG92ZXJyaWRlOwpAQCAtMTM1LDcgKzEzMSw3IEBAIHByaXZhdGU6
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+
PiBJZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKICAgICB0eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVT
aGVldCosIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Pj4gQ1NTU3R5bGVTaGVldFRvSW5zcGVj
dG9yU3R5bGVTaGVldDsKICAgICB0eXBlZGVmIEhhc2hNYXA8Tm9kZSosIFJlZlB0cjxJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+PiBOb2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0OyAv
LyBib2d1cyAic3R5bGVzaGVldHMiIHdpdGggZWxlbWVudHMnIGlubGluZSBzdHlsZXMKLSAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPERvY3VtZW50PiwgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hl
ZXQ+PiBEb2N1bWVudFRvVmlhSW5zcGVjdG9yU3R5bGVTaGVldDsgLy8gInZpYSBpbnNwZWN0b3Ii
IHN0eWxlc2hlZXRzCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxEb2N1bWVudD4sIFZlY3Rv
cjxSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4+PiBEb2N1bWVudFRvVmlhSW5zcGVjdG9yU3R5
bGVTaGVldDsgLy8gInZpYSBpbnNwZWN0b3IiIHN0eWxlc2hlZXRzCiAgICAgdHlwZWRlZiBIYXNo
TWFwPGludCwgdW5zaWduZWQ+IE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAKICAgICB2b2lk
IHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKQEAgLTE1MCw4ICsxNDYsOCBAQCBwcml2YXRlOgog
CiAgICAgU3RyaW5nIHVuYmluZFN0eWxlU2hlZXQoSW5zcGVjdG9yU3R5bGVTaGVldCopOwogICAg
IEluc3BlY3RvclN0eWxlU2hlZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKLSAg
ICBJbnNwZWN0b3JTdHlsZVNoZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50Kiwg
Ym9vbCBjcmVhdGVJZkFic2VudCk7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5
bGVTaGVldEZvcklkKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgSW5zcGVjdG9y
U3R5bGVTaGVldCogY3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KERvY3VtZW50
Jik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVj
dE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQpOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4g
YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAK
aW5kZXggYjU2ZTg3MS4uOTc2MWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzI2LDcgKzcyNiw3IEBAIENTU1N0eWxlUnVs
ZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBF
eGNlcHRpb25Db2RlCiAKICAgICBzdHlsZVNoZWV0VGV4dC5hcHBlbmQoc2VsZWN0b3IpOwogICAg
IHN0eWxlU2hlZXRUZXh0LmFwcGVuZExpdGVyYWwoIiB7fSIpOwotICAgIC8vIFVzaW5nIHNldFRl
eHQoKSBhcyB0aGlzIG9wZXJhdGlvbiBjaGFuZ2VzIHRoZSBzdHlsZSBzaGVldCBydWxlIHNldC4K
KyAgICAvLyBVc2luZyBzZXRUZXh0KCkgYXMgdGhpcyBvcGVyYXRpb24gY2hhbmdlcyB0aGUgc3R5
bGVzaGVldCBydWxlIHNldC4KICAgICBzZXRUZXh0KHN0eWxlU2hlZXRUZXh0LnRvU3RyaW5nKCks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKCk7CkBA
IC0xMjk1LDcgKzEyOTUsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZTo6c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLAogICAgIEFTU0VSVF9V
TlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOwogCiAgICAgewotICAgICAgICBJ
bnNwZWN0b3JDU1NBZ2VudDo6SW5saW5lU3R5bGVPdmVycmlkZVNjb3BlIG92ZXJyaWRlU2NvcGUo
Jm1fZWxlbWVudC0+ZG9jdW1lbnQoKSk7CisgICAgICAgIEluc3BlY3RvckNTU0FnZW50OjpJbmxp
bmVTdHlsZU92ZXJyaWRlU2NvcGUgb3ZlcnJpZGVTY29wZShtX2VsZW1lbnQtPmRvY3VtZW50KCkp
OwogICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZSgic3R5bGUiLCB0ZXh0LCBlYyk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAyNTE4MzQzLi41ZWM0MjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzOCBAQAogMjAxNS0wOC0yNiAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFNlcGFyYXRlIGNyZWF0aW5nIGEgc3R5bGUgc2hlZXQgZnJvbSBhZGRpbmcgYSBuZXcgcnVsZSBp
biB0aGUgcHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0ODUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBiYWNrZW5kIGFsbG93cyBjcmVhdGluZyBtdWx0aXBsZSBzdHlsZXNoZWV0cy4g
VGhpcyBwYXRjaCBtYWtlcworICAgICAgICB0aGUgZnJvbnRlbmQgaGF2ZSBhIHByZWZlcnJlZCBJ
bnNwZWN0b3JTdHlsZVNoZWV0IHBlci1mcmFtZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
QmFzZS9PYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0LnNpbmdsZUZpcmVF
dmVudExpc3RlbmVyKToKKyAgICAgICAgUmV0dXJuIHRoZSB3cmFwcGVkIGxpc3RlbmVyIHNvIGl0
IGNhbiBiZSByZW1vdmVkIGlmIG5lZWRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU1N0eWxlU2hlZXQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVl
dC5wcm90b3R5cGUuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAgICAgSGVscGVyIHRvIGNo
ZWNrIGlmIHRoZSBjdXJyZW50IHN0eWxlc2hlZXQgaXMgYW4gaW5zcGVjdG9yIGNyZWF0ZWQgc3R5
bGVzaGVldC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVN
YW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5
cGUucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIucHJvdG90eXBlLnByZWZlcnJlZEluc3BlY3RvclN0eWxl
U2hlZXRGb3JGcmFtZS5kb2N1bWVudE5vZGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVl
dEZvckZyYW1lLmJvZHlOb2RlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1hbmFnZXIucHJvdG90eXBlLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFt
ZS5jc3NSdWxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFn
ZXIucHJvdG90eXBlLl9pbnNwZWN0b3JTdHlsZVNoZWV0c0ZvckZyYW1lKToKKyAgICAgICAgTG9v
a3VwIHRoZSBpbnNwZWN0b3Igc3R5bGVzaGVldCBmb3IgYSBwYXJ0aWN1bGFyIGZyYW1lLiBJZiBv
bmUgZG9lc24ndCBleGlzdCBjcmVhdGUgaXQuCisgICAgICAgIEZvciBsZWdhY3kgYmFja2VuZHMs
IGV4cGxvaXQgImFkZFJ1bGUiIHRvIGNyZWF0ZSB0aGUgaW5zcGVjdG9yIHN0eWxlc2hlZXQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUuYWRkRW1wdHlSdWxlLmluc3BlY3RvclN0eWxlU2hl
ZXRBdmFpbGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90
eXBlLmFkZEVtcHR5UnVsZSk6CisgICAgICAgIEN1cnJlbnRseSBhZGQgYWxsIG5ldyBydWxlcyB0
byB0aGUgaW5zcGVjdG9yIHN0eWxlc2hlZXQuCisKKzIwMTUtMDgtMjYgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBVbmNhdWdo
dCBleGNlcHRpb24gaW4gQ1NTIENvbXBsZXRpb24gLSBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd0aGlzLl92YWx1ZXNbbWlkZGxlSW5kZXhdLnN0YXJ0
c1dpdGgnKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4NTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9PYmplY3QuanMKaW5kZXggMjEzNDAzNi4uMDZkMDIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKQEAgLTYzLDYgKzYzLDcg
QEAgV2ViSW5zcGVjdG9yLk9iamVjdCA9IGNsYXNzIE9iamVjdAogICAgICAgICB9LmJpbmQodGhp
cyk7CiAKICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgd3JhcHBlZENh
bGxiYWNrLCBudWxsKTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZWRDYWxsYmFjazsKICAgICB9CiAK
ICAgICBzdGF0aWMgcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlz
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzCmluZGV4IGFjMmI2NTgu
LmM3ZDZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKQEAgLTE1MSw2
ICsxNTEsOTIgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9IGNsYXNzIENTU1N0eWxl
TWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHN0eWxl
czsKICAgICB9CiAKKyAgICBwcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUoZnJh
bWUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIGluc3BlY3RvclN0eWxlU2hlZXRzID0g
dGhpcy5faW5zcGVjdG9yU3R5bGVTaGVldHNGb3JGcmFtZShmcmFtZSk7CisgICAgICAgIGZvciAo
bGV0IHN0eWxlU2hlZXQgb2YgaW5zcGVjdG9yU3R5bGVTaGVldHMpIHsKKyAgICAgICAgICAgIGlm
IChzdHlsZVNoZWV0W1dlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuUHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldFN5bWJvbF0pIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhzdHlsZVNo
ZWV0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBpZiAoQ1NTQWdlbnQuY3JlYXRlU3R5bGVTaGVldCkgeworICAgICAgICAgICAg
Q1NTQWdlbnQuY3JlYXRlU3R5bGVTaGVldChmcmFtZS5pZCwgZnVuY3Rpb24oZXJyb3IsIHN0eWxl
U2hlZXRJZCkgeworICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SWQpOwor
ICAgICAgICAgICAgICAgIHN0eWxlU2hlZXRbV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5Q
cmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNoZWV0U3ltYm9sXSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soc3R5bGVTaGVldCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA5KTogQ1NT
LmNyZWF0ZVN0eWxlU2hlZXQgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgLy8gTGVnYWN5IGJhY2tl
bmRzIGNhbiBvbmx5IGNyZWF0ZSB0aGUgSW5zcGVjdG9yIFN0eWxlU2hlZXQgdGhyb3VnaCBDU1Mu
YWRkUnVsZS4KKyAgICAgICAgLy8gRXhwbG9pdCB0aGF0IHRvIGNyZWF0ZSB0aGUgSW5zcGVjdG9y
IFN0eWxlU2hlZXQgZm9yIHRoZSBkb2N1bWVudC5ib2R5IG5vZGUgaW4KKyAgICAgICAgLy8gdGhp
cyBmcmFtZSwgdGhlbiBnZXQgdGhlIFN0eWxlU2hlZXQgZm9yIHRoZSBuZXcgcnVsZS4KKworICAg
ICAgICBsZXQgZXhwcmVzc2lvbiA9IGFwcGVuZFdlYkluc3BlY3RvclNvdXJjZVVSTCgiZG9jdW1l
bnQiKTsKKyAgICAgICAgbGV0IGNvbnRleHRJZCA9IGZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0
LmlkOworICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uLCBv
YmplY3RHcm91cDogIiIsIGluY2x1ZGVDb21tYW5kTGluZUFQSTogZmFsc2UsIGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZSwgY29udGV4dElkLCByZXR1cm5CeVZhbHVl
OiBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZX0sIGRvY3VtZW50QXZhaWxhYmxlKTsKKwor
ICAgICAgICBmdW5jdGlvbiBkb2N1bWVudEF2YWlsYWJsZShlcnJvciwgZG9jdW1lbnRSZW1vdGVP
YmplY3RQYXlsb2FkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGRvY3VtZW50UmVtb3RlT2JqZWN0UGF5bG9hZCk7Cisg
ICAgICAgICAgICByZW1vdGVPYmplY3QucHVzaE5vZGVUb0Zyb250ZW5kKGRvY3VtZW50Tm9kZUF2
YWlsYWJsZS5iaW5kKG51bGwsIHJlbW90ZU9iamVjdCkpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gZG9jdW1lbnROb2RlQXZhaWxhYmxlKHJlbW90ZU9iamVjdCwgZG9jdW1lbnROb2Rl
SWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlbW90ZU9iamVjdC5yZWxlYXNlKCk7CisKKyAg
ICAgICAgICAgIGlmICghZG9jdW1lbnROb2RlSWQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
ayhudWxsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlSWQsICJib2R5IiwgYm9k
eU5vZGVBdmFpbGFibGUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYm9keU5vZGVB
dmFpbGFibGUoZXJyb3IsIGJvZHlOb2RlSWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChl
cnJvcikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbGV0IHNlbGVjdG9yID0gIiI7IC8vIEludGVudGlvbmFsbHkg
ZW1wdHkuCisgICAgICAgICAgICBDU1NBZ2VudC5hZGRSdWxlKGJvZHlOb2RlSWQsIHNlbGVjdG9y
LCBjc3NSdWxlQXZhaWxhYmxlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNzc1J1
bGVBdmFpbGFibGUoZXJyb3IsIHBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChl
cnJvciB8fCAhcGF5bG9hZC5ydWxlSWQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxs
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGxldCBzdHlsZVNoZWV0SWQgPSBwYXlsb2FkLnJ1bGVJZC5zdHlsZVNoZWV0SWQ7CisgICAgICAg
ICAgICBsZXQgc3R5bGVTaGVldCA9IFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc3R5bGVT
aGVldEZvcklkZW50aWZpZXIoc3R5bGVTaGVldElkKTsKKyAgICAgICAgICAgIGlmICghc3R5bGVT
aGVldCkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3R5bGVTaGVldFtXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLlByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRTeW1ib2xd
ID0gdHJ1ZTsKKworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldC5pc0luc3Bl
Y3RvclN0eWxlU2hlZXQoKSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0
LnBhcmVudEZyYW1lID09PSBmcmFtZSk7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0eWxlU2hl
ZXQpOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBtZWRpYVF1
ZXJ5UmVzdWx0Q2hhbmdlZCgpCkBAIC0yMDAsNiArMjg2LDE4IEBAIFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1hbmFnZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiAKICAgICAvLyBQcml2YXRlCiAKKyAgICBfaW5zcGVjdG9yU3R5bGVTaGVldHNGb3JG
cmFtZShmcmFtZSkKKyAgICB7CisgICAgICAgIGxldCBzdHlsZVNoZWV0cyA9IFtdOworCisgICAg
ICAgIGZvciAobGV0IHN0eWxlU2hlZXQgb2YgdGhpcy5zdHlsZVNoZWV0cykgeworICAgICAgICAg
ICAgaWYgKHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgJiYgc3R5bGVTaGVldC5w
YXJlbnRGcmFtZSA9PT0gZnJhbWUpCisgICAgICAgICAgICAgICAgc3R5bGVTaGVldHMucHVzaChz
dHlsZVNoZWV0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzdHlsZVNoZWV0czsKKyAg
ICB9CisKICAgICBfbm9kZVBzZXVkb0NsYXNzZXNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgbm9kZSA9IGV2ZW50LnRhcmdldDsKQEAgLTQyNywzICs1MjUsNCBAQCBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50ID0gewogfTsKIAogV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTWFuYWdlci5Gb3JjZWFibGVQc2V1ZG9DbGFzc2VzID0gWyJhY3RpdmUiLCAiZm9jdXMiLCAi
aG92ZXIiLCAidmlzaXRlZCJdOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5QcmVmZXJy
ZWRJbnNwZWN0b3JTdHlsZVNoZWV0U3ltYm9sID0gU3ltYm9sKCJjc3Mtc3R5bGUtbWFuYWdlci1w
cmVmZXJyZWQtaW5zcGVjdG9yLXN0eWxlc2hlZXQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZVNoZWV0LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMKaW5k
ZXggYjI5NGRjZi4uNGE2NGZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMKQEAgLTExMiw2ICsx
MTIsMTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUKICAgICAgICAgcmV0dXJuIHRoaXMuX2hh
c0luZm87CiAgICAgfQogCisgICAgaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9vcmlnaW4gPT09IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LlR5
cGUuSW5zcGVjdG9yOworICAgIH0KKwogICAgIGlzSW5saW5lU3R5bGVUYWcoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2lubGluZVN0eWxlVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwppbmRleCBkMDZjMzU1
Li5jMjZkMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRE9NTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwpAQCAtMTI4LDYgKzEyOCwxOCBAQCBXZWJJbnNwZWN0b3Iu
RE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAg
ICAvLyBQdWJsaWMKIAorICAgIGdldCBmcmFtZUlkZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2ZyYW1lSWRlbnRpZmllciB8fCB0aGlzLm93bmVyRG9jdW1lbnQuZnJhbWVJ
ZGVudGlmaWVyOworICAgIH0KKworICAgIGdldCBmcmFtZSgpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX2ZyYW1lKQorICAgICAgICAgICAgdGhpcy5fZnJhbWUgPSBXZWJJbnNwZWN0b3IuZnJh
bWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKHRoaXMuZnJhbWVJZGVudGlmaWVy
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lOworICAgIH0KKwogICAgIGdldCBjaGlsZHJl
bigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NoaWxkcmVuKQpAQCAtNjQzLDExICs2NTUs
NiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1l
bnRzKTsKICAgICAgICAgfTsKICAgICB9Ci0KLSAgICBnZXQgZnJhbWVJZGVudGlmaWVyKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9mcmFtZUlkZW50aWZpZXI7Ci0gICAgfQogfTsKIAog
V2ViSW5zcGVjdG9yLkRPTU5vZGUuRXZlbnQgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCmluZGV4
IDhjODhkNTQuLjk3ZGYxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCkBAIC0yMzUsOSArMjM1
LDIwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNlbGVjdG9yID0gdGhpcy5fbm9kZS5hcHByb3ByaWF0
ZVNlbGVjdG9yRm9yKHRydWUpOworICAgICAgICBsZXQgc2VsZWN0b3IgPSB0aGlzLl9ub2RlLmFw
cHJvcHJpYXRlU2VsZWN0b3JGb3IodHJ1ZSk7CiAKLSAgICAgICAgQ1NTQWdlbnQuYWRkUnVsZS5p
bnZva2Uoe2NvbnRleHROb2RlSWQ6IHRoaXMuX25vZGUuaWQsIHNlbGVjdG9yfSwgYWRkZWRSdWxl
LmJpbmQodGhpcykpOworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOSk6IEJlZm9yZSBD
U1MuY3JlYXRlU3R5bGVTaGVldCwgQ1NTLmFkZFJ1bGUgY291bGQgYmUgY2FsbGVkIHdpdGggYSBj
b250ZXh0Tm9kZS4KKyAgICAgICAgaWYgKCFDU1NBZ2VudC5jcmVhdGVTdHlsZVNoZWV0KSB7Cisg
ICAgICAgICAgICBDU1NBZ2VudC5hZGRSdWxlLmludm9rZSh7Y29udGV4dE5vZGVJZDogdGhpcy5f
bm9kZS5pZCAsIHNlbGVjdG9yfSwgYWRkZWRSdWxlLmJpbmQodGhpcykpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaW5zcGVjdG9yU3R5bGVTaGVl
dEF2YWlsYWJsZShzdHlsZVNoZWV0KQorICAgICAgICB7CisgICAgICAgICAgICBDU1NBZ2VudC5h
ZGRSdWxlKHN0eWxlU2hlZXQuaWQsIHNlbGVjdG9yLCBhZGRlZFJ1bGUuYmluZCh0aGlzKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnByZWZlcnJl
ZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZSh0aGlzLl9ub2RlLmZyYW1lLCBpbnNwZWN0b3JT
dHlsZVNoZWV0QXZhaWxhYmxlLmJpbmQodGhpcykpOwogICAgIH0KIAogICAgIGFkZFJ1bGVXaXRo
U2VsZWN0b3Ioc2VsZWN0b3IpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>