[Mono-docs-list] Edit preview patch.

Miguel de Icaza miguel@ximian.com
07 Sep 2003 11:32:43 -0400


--=-ML3kCGCDyz92kAtJd0Gx
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hey guys,

   This is the patch to add preview to the editor.  If someone has input
on how to fix my bugs, I would love to hear from you ;-)

Miguel.
-- 
Miguel de Icaza <miguel@ximian.com>

--=-ML3kCGCDyz92kAtJd0Gx
Content-Disposition: attachment; filename=x
Content-Transfer-Encoding: base64
Content-Type: text/plain; name=x; charset=ISO-8859-1

PyAuZWNtYS1wcm92aWRlci5jcy5zd3ANCj8gLnByb3ZpZGVyLmNzLnN3cA0KPyBiLmNzDQo/IGJy
b3dzZXIuZ2xhZGVwDQo/IGNvcHkuZ2xhZGUNCj8gY29weTIuZ2xhZGUNCj8gZmlsZQ0KPyBoZWxs
by5wbmcNCj8gaW5kZXgNCj8gaW5kZXguaHRtbA0KPyBtb25vZG9jX2VkaXRzLnBhdGNoDQo/IHBh
Z2UtaGVhZGVyLmh0bWwNCj8gc291cmNlcw0KPyB3ZWJzaXRlLWhhbmRsZXIuY3MNCj8geA0KSW5k
ZXg6IGJyb3dzZXIuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3B1YmxpYy9tb25vZG9j
L2Jyb3dzZXIvYnJvd3Nlci5jcyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjENCmRpZmYgLXUg
LXUgLXIxLjYxIGJyb3dzZXIuY3MNCi0tLSBicm93c2VyLmNzCTYgU2VwIDIwMDMgMDA6NDI6Mjkg
LTAwMDAJMS42MQ0KKysrIGJyb3dzZXIuY3MJNyBTZXAgMjAwMyAxNTo0MjowOSAtMDAwMA0KQEAg
LTk5LDYgKzk5LDcgQEANCiAJLy8NCiAJW0dsYWRlLldpZGdldF0gTm90ZWJvb2sgaHRtbF9hbmRf
ZWRpdG9yX25vdGVib29rOw0KIAlbR2xhZGUuV2lkZ2V0XSBUZXh0VmlldyB0ZXh0X2VkaXRvcjsN
CisJW0dsYWRlLldpZGdldF0gU2Nyb2xsZWRXaW5kb3cgaHRtbF9wcmV2aWV3X2NvbnRhaW5lcjsN
CiANCiAJW0dsYWRlLldpZGdldF0gRXZlbnRCb3ggYmFyX2ViLCBpbmRleF9lYjsNCiAJW0dsYWRl
LldpZGdldF0gTGFiZWwgc3VidGl0bGVfbGFiZWw7DQpAQCAtMTE3LDExICsxMTgsMTIgQEANCiAN
CiAJcHVibGljIEhpc3RvcnkgaGlzdG9yeTsNCiANCi0JLy8NCiAJLy8gV2hlcmUgd2UgcmVuZGVy
IHRoZSBjb250ZW50cw0KLQkvLw0KIAlIVE1MIGh0bWw7DQogDQorCS8vIE91ciBIVE1MIHByZXZp
ZXcgZHVyaW5nIGVkaXRpbmcuDQorCUhUTUwgaHRtbF9wcmV2aWV3Ow0KKw0KICAgICAgICAgLy8N
CiAJLy8gTGVmdC1oYW5kIHNpZGUgQnJvd3NlcnMNCiAJLy8NCkBAIC0xODIsNiArMTg0LDExIEBA
DQogCQkvLyBUZXh0IGVkaXRvciAoZm9yIGVkaXRpbmcgdGhlIGRvY3VtZW50YXRpb24pLg0KIAkJ
Ly8NCiAJCWh0bWxfYW5kX2VkaXRvcl9ub3RlYm9vay5TaG93VGFicyA9IGZhbHNlOw0KKwkJaHRt
bF9wcmV2aWV3ID0gbmV3IEhUTUwgKCk7DQorCQlodG1sX3ByZXZpZXcuU2hvdyAoKTsNCisJCWh0
bWxfcHJldmlld19jb250YWluZXIuQWRkIChodG1sX3ByZXZpZXcpOw0KKw0KKwkJdGV4dF9lZGl0
b3IuQnVmZmVyLkNoYW5nZWQgKz0gbmV3IEV2ZW50SGFuZGxlciAoRWRpdGVkVGV4dENoYW5nZWQp
Ow0KIAkJDQogCQkvLw0KIAkJLy8gT3RoZXIgYml0cw0KQEAgLTU1Niw2ICs1NjMsMzEgQEANCiAJ
ew0KIAkJU2V0TW9kZSAoTW9kZS5WaWV3ZXIpOw0KIAkJaGlzdG9yeS5BY3RpdmF0ZUN1cnJlbnQg
KCk7DQorCX0NCisNCisJdm9pZCBFZGl0ZWRUZXh0Q2hhbmdlZCAob2JqZWN0IHNlbmRlciwgRXZl
bnRBcmdzIGFyZ3MpDQorCXsNCisJCVRleHQuU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBUZXh0LlN0
cmluZ0J1aWxkZXIgKCk7DQorCQlzYi5BcHBlbmQgKCI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/Pjxk
b2NzPiIpOw0KKwkJc2IuQXBwZW5kICh0ZXh0X2VkaXRvci5CdWZmZXIuVGV4dCk7DQorCQlzYi5B
cHBlbmQgKCI8L2RvY3M+Iik7DQorCQlYbWwuWG1sRG9jdW1lbnQgZCA9IG5ldyBYbWwuWG1sRG9j
dW1lbnQgKCk7DQorCQlzdHJpbmcgaHRtbF90ZXh0ID0gIiI7DQorCQl0cnkgew0KKwkJCWQuTG9h
ZFhtbCAoc2IuVG9TdHJpbmcgKCkpOw0KKwkJCWh0bWxfdGV4dCA9IEVjbWFIZWxwU291cmNlLkh0
bWxpemUgKGQpOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQlzdGF0dXNiYXIuUG9w
IChjb250ZXh0X2lkKTsNCisJCQlzdGF0dXNiYXIuUHVzaCAoY29udGV4dF9pZCwgZS5NZXNzYWdl
KTsNCisJCQlyZXR1cm47DQorCQl9DQorCQlzdGF0dXNiYXIuUG9wIChjb250ZXh0X2lkKTsNCisJ
CXN0YXR1c2Jhci5QdXNoIChjb250ZXh0X2lkLCAiWE1MIE9LIik7DQorCQlHdGsuSFRNTFN0cmVh
bSBzID0gaHRtbF9wcmV2aWV3LkJlZ2luICgidGV4dC9odG1sIik7DQorCQlzLldyaXRlICgiPGh0
bWw+PGJvZHk+Iik7DQorCQlzLldyaXRlIChodG1sX3RleHQpOw0KKwkJcy5Xcml0ZSAoIjwvYm9k
eT48L2h0bWw+Iik7DQorCQlodG1sX3ByZXZpZXcuRW5kIChzLCBIVE1MU3RyZWFtU3RhdHVzLk9r
KTsNCiAJfQ0KIH0NCiANCkluZGV4OiBicm93c2VyLmdsYWRlDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls
ZTogL2N2cy9wdWJsaWMvbW9ub2RvYy9icm93c2VyL2Jyb3dzZXIuZ2xhZGUsdg0KcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjI3DQpkaWZmIC11IC11IC1yMS4yNyBicm93c2VyLmdsYWRlDQotLS0gYnJv
d3Nlci5nbGFkZQk1IFNlcCAyMDAzIDA0OjQ3OjMzIC0wMDAwCTEuMjcNCisrKyBicm93c2VyLmds
YWRlCTcgU2VwIDIwMDMgMTU6NDI6MTEgLTAwMDANCkBAIC03ODQsMzAgKzc4NCw5MSBAQA0KIAkJ
CSAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjA8L3Byb3BlcnR5Pg0KIA0KIAkJCSAgPGNoaWxk
Pg0KLQkJCSAgICA8d2lkZ2V0IGNsYXNzPSJHdGtTY3JvbGxlZFdpbmRvdyIgaWQ9InNjcm9sbGVk
d2luZG93MiI+DQorCQkJICAgIDx3aWRnZXQgY2xhc3M9Ikd0a1ZCb3giIGlkPSJ2Ym94NyI+DQog
CQkJICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5Pg0KLQkJCSAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5Pg0KLQkJCSAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJoc2Nyb2xsYmFyX3BvbGljeSI+R1RLX1BPTElDWV9BTFdBWVM8L3By
b3BlcnR5Pg0KLQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2c2Nyb2xsYmFyX3BvbGljeSI+R1RL
X1BPTElDWV9BTFdBWVM8L3Byb3BlcnR5Pg0KLQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFk
b3dfdHlwZSI+R1RLX1NIQURPV19OT05FPC9wcm9wZXJ0eT4NCi0JCQkgICAgICA8cHJvcGVydHkg
bmFtZT0id2luZG93X3BsYWNlbWVudCI+R1RLX0NPUk5FUl9UT1BfTEVGVDwvcHJvcGVydHk+DQor
CQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImhvbW9nZW5lb3VzIj5GYWxzZTwvcHJvcGVydHk+DQor
CQkJICAgICAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjA8L3Byb3BlcnR5Pg0KIA0KIAkJCSAg
ICAgIDxjaGlsZD4NCi0JCQkJPHdpZGdldCBjbGFzcz0iR3RrVGV4dFZpZXciIGlkPSJ0ZXh0X2Vk
aXRvciI+DQorCQkJCTx3aWRnZXQgY2xhc3M9Ikd0a1Njcm9sbGVkV2luZG93IiBpZD0ic2Nyb2xs
ZWR3aW5kb3cyIj4NCiAJCQkJICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVy
dHk+DQogCQkJCSAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+DQot
CQkJCSAgPHByb3BlcnR5IG5hbWU9ImVkaXRhYmxlIj5UcnVlPC9wcm9wZXJ0eT4NCi0JCQkJICA8
cHJvcGVydHkgbmFtZT0ianVzdGlmaWNhdGlvbiI+R1RLX0pVU1RJRllfTEVGVDwvcHJvcGVydHk+
DQotCQkJCSAgPHByb3BlcnR5IG5hbWU9IndyYXBfbW9kZSI+R1RLX1dSQVBfTk9ORTwvcHJvcGVy
dHk+DQotCQkJCSAgPHByb3BlcnR5IG5hbWU9ImN1cnNvcl92aXNpYmxlIj5UcnVlPC9wcm9wZXJ0
eT4NCi0JCQkJICA8cHJvcGVydHkgbmFtZT0icGl4ZWxzX2Fib3ZlX2xpbmVzIj4wPC9wcm9wZXJ0
eT4NCi0JCQkJICA8cHJvcGVydHkgbmFtZT0icGl4ZWxzX2JlbG93X2xpbmVzIj4wPC9wcm9wZXJ0
eT4NCi0JCQkJICA8cHJvcGVydHkgbmFtZT0icGl4ZWxzX2luc2lkZV93cmFwIj4wPC9wcm9wZXJ0
eT4NCi0JCQkJICA8cHJvcGVydHkgbmFtZT0ibGVmdF9tYXJnaW4iPjA8L3Byb3BlcnR5Pg0KLQkJ
CQkgIDxwcm9wZXJ0eSBuYW1lPSJyaWdodF9tYXJnaW4iPjA8L3Byb3BlcnR5Pg0KLQkJCQkgIDxw
cm9wZXJ0eSBuYW1lPSJpbmRlbnQiPjA8L3Byb3BlcnR5Pg0KLQkJCQkgIDxwcm9wZXJ0eSBuYW1l
PSJ0ZXh0IiB0cmFuc2xhdGFibGU9InllcyI+PC9wcm9wZXJ0eT4NCisJCQkJICA8cHJvcGVydHkg
bmFtZT0iaHNjcm9sbGJhcl9wb2xpY3kiPkdUS19QT0xJQ1lfQUxXQVlTPC9wcm9wZXJ0eT4NCisJ
CQkJICA8cHJvcGVydHkgbmFtZT0idnNjcm9sbGJhcl9wb2xpY3kiPkdUS19QT0xJQ1lfQUxXQVlT
PC9wcm9wZXJ0eT4NCisJCQkJICA8cHJvcGVydHkgbmFtZT0ic2hhZG93X3R5cGUiPkdUS19TSEFE
T1dfTk9ORTwvcHJvcGVydHk+DQorCQkJCSAgPHByb3BlcnR5IG5hbWU9IndpbmRvd19wbGFjZW1l
bnQiPkdUS19DT1JORVJfVE9QX0xFRlQ8L3Byb3BlcnR5Pg0KKw0KKwkJCQkgIDxjaGlsZD4NCisJ
CQkJICAgIDx3aWRnZXQgY2xhc3M9Ikd0a1RleHRWaWV3IiBpZD0idGV4dF9lZGl0b3IiPg0KKwkJ
CQkgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+DQorCQkJCSAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5Pg0KKwkJCQkgICAg
ICA8cHJvcGVydHkgbmFtZT0iZWRpdGFibGUiPlRydWU8L3Byb3BlcnR5Pg0KKwkJCQkgICAgICA8
cHJvcGVydHkgbmFtZT0ianVzdGlmaWNhdGlvbiI+R1RLX0pVU1RJRllfTEVGVDwvcHJvcGVydHk+
DQorCQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ3cmFwX21vZGUiPkdUS19XUkFQX05PTkU8L3By
b3BlcnR5Pg0KKwkJCQkgICAgICA8cHJvcGVydHkgbmFtZT0iY3Vyc29yX3Zpc2libGUiPlRydWU8
L3Byb3BlcnR5Pg0KKwkJCQkgICAgICA8cHJvcGVydHkgbmFtZT0icGl4ZWxzX2Fib3ZlX2xpbmVz
Ij4wPC9wcm9wZXJ0eT4NCisJCQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBpeGVsc19iZWxvd19s
aW5lcyI+MDwvcHJvcGVydHk+DQorCQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwaXhlbHNfaW5z
aWRlX3dyYXAiPjA8L3Byb3BlcnR5Pg0KKwkJCQkgICAgICA8cHJvcGVydHkgbmFtZT0ibGVmdF9t
YXJnaW4iPjA8L3Byb3BlcnR5Pg0KKwkJCQkgICAgICA8cHJvcGVydHkgbmFtZT0icmlnaHRfbWFy
Z2luIj4wPC9wcm9wZXJ0eT4NCisJCQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImluZGVudCI+MDwv
cHJvcGVydHk+DQorCQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB0cmFuc2xhdGFibGU9
InllcyI+PC9wcm9wZXJ0eT4NCisJCQkJICAgIDwvd2lkZ2V0Pg0KKwkJCQkgIDwvY2hpbGQ+DQor
CQkJCTwvd2lkZ2V0Pg0KKwkJCQk8cGFja2luZz4NCisJCQkJICA8cHJvcGVydHkgbmFtZT0icGFk
ZGluZyI+MDwvcHJvcGVydHk+DQorCQkJCSAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTwv
cHJvcGVydHk+DQorCQkJCSAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5Pg0K
KwkJCQk8L3BhY2tpbmc+DQorCQkJICAgICAgPC9jaGlsZD4NCisNCisJCQkgICAgICA8Y2hpbGQ+
DQorCQkJCTx3aWRnZXQgY2xhc3M9Ikd0a0ZyYW1lIiBpZD0iaHRtbF9wcmV2aWV3X2ZyYW1lIj4N
CisJCQkJICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+DQorCQkJCSAg
PHByb3BlcnR5IG5hbWU9ImxhYmVsX3hhbGlnbiI+MDwvcHJvcGVydHk+DQorCQkJCSAgPHByb3Bl
cnR5IG5hbWU9ImxhYmVsX3lhbGlnbiI+MC41PC9wcm9wZXJ0eT4NCisJCQkJICA8cHJvcGVydHkg
bmFtZT0ic2hhZG93X3R5cGUiPkdUS19TSEFET1dfRVRDSEVEX0lOPC9wcm9wZXJ0eT4NCisNCisJ
CQkJICA8Y2hpbGQ+DQorCQkJCSAgICA8d2lkZ2V0IGNsYXNzPSJHdGtTY3JvbGxlZFdpbmRvdyIg
aWQ9Imh0bWxfcHJldmlld19jb250YWluZXIiPg0KKwkJCQkgICAgICA8cHJvcGVydHkgbmFtZT0i
dmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+DQorCQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5f
Zm9jdXMiPlRydWU8L3Byb3BlcnR5Pg0KKwkJCQkgICAgICA8cHJvcGVydHkgbmFtZT0iaHNjcm9s
bGJhcl9wb2xpY3kiPkdUS19QT0xJQ1lfQUxXQVlTPC9wcm9wZXJ0eT4NCisJCQkJICAgICAgPHBy
b3BlcnR5IG5hbWU9InZzY3JvbGxiYXJfcG9saWN5Ij5HVEtfUE9MSUNZX0FMV0FZUzwvcHJvcGVy
dHk+DQorCQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3dfdHlwZSI+R1RLX1NIQURPV19O
T05FPC9wcm9wZXJ0eT4NCisJCQkJICAgICAgPHByb3BlcnR5IG5hbWU9IndpbmRvd19wbGFjZW1l
bnQiPkdUS19DT1JORVJfVE9QX0xFRlQ8L3Byb3BlcnR5Pg0KKw0KKwkJCQkgICAgICA8Y2hpbGQ+
DQorCQkJCQk8cGxhY2Vob2xkZXIvPg0KKwkJCQkgICAgICA8L2NoaWxkPg0KKwkJCQkgICAgPC93
aWRnZXQ+DQorCQkJCSAgPC9jaGlsZD4NCisNCisJCQkJICA8Y2hpbGQ+DQorCQkJCSAgICA8d2lk
Z2V0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9ImxhYmVsMTgiPg0KKwkJCQkgICAgICA8cHJvcGVydHkg
bmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+DQorCQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1l
PSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlByZXZpZXc8L3Byb3BlcnR5Pg0KKwkJCQkgICAg
ICA8cHJvcGVydHkgbmFtZT0idXNlX3VuZGVybGluZSI+RmFsc2U8L3Byb3BlcnR5Pg0KKwkJCQkg
ICAgICA8cHJvcGVydHkgbmFtZT0idXNlX21hcmt1cCI+RmFsc2U8L3Byb3BlcnR5Pg0KKwkJCQkg
ICAgICA8cHJvcGVydHkgbmFtZT0ianVzdGlmeSI+R1RLX0pVU1RJRllfTEVGVDwvcHJvcGVydHk+
DQorCQkJCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ3cmFwIj5GYWxzZTwvcHJvcGVydHk+DQorCQkJ
CSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZWxlY3RhYmxlIj5GYWxzZTwvcHJvcGVydHk+DQorCQkJ
CSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjAuNTwvcHJvcGVydHk+DQorCQkJCSAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJ5YWxpZ24iPjAuNTwvcHJvcGVydHk+DQorCQkJCSAgICAgIDxwcm9w
ZXJ0eSBuYW1lPSJ4cGFkIj4wPC9wcm9wZXJ0eT4NCisJCQkJICAgICAgPHByb3BlcnR5IG5hbWU9
InlwYWQiPjA8L3Byb3BlcnR5Pg0KKwkJCQkgICAgPC93aWRnZXQ+DQorCQkJCSAgICA8cGFja2lu
Zz4NCisJCQkJICAgICAgPHByb3BlcnR5IG5hbWU9InR5cGUiPmxhYmVsX2l0ZW08L3Byb3BlcnR5
Pg0KKwkJCQkgICAgPC9wYWNraW5nPg0KKwkJCQkgIDwvY2hpbGQ+DQogCQkJCTwvd2lkZ2V0Pg0K
KwkJCQk8cGFja2luZz4NCisJCQkJICA8cHJvcGVydHkgbmFtZT0icGFkZGluZyI+MDwvcHJvcGVy
dHk+DQorCQkJCSAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+DQorCQkJ
CSAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5Pg0KKwkJCQk8L3BhY2tpbmc+
DQogCQkJICAgICAgPC9jaGlsZD4NCiAJCQkgICAgPC93aWRnZXQ+DQogCQkJICAgIDxwYWNraW5n
Pg0KSW5kZXg6IGVjbWEtcHJvdmlkZXIuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3B1
YmxpYy9tb25vZG9jL2Jyb3dzZXIvZWNtYS1wcm92aWRlci5jcyx2DQpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNjcNCmRpZmYgLXUgLXUgLXIxLjY3IGVjbWEtcHJvdmlkZXIuY3MNCi0tLSBlY21hLXBy
b3ZpZGVyLmNzCTUgU2VwIDIwMDMgMDA6NDc6MzAgLTAwMDAJMS42Nw0KKysrIGVjbWEtcHJvdmlk
ZXIuY3MJNyBTZXAgMjAwMyAxNTo0MjoxMiAtMDAwMA0KQEAgLTEwLDcgKzEwLDYgQEANCiAvLw0K
IC8vIFRPRE86DQogLy8gICBTaG91bGQgY2x1c3RlciB0b2dldGhlciBjb25zdHJ1Y3RvcnMNCi0v
LyAgIFNob3VsZCBjbHVzdGVyIHRvZ2V0aGVyIG1ldGhvZHMgd2l0aCB0aGUgc2FtZSBuYW1lIChv
dmVybG9hZHMpDQogLy8NCiAvLyBFYXN5Og0KIC8vICAgU2hvdWxkIHJlbmRlciBhdHRyaWJ1dGVz
IG9uIHRoZSBzaWduYXR1cmUuDQpAQCAtODYsOSArODUsMTIgQEANCiAJCWlmICghdHlwZS5TdGFy
dHNXaXRoICgiU3lzdGVtLiIpKQ0KIAkJCXJldHVybiB0eXBlOw0KIA0KLQkJaWYgKHR5cGUuRW5k
c1dpdGggKCIqIikpIHJldHVybiBDb252ZXJ0Q1RTTmFtZSh0eXBlLlN1YnN0cmluZygwLCB0eXBl
Lkxlbmd0aCAtIDEpKSArICIqIjsNCi0JCWlmICh0eXBlLkVuZHNXaXRoICgiJiIpKSByZXR1cm4g
Q29udmVydENUU05hbWUodHlwZS5TdWJzdHJpbmcoMCwgdHlwZS5MZW5ndGggLSAxKSkgKyAiJiI7
DQotCQlpZiAodHlwZS5FbmRzV2l0aCAoIltdIikpIHJldHVybiBDb252ZXJ0Q1RTTmFtZSh0eXBl
LlN1YnN0cmluZygwLCB0eXBlLkxlbmd0aCAtIDIpKSArICJbXSI7DQorCQlpZiAodHlwZS5FbmRz
V2l0aCAoIioiKSkNCisJCQlyZXR1cm4gQ29udmVydENUU05hbWUodHlwZS5TdWJzdHJpbmcoMCwg
dHlwZS5MZW5ndGggLSAxKSkgKyAiKiI7DQorCQlpZiAodHlwZS5FbmRzV2l0aCAoIiYiKSkNCisJ
CQlyZXR1cm4gQ29udmVydENUU05hbWUodHlwZS5TdWJzdHJpbmcoMCwgdHlwZS5MZW5ndGggLSAx
KSkgKyAiJiI7DQorCQlpZiAodHlwZS5FbmRzV2l0aCAoIltdIikpDQorCQkJcmV0dXJuIENvbnZl
cnRDVFNOYW1lKHR5cGUuU3Vic3RyaW5nKDAsIHR5cGUuTGVuZ3RoIC0gMikpICsgIltdIjsNCiAN
CiAJCXN3aXRjaCAodHlwZSkgew0KIAkJY2FzZSAiU3lzdGVtLkJ5dGUiOiByZXR1cm4gImJ5dGUi
Ow0KQEAgLTExMiw3ICsxMTQsOCBAQA0KIAkJY2FzZSAiU3lzdGVtLlZvaWQiOiAgcmV0dXJuICJ2
b2lkIjsNCiAJCX0NCiANCi0JCWlmICh0eXBlLkxhc3RJbmRleE9mKCIuIikgPT0gNikgcmV0dXJu
IHR5cGUuU3Vic3RyaW5nKDcpOw0KKwkJaWYgKHR5cGUuTGFzdEluZGV4T2YoIi4iKSA9PSA2KQ0K
KwkJCXJldHVybiB0eXBlLlN1YnN0cmluZyg3KTsNCiAJCQ0KIAkJcmV0dXJuIHR5cGU7DQogCX0N
CkBAIC00NzksNyArNDgyLDggQEANCiANCiAJc3RyaW5nIFJlbmRlck1lbWJlckxvb2t1cCAoc3Ry
aW5nIHR5cGVuYW1lLCBzdHJpbmcgbWVtYmVyLCByZWYgTm9kZSB0eXBlX25vZGUpDQogCXsNCi0J
CWlmICh0eXBlX25vZGUuTm9kZXMgPT0gbnVsbCkgcmV0dXJuIG51bGw7DQorCQlpZiAodHlwZV9u
b2RlLk5vZGVzID09IG51bGwpDQorCQkJcmV0dXJuIG51bGw7DQogDQogCQlzdHJpbmcgbGFzdHVy
bCA9ICIiOw0KIAkJWG1sTm9kZSBkb2MgPSBudWxsOw0KQEAgLTY1NSw3ICs2NTksOCBAQA0KIAkJ
CQkJbWF0Y2hfbm9kZSA9IHR5cGVfbm9kZTsNCiAJCQkJCWlmICh0eXBlID09IGNuYW1lKXsNCiAJ
CQkJCQlzdHJpbmcgcmV0ID0gUmVuZGVyTWVtYmVyTG9va3VwICh0eXBlLCBtZW1iZXIsIHJlZiBt
YXRjaF9ub2RlKTsNCi0JCQkJCQlpZiAocmV0ID09IG51bGwpIHJldHVybiBHZXRUZXh0RnJvbVVy
bCAodHlwZV9ub2RlLlVSTCk7DQorCQkJCQkJaWYgKHJldCA9PSBudWxsKQ0KKwkJCQkJCQlyZXR1
cm4gR2V0VGV4dEZyb21VcmwgKHR5cGVfbm9kZS5VUkwpOw0KIAkJCQkJCXJldHVybiByZXQ7DQog
DQogCQkJCQl9IGVsc2UgaWYgKHR5cGUgW3BdID09ICcvJyl7DQpAQCAtNzkwLDcgKzc5NSw3IEBA
DQogDQogCXN0YXRpYyBYc2xUcmFuc2Zvcm0gZWNtYV90cmFuc2Zvcm07DQogDQotCXN0YXRpYyBz
dHJpbmcgSHRtbGl6ZSAoSVhQYXRoTmF2aWdhYmxlIGVjbWFfeG1sKQ0KKwlwdWJsaWMgc3RhdGlj
IHN0cmluZyBIdG1saXplIChJWFBhdGhOYXZpZ2FibGUgZWNtYV94bWwpDQogCXsNCiAJCXJldHVy
biBIdG1saXplKGVjbWFfeG1sLCBudWxsKTsNCiAJfQ0KQEAgLTgwNiw3ICs4MTEsOCBAQA0KIAkJ
CWVjbWFfdHJhbnNmb3JtLkxvYWQgKHhtbF9yZWFkZXIpOw0KIAkJfQ0KIAkJDQotCQlpZiAoZWNt
YV94bWwgPT0gbnVsbCkgcmV0dXJuICIiOw0KKwkJaWYgKGVjbWFfeG1sID09IG51bGwpDQorCQkJ
cmV0dXJuICIiOw0KIA0KIAkJU3RyaW5nV3JpdGVyIG91dHB1dCA9IG5ldyBTdHJpbmdXcml0ZXIg
KCk7DQogCQllY21hX3RyYW5zZm9ybS5UcmFuc2Zvcm0gKGVjbWFfeG1sLCBhcmdzLCBvdXRwdXQp
Ow0KQEAgLTgyNCw4ICs4MzAsMTAgQEANCiAJCS8vIFVzZWQgYnkgc3R5bGVzaGVldCB0byBuaWNl
bHkgcmVmb3JtYXQgdGhlIDxzZWUgY3JlZj0+IHRhZ3MuIA0KIAkJcHVibGljIHN0cmluZyBNYWtl
TmljZVNpZ25hdHVyZShzdHJpbmcgc2lnKQ0KIAkJew0KLQkJCWlmIChzaWcuTGVuZ3RoIDwgMykg
cmV0dXJuIHNpZzsNCi0JCQlpZiAoc2lnWzFdICE9ICc6JykgcmV0dXJuIHNpZzsNCisJCQlpZiAo
c2lnLkxlbmd0aCA8IDMpDQorCQkJCXJldHVybiBzaWc7DQorCQkJaWYgKHNpZ1sxXSAhPSAnOicp
DQorCQkJCXJldHVybiBzaWc7DQogDQogCQkJY2hhciBzID0gc2lnWzBdOw0KIAkJCXNpZyA9IHNp
Zy5TdWJzdHJpbmcoMik7DQpAQCAtODg5LDE0ICs4OTcsMTggQEANCiANCiAJCQkJVHlwZSB0ID0g
YXNzZW1ibHkuR2V0VHlwZSh0eXBlbmFtZSwgZmFsc2UpOw0KIAkJCQlpZiAodCA9PSBudWxsKSB7
DQotCQkJCQlpZiAoc3RybG9uZykgcmV0dXJuIHR5cGVuYW1lICsgIiBoYXMgbm90IGJlZW4gaW1w
bGVtZW50ZWQuIjsNCi0JCQkJCWVsc2UgcmV0dXJuICJOb3QgaW1wbGVtZW50ZWQuIjsNCisJCQkJ
CWlmIChzdHJsb25nKQ0KKwkJCQkJCXJldHVybiB0eXBlbmFtZSArICIgaGFzIG5vdCBiZWVuIGlt
cGxlbWVudGVkLiI7DQorCQkJCQllbHNlDQorCQkJCQkJcmV0dXJuICJOb3QgaW1wbGVtZW50ZWQu
IjsNCiAJCQkJfQ0KIA0KIAkJCQlNZW1iZXJJbmZvW10gbWlzID0gdC5HZXRNZW1iZXIobWVtYmVy
bmFtZSwgQkYuU3RhdGljIHwgQkYuSW5zdGFuY2UgfCBCRi5QdWJsaWMgfCBCRi5Ob25QdWJsaWMp
Ow0KIA0KLQkJCQlpZiAobWlzLkxlbmd0aCA9PSAwKSByZXR1cm4gIlRoaXMgbWVtYmVyIGhhcyBu
b3QgYmVlbiBpbXBsZW1lbnRlZC4iOw0KLQkJCQlpZiAobWlzLkxlbmd0aCA9PSAxKSByZXR1cm4g
TW9ub0ltcEluZm8obWlzWzBdLCAibWVtYmVyIiwgc3RybG9uZyk7DQorCQkJCWlmIChtaXMuTGVu
Z3RoID09IDApDQorCQkJCQlyZXR1cm4gIlRoaXMgbWVtYmVyIGhhcyBub3QgYmVlbiBpbXBsZW1l
bnRlZC4iOw0KKwkJCQlpZiAobWlzLkxlbmd0aCA9PSAxKQ0KKwkJCQkJcmV0dXJuIE1vbm9JbXBJ
bmZvKG1pc1swXSwgIm1lbWJlciIsIHN0cmxvbmcpOw0KIA0KIAkJCQkvLyBTY2FuIGZvciB0aGUg
YXBwcm9wcmlhdGUgbWVtYmVyDQogCQkJCWZvcmVhY2ggKE1lbWJlckluZm8gbWkgaW4gbWlzKSB7
DQpAQCAtOTQ5LDE4ICs5NjEsMjMgQEANCiAJCXB1YmxpYyBzdHJpbmcgTW9ub0ltcEluZm8oc3Ry
aW5nIGFzc2VtYmx5bmFtZSwgc3RyaW5nIHR5cGVuYW1lLCBib29sIHN0cmxvbmcpDQogCQl7DQog
CQkJdHJ5IHsNCi0JCQkJaWYgKGFzc2VtYmx5bmFtZSA9PSAiIikgcmV0dXJuICIiOw0KKwkJCQlp
ZiAoYXNzZW1ibHluYW1lID09ICIiKQ0KKwkJCQkJcmV0dXJuICIiOw0KIA0KIAkJCQlBc3NlbWJs
eSBhc3NlbWJseSA9IEFzc2VtYmx5LkxvYWQoYXNzZW1ibHluYW1lKTsNCiAJCQkJaWYgKGFzc2Vt
Ymx5ID09IG51bGwpIHsNCi0JCQkJCWlmIChzdHJsb25nKSByZXR1cm4gIlRoZSBhc3NlbWJseSAi
ICsgYXNzZW1ibHluYW1lICsgIiBpcyBub3QgYXZhaWxhYmxlIHRvIE1vbm9Eb2MuIjsNCi0JCQkJ
CWVsc2UgcmV0dXJuICIiOw0KKwkJCQkJaWYgKHN0cmxvbmcpDQorCQkJCQkJcmV0dXJuICJUaGUg
YXNzZW1ibHkgIiArIGFzc2VtYmx5bmFtZSArICIgaXMgbm90IGF2YWlsYWJsZSB0byBNb25vRG9j
LiI7DQorCQkJCQllbHNlDQorCQkJCQkJcmV0dXJuICIiOw0KIAkJCQl9DQogDQogCQkJCVR5cGUg
dCA9IGFzc2VtYmx5LkdldFR5cGUodHlwZW5hbWUsIGZhbHNlKTsNCiAJCQkJaWYgKHQgPT0gbnVs
bCkgew0KLQkJCQkJaWYgKHN0cmxvbmcpIHJldHVybiB0eXBlbmFtZSArICIgaGFzIG5vdCBiZWVu
IGltcGxlbWVudGVkLiI7DQotCQkJCQllbHNlIHJldHVybiAiTm90IGltcGxlbWVudGVkLiI7DQor
CQkJCQlpZiAoc3RybG9uZykNCisJCQkJCQlyZXR1cm4gdHlwZW5hbWUgKyAiIGhhcyBub3QgYmVl
biBpbXBsZW1lbnRlZC4iOw0KKwkJCQkJZWxzZQ0KKwkJCQkJCXJldHVybiAiTm90IGltcGxlbWVu
dGVkLiI7DQogCQkJCX0NCiANCiAJCQkJc3RyaW5nIHMgPSBNb25vSW1wSW5mbyh0LCAidHlwZSIs
IHN0cmxvbmcpOw0KQEAgLTk4OSwxMSArMTAwNiwxNCBAQA0KIAkJcHVibGljIHN0cmluZyBHZXRJ
bmhlcml0YW5jZShzdHJpbmcgYXNzZW1ibHluYW1lLCBzdHJpbmcgdHlwZW5hbWUpDQogCQl7DQog
CQkJdHJ5IHsNCi0JCQkJaWYgKGFzc2VtYmx5bmFtZSA9PSAiIikgcmV0dXJuICIiOw0KKwkJCQlp
ZiAoYXNzZW1ibHluYW1lID09ICIiKQ0KKwkJCQkJcmV0dXJuICIiOw0KIAkJCQlBc3NlbWJseSBh
c3NlbWJseSA9IEFzc2VtYmx5LkxvYWQoYXNzZW1ibHluYW1lKTsNCi0JCQkJaWYgKGFzc2VtYmx5
ID09IG51bGwpIHJldHVybiAiIjsNCisJCQkJaWYgKGFzc2VtYmx5ID09IG51bGwpDQorCQkJCQly
ZXR1cm4gIiI7DQogCQkJCVR5cGUgdCA9IGFzc2VtYmx5LkdldFR5cGUodHlwZW5hbWUsIGZhbHNl
KTsNCi0JCQkJaWYgKHQgPT0gbnVsbCkgcmV0dXJuICIiOw0KKwkJCQlpZiAodCA9PSBudWxsKQ0K
KwkJCQkJcmV0dXJuICIiOw0KIAkJCQkNCiAJCQkJU3RyaW5nQnVpbGRlciBiID0gbmV3IFN0cmlu
Z0J1aWxkZXIoKTsNCiAJCQkJDQo=

--=-ML3kCGCDyz92kAtJd0Gx--