[MonoDevelop] Double click references patch

Jacob Ilsø Christensen Jacob Ilsø Christensen <jacobilsoe@gmail.com>
Thu May 12 20:53:25 EDT 2005


------=_Part_697_6188064.1115927605085
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi.

The attached patch lets you double click references to add or remove
them in the Edit References dialog.

Best regards,
Jacob

------=_Part_697_6188064.1115927605085
Content-Type: text/x-patch; name="DoubleClickReferences.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="DoubleClickReferences.patch"

SW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0RpYWxvZ3MvUmVmZXJlbmNlRGlh
bG9nL1Byb2plY3RSZWZlcmVuY2VQYW5lbC5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25v
RGV2ZWxvcC5CYXNlL0d1aS9EaWFsb2dzL1JlZmVyZW5jZURpYWxvZy9Qcm9qZWN0UmVmZXJlbmNl
UGFuZWwuY3MJKHJldmlzaW9uIDI1MjcpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1
aS9EaWFsb2dzL1JlZmVyZW5jZURpYWxvZy9Qcm9qZWN0UmVmZXJlbmNlUGFuZWwuY3MJKHdvcmtp
bmcgY29weSkKQEAgLTE2LDk4ICsxNiw2MyBAQAogdXNpbmcgR3RrOwogCiBuYW1lc3BhY2UgTW9u
b0RldmVsb3AuR3VpLkRpYWxvZ3MgeworICAgIAorICAgIHB1YmxpYyBjbGFzcyBQcm9qZWN0UmVm
ZXJlbmNlUGFuZWwgOiBWQm94LCBJUmVmZXJlbmNlUGFuZWwgeworCVNlbGVjdFJlZmVyZW5jZURp
YWxvZyBzZWxlY3REaWFsb2c7CiAJCi0JcHVibGljIGNsYXNzIFByb2plY3RSZWZlcmVuY2VQYW5l
bCA6IFZCb3gsIElSZWZlcmVuY2VQYW5lbCB7Ci0JCVNlbGVjdFJlZmVyZW5jZURpYWxvZyBzZWxl
Y3REaWFsb2c7Ci0KLQkJVHJlZVN0b3JlIHN0b3JlOwotCQlUcmVlVmlldyAgdHJlZVZpZXc7Ci0J
CQotCQlwdWJsaWMgUHJvamVjdFJlZmVyZW5jZVBhbmVsIChTZWxlY3RSZWZlcmVuY2VEaWFsb2cg
c2VsZWN0RGlhbG9nKSA6IGJhc2UgKGZhbHNlLCA2KQotCQl7Ci0JCQl0aGlzLnNlbGVjdERpYWxv
ZyA9IHNlbGVjdERpYWxvZzsKLQkJCQotCQkJc3RvcmUgPSBuZXcgVHJlZVN0b3JlICh0eXBlb2Yg
KHN0cmluZyksIHR5cGVvZiAoc3RyaW5nKSwgdHlwZW9mKFByb2plY3QpKTsKLQkJCXRyZWVWaWV3
ID0gbmV3IFRyZWVWaWV3IChzdG9yZSk7Ci0JCQl0cmVlVmlldy5BcHBlbmRDb2x1bW4gKEdldHRl
eHRDYXRhbG9nLkdldFN0cmluZyAoIlByb2plY3QgTmFtZSIpLCBuZXcgQ2VsbFJlbmRlcmVyVGV4
dCAoKSwgInRleHQiLCAwKTsKLQkJCXRyZWVWaWV3LkFwcGVuZENvbHVtbiAoR2V0dGV4dENhdGFs
b2cuR2V0U3RyaW5nICgiUHJvamVjdCBEaXJlY3RvcnkiKSwgbmV3IENlbGxSZW5kZXJlclRleHQg
KCksICJ0ZXh0IiwgMSk7Ci0JCQkKLQkJCQotCQkJUG9wdWxhdGVMaXN0VmlldyAoKTsKLQkJCVNj
cm9sbGVkV2luZG93IHNjID0gbmV3IFNjcm9sbGVkV2luZG93ICgpOwotCQkJc2MuQWRkV2l0aFZp
ZXdwb3J0ICh0cmVlVmlldyk7Ci0JCQlQYWNrU3RhcnQgKHNjLCB0cnVlLCB0cnVlLCAwKTsKLQkJ
CQotCQkJQnV0dG9uIGIgPSBuZXcgQnV0dG9uIChHdGsuU3RvY2suQWRkKTsKLQkJCWIuQ2xpY2tl
ZCArPSBuZXcgRXZlbnRIYW5kbGVyIChBZGRSZWZlcmVuY2UpOwotCQkJCi0JCQlQYWNrRW5kIChi
LCBmYWxzZSwgZmFsc2UsIDApOwotCQkJU2hvd0FsbCAoKTsKLQkJfQotCQkKLQkJdm9pZCBBZGRS
ZWZlcmVuY2UgKFRyZWVNb2RlbCBtb2RlbCwgVHJlZVBhdGggcGF0aCwgVHJlZUl0ZXIgaXRlcikK
LQkJewotCQkJUHJvamVjdCBwcm9qZWN0ID0gKFByb2plY3QpIG1vZGVsLkdldFZhbHVlIChpdGVy
LCAyKTsKLQkJCXNlbGVjdERpYWxvZy5BZGRSZWZlcmVuY2UoUmVmZXJlbmNlVHlwZS5Qcm9qZWN0
LAotCQkJCQkJICBwcm9qZWN0Lk5hbWUsCi0JCQkJCQkgIHByb2plY3QuR2V0T3V0cHV0RmlsZU5h
bWUoKSk7Ci0JCX0KLQkJCi0JCXB1YmxpYyB2b2lkIEFkZFJlZmVyZW5jZShvYmplY3Qgc2VuZGVy
LCBFdmVudEFyZ3MgZSkKLQkJewotCQkJdHJlZVZpZXcuU2VsZWN0aW9uLlNlbGVjdGVkRm9yZWFj
aCAobmV3IFRyZWVTZWxlY3Rpb25Gb3JlYWNoRnVuYyAoQWRkUmVmZXJlbmNlKSk7Ci0JCX0JCi0J
CQotCQl2b2lkIFBvcHVsYXRlTGlzdFZpZXcgKCkKLQkJewotCQkJQ29tYmluZSBvcGVuQ29tYmlu
ZSA9IFJ1bnRpbWUuUHJvamVjdFNlcnZpY2UuQ3VycmVudE9wZW5Db21iaW5lOwotCQkJCi0JCQlp
ZiAob3BlbkNvbWJpbmUgPT0gbnVsbCkgewotCQkJCXJldHVybjsKLQkJCX0KLQkJCQotCQkJZm9y
ZWFjaCAoUHJvamVjdCBwcm9qZWN0RW50cnkgaW4gb3BlbkNvbWJpbmUuR2V0QWxsUHJvamVjdHMo
KSkgewotCQkJCXN0b3JlLkFwcGVuZFZhbHVlcyAocHJvamVjdEVudHJ5Lk5hbWUsIHByb2plY3RF
bnRyeS5CYXNlRGlyZWN0b3J5LCBwcm9qZWN0RW50cnkpOwotCQkJfQotCQl9CisJVHJlZVN0b3Jl
IHN0b3JlOworCVRyZWVWaWV3ICB0cmVlVmlldzsKKwkKKwlwdWJsaWMgUHJvamVjdFJlZmVyZW5j
ZVBhbmVsIChTZWxlY3RSZWZlcmVuY2VEaWFsb2cgc2VsZWN0RGlhbG9nKSA6IGJhc2UgKGZhbHNl
LCA2KQorCXsKKwkgICAgdGhpcy5zZWxlY3REaWFsb2cgPSBzZWxlY3REaWFsb2c7CisJICAgIAor
CSAgICBzdG9yZSA9IG5ldyBUcmVlU3RvcmUgKHR5cGVvZiAoc3RyaW5nKSwgdHlwZW9mIChzdHJp
bmcpLCB0eXBlb2YoUHJvamVjdCkpOworCSAgICB0cmVlVmlldyA9IG5ldyBUcmVlVmlldyAoc3Rv
cmUpOworCSAgICB0cmVlVmlldy5BcHBlbmRDb2x1bW4gKEdldHRleHRDYXRhbG9nLkdldFN0cmlu
ZyAoIlByb2plY3QgTmFtZSIpLCBuZXcgQ2VsbFJlbmRlcmVyVGV4dCAoKSwgInRleHQiLCAwKTsK
KwkgICAgdHJlZVZpZXcuQXBwZW5kQ29sdW1uIChHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJQ
cm9qZWN0IERpcmVjdG9yeSIpLCBuZXcgQ2VsbFJlbmRlcmVyVGV4dCAoKSwgInRleHQiLCAxKTsJ
ICAgIAorCSAgICB0cmVlVmlldy5Sb3dBY3RpdmF0ZWQgKz0gbmV3IFJvd0FjdGl2YXRlZEhhbmRs
ZXIoUm93RG91YmxlQ2xpY2tlZCk7CSAgICAKKwkgICAgCisJICAgIFBvcHVsYXRlTGlzdFZpZXcg
KCk7CisJICAgIFNjcm9sbGVkV2luZG93IHNjID0gbmV3IFNjcm9sbGVkV2luZG93ICgpOworCSAg
ICBzYy5BZGRXaXRoVmlld3BvcnQgKHRyZWVWaWV3KTsKKwkgICAgUGFja1N0YXJ0IChzYywgdHJ1
ZSwgdHJ1ZSwgMCk7CisJICAgIAorCSAgICBCdXR0b24gYiA9IG5ldyBCdXR0b24gKEd0ay5TdG9j
ay5BZGQpOworCSAgICBiLkNsaWNrZWQgKz0gbmV3IEV2ZW50SGFuZGxlcihBZGRSZWZlcmVuY2Up
OworCSAgICAKKwkgICAgUGFja0VuZCAoYiwgZmFsc2UsIGZhbHNlLCAwKTsKKwkgICAgU2hvd0Fs
bCAoKTsKIAl9CiAJCi0vKglwdWJsaWMgY2xhc3MgUHJvamVjdFJlZmVyZW5jZVBhbmVsIDogTGlz
dFZpZXcvLywgSVJlZmVyZW5jZVBhbmVsCisJdm9pZCBSb3dEb3VibGVDbGlja2VkKG9iamVjdCBv
LCBSb3dBY3RpdmF0ZWRBcmdzIGFyZ3MpCiAJewotCQlTZWxlY3RSZWZlcmVuY2VEaWFsb2cgc2Vs
ZWN0RGlhbG9nOwotCQkKLQkJcHVibGljIFByb2plY3RSZWZlcmVuY2VQYW5lbChTZWxlY3RSZWZl
cmVuY2VEaWFsb2cgc2VsZWN0RGlhbG9nKQotCQl7Ci0JCQl0aGlzLnNlbGVjdERpYWxvZyA9IHNl
bGVjdERpYWxvZzsKLQkJCVJlc291cmNlU2VydmljZSByZXNvdXJjZVNlcnZpY2UgPSAoUmVzb3Vy
Y2VTZXJ2aWNlKVNlcnZpY2VNYW5hZ2VyLlNlcnZpY2VzLkdldFNlcnZpY2UodHlwZW9mKElSZXNv
dXJjZVNlcnZpY2UpKTsKLQkJCUNvbHVtbkhlYWRlciBuYW1lSGVhZGVyID0gbmV3IENvbHVtbkhl
YWRlcigpOwotCQkJbmFtZUhlYWRlci5UZXh0ICA9IHJlc291cmNlU2VydmljZS5HZXRTdHJpbmco
IkRpYWxvZy5TZWxlY3RSZWZlcmVuY2VEaWFsb2cuUHJvamVjdFJlZmVyZW5jZVBhbmVsLk5hbWVI
ZWFkZXIiKTsKLQkJCW5hbWVIZWFkZXIuV2lkdGggPSAxNjA7Ci0JCQlDb2x1bW5zLkFkZChuYW1l
SGVhZGVyKTsKLQkJCQotCQkJQ29sdW1uSGVhZGVyIGRpcmVjdG9yeUhlYWRlciA9IG5ldyBDb2x1
bW5IZWFkZXIoKTsKLQkJCWRpcmVjdG9yeUhlYWRlci5UZXh0ICA9IHJlc291cmNlU2VydmljZS5H
ZXRTdHJpbmcoIkRpYWxvZy5TZWxlY3RSZWZlcmVuY2VEaWFsb2cuUHJvamVjdFJlZmVyZW5jZVBh
bmVsLkRpcmVjdG9yeUhlYWRlciIpOwotCQkJZGlyZWN0b3J5SGVhZGVyLldpZHRoID0gNzA7Ci0J
CQlDb2x1bW5zLkFkZChkaXJlY3RvcnlIZWFkZXIpOwotCQkJCi0JCQlWaWV3ID0gVmlldy5EZXRh
aWxzOwotCQkJRG9jayA9IERvY2tTdHlsZS5GaWxsOwotCQkJRnVsbFJvd1NlbGVjdCA9IHRydWU7
Ci0JCQkKLQkJCUl0ZW1BY3RpdmF0ZSArPSBuZXcgRXZlbnRIYW5kbGVyKEFkZFJlZmVyZW5jZSk7
Ci0JCQlQb3B1bGF0ZUxpc3RWaWV3KCk7Ci0JCX0KLQkJCi0JCXB1YmxpYyB2b2lkIEFkZFJlZmVy
ZW5jZShvYmplY3Qgc2VuZGVyLCBFdmVudEFyZ3MgZSkKLQkJewotCQkJZm9yZWFjaCAoTGlzdFZp
ZXdJdGVtIGl0ZW0gaW4gU2VsZWN0ZWRJdGVtcykgewotCQkJCVByb2plY3QgcHJvamVjdCA9IChQ
cm9qZWN0KWl0ZW0uVGFnOwotCQkJCXNlbGVjdERpYWxvZy5BZGRSZWZlcmVuY2UoUmVmZXJlbmNl
VHlwZS5Qcm9qZWN0LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5OYW1l
LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5HZXRPdXRwdXRGaWxlTmFt
ZSgpKTsKLQkJCX0KLQkJfQotCQkKLQotCX0qLworCSAgICB0cmVlVmlldy5TZWxlY3Rpb24uU2Vs
ZWN0ZWRGb3JlYWNoIChuZXcgVHJlZVNlbGVjdGlvbkZvcmVhY2hGdW5jIChBZGRSZWZlcmVuY2Up
KTsKKwl9CisJCisJdm9pZCBBZGRSZWZlcmVuY2UgKFRyZWVNb2RlbCBtb2RlbCwgVHJlZVBhdGgg
cGF0aCwgVHJlZUl0ZXIgaXRlcikKKwl7CisJICAgIFByb2plY3QgcHJvamVjdCA9IChQcm9qZWN0
KSBtb2RlbC5HZXRWYWx1ZSAoaXRlciwgMik7CisJICAgIHNlbGVjdERpYWxvZy5BZGRSZWZlcmVu
Y2UoUmVmZXJlbmNlVHlwZS5Qcm9qZWN0LCBwcm9qZWN0Lk5hbWUsIHByb2plY3QuR2V0T3V0cHV0
RmlsZU5hbWUoKSk7CisJfQorCQorCXZvaWQgQWRkUmVmZXJlbmNlKG9iamVjdCBzZW5kZXIsIEV2
ZW50QXJncyBlKQorCXsKKwkgICAgdHJlZVZpZXcuU2VsZWN0aW9uLlNlbGVjdGVkRm9yZWFjaCAo
bmV3IFRyZWVTZWxlY3Rpb25Gb3JlYWNoRnVuYyAoQWRkUmVmZXJlbmNlKSk7CisJfQkKKwkKKwl2
b2lkIFBvcHVsYXRlTGlzdFZpZXcgKCkKKwl7CisJICAgIENvbWJpbmUgb3BlbkNvbWJpbmUgPSBS
dW50aW1lLlByb2plY3RTZXJ2aWNlLkN1cnJlbnRPcGVuQ29tYmluZTsKKwkgICAgCisJICAgIGlm
IChvcGVuQ29tYmluZSA9PSBudWxsKQorCSAgICB7CisJCXJldHVybjsKKwkgICAgfQorCSAgICAK
KwkgICAgZm9yZWFjaCAoUHJvamVjdCBwcm9qZWN0RW50cnkgaW4gb3BlbkNvbWJpbmUuR2V0QWxs
UHJvamVjdHMoKSkgeworCQlzdG9yZS5BcHBlbmRWYWx1ZXMgKHByb2plY3RFbnRyeS5OYW1lLCBw
cm9qZWN0RW50cnkuQmFzZURpcmVjdG9yeSwgcHJvamVjdEVudHJ5KTsKKwkgICAgfQorCX0KKyAg
ICB9CiB9CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9EaWFsb2dzL1JlZmVy
ZW5jZURpYWxvZy9TZWxlY3RSZWZlcmVuY2VEaWFsb2cuY3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29yZS9z
cmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvRGlhbG9ncy9SZWZlcmVuY2VEaWFsb2cvU2VsZWN0UmVm
ZXJlbmNlRGlhbG9nLmNzCShyZXZpc2lvbiAyNTI3KQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3Au
QmFzZS9HdWkvRGlhbG9ncy9SZWZlcmVuY2VEaWFsb2cvU2VsZWN0UmVmZXJlbmNlRGlhbG9nLmNz
CSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxNzYgKzE5LDE4NSBAQAogCiBuYW1lc3BhY2UgTW9ub0Rl
dmVsb3AuR3VpLkRpYWxvZ3MKIHsKLQlwdWJsaWMgaW50ZXJmYWNlIElSZWZlcmVuY2VQYW5lbAor
ICAgIHB1YmxpYyBpbnRlcmZhY2UgSVJlZmVyZW5jZVBhbmVsCisgICAgeworICAgIH0KKyAgICAK
KyAgICBwdWJsaWMgY2xhc3MgU2VsZWN0UmVmZXJlbmNlRGlhbG9nCisgICAgeworCQorCUd0ay5U
cmVlU3RvcmUgcmVmVHJlZVN0b3JlOworCVtHbGFkZS5XaWRnZXRdIEd0ay5EaWFsb2cgICAgQWRk
UmVmZXJlbmNlRGlhbG9nOworCVtHbGFkZS5XaWRnZXRdIEd0ay5UcmVlVmlldyAgUmVmZXJlbmNl
c1RyZWVWaWV3OworCVtHbGFkZS5XaWRnZXRdIEd0ay5CdXR0b24gICAgb2tidXR0b247CisJW0ds
YWRlLldpZGdldF0gR3RrLkJ1dHRvbiAgICBjYW5jZWxidXR0b247CisJW0dsYWRlLldpZGdldF0g
R3RrLkJ1dHRvbiAgICBSZW1vdmVSZWZlcmVuY2VCdXR0b247CisJW0dsYWRlLldpZGdldF0gR3Rr
Lk5vdGVib29rICBtYWluQm9vazsKKwlHYWNSZWZlcmVuY2VQYW5lbCBnYWNSZWZQYW5lbDsKKwkK
KwlQcm9qZWN0IGNvbmZpZ3VyZVByb2plY3Q7CisJCQorCXB1YmxpYyBQcm9qZWN0UmVmZXJlbmNl
Q29sbGVjdGlvbiBSZWZlcmVuY2VJbmZvcm1hdGlvbnMgeworCSAgICBnZXQgeworCQlQcm9qZWN0
UmVmZXJlbmNlQ29sbGVjdGlvbiByZWZlcmVuY2VJbmZvcm1hdGlvbnMgPSBuZXcgUHJvamVjdFJl
ZmVyZW5jZUNvbGxlY3Rpb24oKTsKKwkJR3RrLlRyZWVJdGVyIGxvb3BpbmdfaXRlcjsKKwkJaWYg
KHJlZlRyZWVTdG9yZS5HZXRJdGVyRmlyc3QgKG91dCBsb29waW5nX2l0ZXIpID09IGZhbHNlKSB7
CisJCSAgICByZXR1cm4gcmVmZXJlbmNlSW5mb3JtYXRpb25zOworCQl9CisJCWRvIHsKKwkJICAg
IC8vRGVidWcuQXNzZXJ0KGl0ZW0uVGFnICE9IG51bGwpOworCQkgICAgcmVmZXJlbmNlSW5mb3Jt
YXRpb25zLkFkZCAoKFByb2plY3RSZWZlcmVuY2UpIHJlZlRyZWVTdG9yZS5HZXRWYWx1ZShsb29w
aW5nX2l0ZXIsIDMpKTsKKwkJfSB3aGlsZSAocmVmVHJlZVN0b3JlLkl0ZXJOZXh0IChyZWYgbG9v
cGluZ19pdGVyKSk7CisJCXJldHVybiByZWZlcmVuY2VJbmZvcm1hdGlvbnM7CisJICAgIH0KKwl9
CisJCisJcHVibGljIGludCBSdW4gKCkKIAl7CisJICAgIHJldHVybiBBZGRSZWZlcmVuY2VEaWFs
b2cuUnVuICgpOwogCX0KIAkKLQlwdWJsaWMgY2xhc3MgU2VsZWN0UmVmZXJlbmNlRGlhbG9nCisJ
cHVibGljIHZvaWQgSGlkZSAoKQogCXsKLQotCQkgICAgICAgICAgICAgICBHdGsuVHJlZVN0b3Jl
IHJlZlRyZWVTdG9yZTsKLQkJW0dsYWRlLldpZGdldF0gR3RrLkRpYWxvZyAgICBBZGRSZWZlcmVu
Y2VEaWFsb2c7Ci0JCVtHbGFkZS5XaWRnZXRdIEd0ay5UcmVlVmlldyAgUmVmZXJlbmNlc1RyZWVW
aWV3OwotCQlbR2xhZGUuV2lkZ2V0XSBHdGsuQnV0dG9uICAgIG9rYnV0dG9uOwotCQlbR2xhZGUu
V2lkZ2V0XSBHdGsuQnV0dG9uICAgIGNhbmNlbGJ1dHRvbjsKLQkJW0dsYWRlLldpZGdldF0gR3Rr
LkJ1dHRvbiAgICBSZW1vdmVSZWZlcmVuY2VCdXR0b247Ci0JCVtHbGFkZS5XaWRnZXRdIEd0ay5O
b3RlYm9vayAgbWFpbkJvb2s7Ci0JCUdhY1JlZmVyZW5jZVBhbmVsIGdhY1JlZlBhbmVsOwotCi0J
CVByb2plY3QgY29uZmlndXJlUHJvamVjdDsKLQkJCi0JCXB1YmxpYyBQcm9qZWN0UmVmZXJlbmNl
Q29sbGVjdGlvbiBSZWZlcmVuY2VJbmZvcm1hdGlvbnMgewotCQkJZ2V0IHsKLQkJCQlQcm9qZWN0
UmVmZXJlbmNlQ29sbGVjdGlvbiByZWZlcmVuY2VJbmZvcm1hdGlvbnMgPSBuZXcgUHJvamVjdFJl
ZmVyZW5jZUNvbGxlY3Rpb24oKTsKLQkJCQlHdGsuVHJlZUl0ZXIgbG9vcGluZ19pdGVyOwotCQkJ
CWlmIChyZWZUcmVlU3RvcmUuR2V0SXRlckZpcnN0IChvdXQgbG9vcGluZ19pdGVyKSA9PSBmYWxz
ZSkgewotCQkJCQlyZXR1cm4gcmVmZXJlbmNlSW5mb3JtYXRpb25zOwotCQkJCX0KLQkJCQlkbyB7
Ci0JCQkJCS8vRGVidWcuQXNzZXJ0KGl0ZW0uVGFnICE9IG51bGwpOwotCQkJCQlyZWZlcmVuY2VJ
bmZvcm1hdGlvbnMuQWRkICgoUHJvamVjdFJlZmVyZW5jZSkgcmVmVHJlZVN0b3JlLkdldFZhbHVl
KGxvb3BpbmdfaXRlciwgMykpOwotCQkJCX0gd2hpbGUgKHJlZlRyZWVTdG9yZS5JdGVyTmV4dCAo
cmVmIGxvb3BpbmdfaXRlcikpOwotCQkJCXJldHVybiByZWZlcmVuY2VJbmZvcm1hdGlvbnM7Ci0J
CQl9CisJICAgIEFkZFJlZmVyZW5jZURpYWxvZy5IaWRlICgpOworCX0KKwkKKwlwdWJsaWMgU2Vs
ZWN0UmVmZXJlbmNlRGlhbG9nKFByb2plY3QgY29uZmlndXJlUHJvamVjdCkKKwl7CisJICAgIHRo
aXMuY29uZmlndXJlUHJvamVjdCA9IGNvbmZpZ3VyZVByb2plY3Q7CisJICAgIAorCSAgICBHbGFk
ZS5YTUwgcmVmWE1MID0gbmV3IEdsYWRlLlhNTCAobnVsbCwgIkJhc2UuZ2xhZGUiLCAiQWRkUmVm
ZXJlbmNlRGlhbG9nIiwgbnVsbCk7CisJICAgIHJlZlhNTC5BdXRvY29ubmVjdCAodGhpcyk7CisJ
ICAgIAorCSAgICByZWZUcmVlU3RvcmUgPSBuZXcgR3RrLlRyZWVTdG9yZSAodHlwZW9mIChzdHJp
bmcpLCB0eXBlb2Yoc3RyaW5nKSwgdHlwZW9mKHN0cmluZyksIHR5cGVvZihQcm9qZWN0UmVmZXJl
bmNlKSk7CisJICAgIFJlZmVyZW5jZXNUcmVlVmlldy5Nb2RlbCA9IHJlZlRyZWVTdG9yZTsKKwkg
ICAgCisJICAgIFJlZmVyZW5jZXNUcmVlVmlldy5BcHBlbmRDb2x1bW4gKEdldHRleHRDYXRhbG9n
LkdldFN0cmluZygiUmVmZXJlbmNlIE5hbWUiKSwgbmV3IENlbGxSZW5kZXJlclRleHQgKCksICJ0
ZXh0IiwgMCk7CisJICAgIFJlZmVyZW5jZXNUcmVlVmlldy5BcHBlbmRDb2x1bW4gKEdldHRleHRD
YXRhbG9nLkdldFN0cmluZyAoIlR5cGUiKSwgbmV3IENlbGxSZW5kZXJlclRleHQgKCksICJ0ZXh0
IiwgMSk7CisJICAgIFJlZmVyZW5jZXNUcmVlVmlldy5BcHBlbmRDb2x1bW4gKEdldHRleHRDYXRh
bG9nLkdldFN0cmluZyAoIkxvY2F0aW9uIiksIG5ldyBDZWxsUmVuZGVyZXJUZXh0ICgpLCAidGV4
dCIsIDIpOworCSAgICBSZWZlcmVuY2VzVHJlZVZpZXcuUm93QWN0aXZhdGVkICs9IG5ldyBSb3dB
Y3RpdmF0ZWRIYW5kbGVyKFJvd0RvdWJsZUNsaWNrZWQpOworCSAgICAKKwkgICAgZ2FjUmVmUGFu
ZWwgPSBuZXcgR2FjUmVmZXJlbmNlUGFuZWwgKHRoaXMpOworCSAgICAKKwkgICAgZm9yZWFjaCAo
UHJvamVjdFJlZmVyZW5jZSByZWZJbmZvIGluIGNvbmZpZ3VyZVByb2plY3QuUHJvamVjdFJlZmVy
ZW5jZXMpIHsKKwkJc3dpdGNoIChyZWZJbmZvLlJlZmVyZW5jZVR5cGUpIHsKKwkJY2FzZSBSZWZl
cmVuY2VUeXBlLkFzc2VtYmx5OgorCQljYXNlIFJlZmVyZW5jZVR5cGUuUHJvamVjdDoKKwkJICAg
IEFkZE5vbkdhY1JlZmVyZW5jZSAocmVmSW5mbyk7CisJCSAgICBicmVhazsKKwkJY2FzZSBSZWZl
cmVuY2VUeXBlLkdhYzoKKwkJICAgIEFkZEdhY1JlZmVyZW5jZSAocmVmSW5mbywgY29uZmlndXJl
UHJvamVjdCk7CisJCSAgICBicmVhazsKIAkJfQotCi0JCXB1YmxpYyBpbnQgUnVuICgpCi0JCXsK
LQkJCXJldHVybiBBZGRSZWZlcmVuY2VEaWFsb2cuUnVuICgpOworCSAgICB9CisJICAgIG1haW5C
b29rLlJlbW92ZVBhZ2UgKG1haW5Cb29rLkN1cnJlbnRQYWdlKTsKKwkgICAgbWFpbkJvb2suQXBw
ZW5kUGFnZSAoZ2FjUmVmUGFuZWwsIG5ldyBHdGsuTGFiZWwgKEdldHRleHRDYXRhbG9nLkdldFN0
cmluZyAoIkdsb2JhbCBBc3NlbWJseSBDYWNoZSIpKSk7CisJICAgIG1haW5Cb29rLkFwcGVuZFBh
Z2UgKG5ldyBQcm9qZWN0UmVmZXJlbmNlUGFuZWwgKHRoaXMpLCBuZXcgR3RrLkxhYmVsIChHZXR0
ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJQcm9qZWN0cyIpKSk7CisJICAgIG1haW5Cb29rLkFwcGVu
ZFBhZ2UgKG5ldyBBc3NlbWJseVJlZmVyZW5jZVBhbmVsICh0aGlzKSwgbmV3IEd0ay5MYWJlbCAo
R2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiLk5ldCBBc3NlbWJseSIpKSk7CisJICAgIC8vY29t
VGFiUGFnZS5Db250cm9scy5BZGQobmV3IENPTVJlZmVyZW5jZVBhbmVsKHRoaXMpKTsKKwkgICAg
UmVmZXJlbmNlc1RyZWVWaWV3LlNlbGVjdGlvbi5DaGFuZ2VkICs9IG5ldyBFdmVudEhhbmRsZXIg
KG9uQ2hhbmdlZCk7CisJICAgIEFkZFJlZmVyZW5jZURpYWxvZy5TaG93QWxsICgpOworCSAgICBv
bkNoYW5nZWQgKG51bGwsIG51bGwpOworCX0KKwkKKwl2b2lkIG9uQ2hhbmdlZCAob2JqZWN0IG8s
IEV2ZW50QXJncyBlKQorCXsKKwkgICAgaWYgKFJlZmVyZW5jZXNUcmVlVmlldy5TZWxlY3Rpb24u
Q291bnRTZWxlY3RlZFJvd3MgKCkgPiAwKQorCSAgICBSZW1vdmVSZWZlcmVuY2VCdXR0b24uU2Vu
c2l0aXZlID0gdHJ1ZTsKKwkgICAgZWxzZQorCSAgICBSZW1vdmVSZWZlcmVuY2VCdXR0b24uU2Vu
c2l0aXZlID0gZmFsc2U7CisJfQorCQorCXZvaWQgQWRkTm9uR2FjUmVmZXJlbmNlIChQcm9qZWN0
UmVmZXJlbmNlIHJlZkluZm8pCisJeworCSAgICByZWZUcmVlU3RvcmUuQXBwZW5kVmFsdWVzIChT
eXN0ZW0uSU8uUGF0aC5HZXRGaWxlTmFtZSAocmVmSW5mby5SZWZlcmVuY2UpLCByZWZJbmZvLlJl
ZmVyZW5jZVR5cGUuVG9TdHJpbmcgKCksIFN5c3RlbS5JTy5QYXRoLkdldEZ1bGxQYXRoIChyZWZJ
bmZvLkdldFJlZmVyZW5jZWRGaWxlTmFtZSAoKSksIHJlZkluZm8pOworCX0KKwkKKwl2b2lkIEFk
ZEdhY1JlZmVyZW5jZSAoUHJvamVjdFJlZmVyZW5jZSByZWZJbmZvLCBQcm9qZWN0IHJlZmVyZW5j
ZWRQcm9qZWN0KQorCXsKKwkgICAgZ2FjUmVmUGFuZWwuU2lnbmFsUmVmQ2hhbmdlIChyZWZJbmZv
LlJlZmVyZW5jZSwgdHJ1ZSk7CisJICAgIHJlZlRyZWVTdG9yZS5BcHBlbmRWYWx1ZXMgKFN5c3Rl
bS5JTy5QYXRoLkdldEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiAocmVmSW5mby5HZXRSZWZlcmVu
Y2VkRmlsZU5hbWUgKCkpLCByZWZJbmZvLlJlZmVyZW5jZVR5cGUuVG9TdHJpbmcgKCksIHJlZklu
Zm8uUmVmZXJlbmNlLCByZWZJbmZvKTsKKwl9CisJCisJcHVibGljIHZvaWQgUmVtb3ZlUmVmZXJl
bmNlIChSZWZlcmVuY2VUeXBlIHJlZmVyZW5jZVR5cGUsIHN0cmluZyByZWZlcmVuY2VOYW1lLCBz
dHJpbmcgcmVmZXJlbmNlTG9jYXRpb24pCisJeworCSAgICBHdGsuVHJlZUl0ZXIgbG9vcGluZ19p
dGVyOworCSAgICByZWZUcmVlU3RvcmUuR2V0SXRlckZpcnN0IChvdXQgbG9vcGluZ19pdGVyKTsK
KwkgICAgZG8geworCQlpZiAocmVmZXJlbmNlTG9jYXRpb24gPT0gKHN0cmluZylyZWZUcmVlU3Rv
cmUuR2V0VmFsdWUgKGxvb3BpbmdfaXRlciwgMikpIHsKKwkJICAgIHJlZlRyZWVTdG9yZS5SZW1v
dmUgKHJlZiBsb29waW5nX2l0ZXIpOworCQkgICAgcmV0dXJuOwogCQl9Ci0KLQkJcHVibGljIHZv
aWQgSGlkZSAoKQotCQl7Ci0JCQlBZGRSZWZlcmVuY2VEaWFsb2cuSGlkZSAoKTsKKwkgICAgfSB3
aGlsZSAocmVmVHJlZVN0b3JlLkl0ZXJOZXh0IChyZWYgbG9vcGluZ19pdGVyKSk7CisJfQorCQor
CXB1YmxpYyB2b2lkIEFkZFJlZmVyZW5jZShSZWZlcmVuY2VUeXBlIHJlZmVyZW5jZVR5cGUsIHN0
cmluZyByZWZlcmVuY2VOYW1lLCBzdHJpbmcgcmVmZXJlbmNlTG9jYXRpb24pCisJeworCSAgICBH
dGsuVHJlZUl0ZXIgbG9vcGluZ19pdGVyOworCSAgICByZWZUcmVlU3RvcmUuR2V0SXRlckZpcnN0
IChvdXQgbG9vcGluZ19pdGVyKTsKKwkgICAgZG8geworCQl0cnkgeworCQkgICAgaWYgKHJlZmVy
ZW5jZUxvY2F0aW9uID09IChzdHJpbmcpcmVmVHJlZVN0b3JlLkdldFZhbHVlIChsb29waW5nX2l0
ZXIsIDIpICYmIHJlZmVyZW5jZU5hbWUgPT0gKHN0cmluZylyZWZUcmVlU3RvcmUuR2V0VmFsdWUg
KGxvb3BpbmdfaXRlciwgMCkpIHsKKwkJCXJldHVybjsKKwkJICAgIH0KKwkJfSBjYXRjaCB7CiAJ
CX0KKwkgICAgfSB3aGlsZSAocmVmVHJlZVN0b3JlLkl0ZXJOZXh0IChyZWYgbG9vcGluZ19pdGVy
KSk7CisJICAgIAorCSAgICBQcm9qZWN0UmVmZXJlbmNlIHRhZzsKKwkgICAgc3dpdGNoIChyZWZl
cmVuY2VUeXBlKSB7CisJICAgIGNhc2UgUmVmZXJlbmNlVHlwZS5UeXBlbGliOgorCQl0YWcgPSBu
ZXcgUHJvamVjdFJlZmVyZW5jZShyZWZlcmVuY2VUeXBlLCByZWZlcmVuY2VOYW1lICsgInwiICsg
cmVmZXJlbmNlTG9jYXRpb24pOworCQlicmVhazsKKwkgICAgY2FzZSBSZWZlcmVuY2VUeXBlLlBy
b2plY3Q6CisJCXRhZyA9IG5ldyBQcm9qZWN0UmVmZXJlbmNlKHJlZmVyZW5jZVR5cGUsIHJlZmVy
ZW5jZU5hbWUpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJdGFnID0gbmV3IFByb2plY3RS
ZWZlcmVuY2UocmVmZXJlbmNlVHlwZSwgcmVmZXJlbmNlTG9jYXRpb24pOworCQlicmVhazsKIAkJ
Ci0JCXB1YmxpYyBTZWxlY3RSZWZlcmVuY2VEaWFsb2coUHJvamVjdCBjb25maWd1cmVQcm9qZWN0
KQotCQl7Ci0JCQl0aGlzLmNvbmZpZ3VyZVByb2plY3QgPSBjb25maWd1cmVQcm9qZWN0OwotCQkJ
Ci0JCQlHbGFkZS5YTUwgcmVmWE1MID0gbmV3IEdsYWRlLlhNTCAobnVsbCwgIkJhc2UuZ2xhZGUi
LCAiQWRkUmVmZXJlbmNlRGlhbG9nIiwgbnVsbCk7Ci0JCQlyZWZYTUwuQXV0b2Nvbm5lY3QgKHRo
aXMpOwotCQkJCi0JCQlyZWZUcmVlU3RvcmUgPSBuZXcgR3RrLlRyZWVTdG9yZSAodHlwZW9mIChz
dHJpbmcpLCB0eXBlb2Yoc3RyaW5nKSwgdHlwZW9mKHN0cmluZyksIHR5cGVvZihQcm9qZWN0UmVm
ZXJlbmNlKSk7Ci0JCQlSZWZlcmVuY2VzVHJlZVZpZXcuTW9kZWwgPSByZWZUcmVlU3RvcmU7CisJ
ICAgIH0KKwkgICAgcmVmVHJlZVN0b3JlLkFwcGVuZFZhbHVlcyAocmVmZXJlbmNlTmFtZSwgcmVm
ZXJlbmNlVHlwZS5Ub1N0cmluZyAoKSwgcmVmZXJlbmNlTG9jYXRpb24sIHRhZyk7CisJfQorCQor
CXZvaWQgU2VsZWN0UmVmZXJlbmNlKG9iamVjdCBzZW5kZXIsIEV2ZW50QXJncyBlKQorCXsKKwkg
ICAgLy9JUmVmZXJlbmNlUGFuZWwgcmVmUGFuZWwgPSAoSVJlZmVyZW5jZVBhbmVsKXJlZmVyZW5j
ZVRhYkNvbnRyb2wuU2VsZWN0ZWRUYWIuQ29udHJvbHNbMF07CisJICAgIC8vcmVmUGFuZWwuQWRk
UmVmZXJlbmNlKG51bGwsIG51bGwpOworCX0KKwkKKwkKKwkKKwl2b2lkIFJvd0RvdWJsZUNsaWNr
ZWQob2JqZWN0IG8sIFJvd0FjdGl2YXRlZEFyZ3MgYXJncykKKwl7CisJICAgIHRoaXMuUmVtb3Zl
UmVmZXJlbmNlKG8sIG51bGwpOworCX0KIAotCQkJUmVmZXJlbmNlc1RyZWVWaWV3LkFwcGVuZENv
bHVtbiAoR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nKCJSZWZlcmVuY2UgTmFtZSIpLCBuZXcgQ2Vs
bFJlbmRlcmVyVGV4dCAoKSwgInRleHQiLCAwKTsKLQkJCVJlZmVyZW5jZXNUcmVlVmlldy5BcHBl
bmRDb2x1bW4gKEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIlR5cGUiKSwgbmV3IENlbGxSZW5k
ZXJlclRleHQgKCksICJ0ZXh0IiwgMSk7Ci0JCQlSZWZlcmVuY2VzVHJlZVZpZXcuQXBwZW5kQ29s
dW1uIChHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJMb2NhdGlvbiIpLCBuZXcgQ2VsbFJlbmRl
cmVyVGV4dCAoKSwgInRleHQiLCAyKTsKLQkJCQotCQkJZ2FjUmVmUGFuZWwgPSBuZXcgR2FjUmVm
ZXJlbmNlUGFuZWwgKHRoaXMpOwotCQkJCi0JCQlmb3JlYWNoIChQcm9qZWN0UmVmZXJlbmNlIHJl
ZkluZm8gaW4gY29uZmlndXJlUHJvamVjdC5Qcm9qZWN0UmVmZXJlbmNlcykgewotCQkJCXN3aXRj
aCAocmVmSW5mby5SZWZlcmVuY2VUeXBlKSB7Ci0JCQkJCWNhc2UgUmVmZXJlbmNlVHlwZS5Bc3Nl
bWJseToKLQkJCQkJY2FzZSBSZWZlcmVuY2VUeXBlLlByb2plY3Q6Ci0JCQkJCQlBZGROb25HYWNS
ZWZlcmVuY2UgKHJlZkluZm8pOwotCQkJCQkJYnJlYWs7Ci0JCQkJCWNhc2UgUmVmZXJlbmNlVHlw
ZS5HYWM6Ci0JCQkJCQlBZGRHYWNSZWZlcmVuY2UgKHJlZkluZm8sIGNvbmZpZ3VyZVByb2plY3Qp
OwotCQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCQkJbWFpbkJvb2suUmVtb3ZlUGFnZSAobWFp
bkJvb2suQ3VycmVudFBhZ2UpOwotCQkJbWFpbkJvb2suQXBwZW5kUGFnZSAoZ2FjUmVmUGFuZWws
IG5ldyBHdGsuTGFiZWwgKEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkdsb2JhbCBBc3NlbWJs
eSBDYWNoZSIpKSk7Ci0JCQltYWluQm9vay5BcHBlbmRQYWdlIChuZXcgUHJvamVjdFJlZmVyZW5j
ZVBhbmVsICh0aGlzKSwgbmV3IEd0ay5MYWJlbCAoR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgi
UHJvamVjdHMiKSkpOwotCQkJbWFpbkJvb2suQXBwZW5kUGFnZSAobmV3IEFzc2VtYmx5UmVmZXJl
bmNlUGFuZWwgKHRoaXMpLCBuZXcgR3RrLkxhYmVsIChHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcg
KCIuTmV0IEFzc2VtYmx5IikpKTsKLQkJCS8vY29tVGFiUGFnZS5Db250cm9scy5BZGQobmV3IENP
TVJlZmVyZW5jZVBhbmVsKHRoaXMpKTsKLQkJCVJlZmVyZW5jZXNUcmVlVmlldy5TZWxlY3Rpb24u
Q2hhbmdlZCArPSBuZXcgRXZlbnRIYW5kbGVyIChvbkNoYW5nZWQpOwotCQkJQWRkUmVmZXJlbmNl
RGlhbG9nLlNob3dBbGwgKCk7Ci0JCQlvbkNoYW5nZWQgKG51bGwsIG51bGwpOworCQorCXZvaWQg
UmVtb3ZlUmVmZXJlbmNlKG9iamVjdCBzZW5kZXIsIEV2ZW50QXJncyBlKQorCXsKKwkgICAgR3Rr
LlRyZWVJdGVyIGl0ZXI7CisJICAgIEd0ay5UcmVlTW9kZWwgbWRsOworCSAgICBpZiAoUmVmZXJl
bmNlc1RyZWVWaWV3LlNlbGVjdGlvbi5HZXRTZWxlY3RlZCAob3V0IG1kbCwgb3V0IGl0ZXIpKSB7
CisJCXN3aXRjaCAoKChQcm9qZWN0UmVmZXJlbmNlKXJlZlRyZWVTdG9yZS5HZXRWYWx1ZSAoaXRl
ciwgMykpLlJlZmVyZW5jZVR5cGUpIHsKKwkJY2FzZSBSZWZlcmVuY2VUeXBlLkdhYzoKKwkJICAg
IGdhY1JlZlBhbmVsLlNpZ25hbFJlZkNoYW5nZSAoKHN0cmluZylyZWZUcmVlU3RvcmUuR2V0VmFs
dWUgKGl0ZXIsIDIpLCBmYWxzZSk7CisJCSAgICBicmVhazsKIAkJfQotCi0JCXZvaWQgb25DaGFu
Z2VkIChvYmplY3QgbywgRXZlbnRBcmdzIGUpCi0JCXsKLQkJCWlmIChSZWZlcmVuY2VzVHJlZVZp
ZXcuU2VsZWN0aW9uLkNvdW50U2VsZWN0ZWRSb3dzICgpID4gMCkKLQkJCQlSZW1vdmVSZWZlcmVu
Y2VCdXR0b24uU2Vuc2l0aXZlID0gdHJ1ZTsKLQkJCWVsc2UKLQkJCQlSZW1vdmVSZWZlcmVuY2VC
dXR0b24uU2Vuc2l0aXZlID0gZmFsc2U7CisJCUd0ay5UcmVlSXRlciBuZXdJdGVyID0gaXRlcjsK
KwkJaWYgKHJlZlRyZWVTdG9yZS5JdGVyTmV4dCAocmVmIG5ld0l0ZXIpKSB7CisJCSAgICBSZWZl
cmVuY2VzVHJlZVZpZXcuU2VsZWN0aW9uLlNlbGVjdEl0ZXIgKG5ld0l0ZXIpOworCQkgICAgcmVm
VHJlZVN0b3JlLlJlbW92ZSAocmVmIGl0ZXIpOworCQl9IGVsc2UgeworCQkgICAgR3RrLlRyZWVQ
YXRoIHBhdGggPSByZWZUcmVlU3RvcmUuR2V0UGF0aCAoaXRlcik7CisJCSAgICBpZiAocGF0aC5Q
cmV2ICgpKSB7CisJCQlSZWZlcmVuY2VzVHJlZVZpZXcuU2VsZWN0aW9uLlNlbGVjdFBhdGggKHBh
dGgpOworCQkJcmVmVHJlZVN0b3JlLlJlbW92ZSAocmVmIGl0ZXIpOworCQkgICAgfSBlbHNlIHsK
KwkJCXJlZlRyZWVTdG9yZS5SZW1vdmUgKHJlZiBpdGVyKTsKKwkJICAgIH0KIAkJfQotCi0JCXZv
aWQgQWRkTm9uR2FjUmVmZXJlbmNlIChQcm9qZWN0UmVmZXJlbmNlIHJlZkluZm8pCi0JCXsKLQkJ
CXJlZlRyZWVTdG9yZS5BcHBlbmRWYWx1ZXMgKFN5c3RlbS5JTy5QYXRoLkdldEZpbGVOYW1lIChy
ZWZJbmZvLlJlZmVyZW5jZSksIHJlZkluZm8uUmVmZXJlbmNlVHlwZS5Ub1N0cmluZyAoKSwgU3lz
dGVtLklPLlBhdGguR2V0RnVsbFBhdGggKHJlZkluZm8uR2V0UmVmZXJlbmNlZEZpbGVOYW1lICgp
KSwgcmVmSW5mbyk7Ci0JCX0KLQotCQl2b2lkIEFkZEdhY1JlZmVyZW5jZSAoUHJvamVjdFJlZmVy
ZW5jZSByZWZJbmZvLCBQcm9qZWN0IHJlZmVyZW5jZWRQcm9qZWN0KQotCQl7Ci0JCQlnYWNSZWZQ
YW5lbC5TaWduYWxSZWZDaGFuZ2UgKHJlZkluZm8uUmVmZXJlbmNlLCB0cnVlKTsKLQkJCXJlZlRy
ZWVTdG9yZS5BcHBlbmRWYWx1ZXMgKFN5c3RlbS5JTy5QYXRoLkdldEZpbGVOYW1lV2l0aG91dEV4
dGVuc2lvbiAocmVmSW5mby5HZXRSZWZlcmVuY2VkRmlsZU5hbWUgKCkpLCByZWZJbmZvLlJlZmVy
ZW5jZVR5cGUuVG9TdHJpbmcgKCksIHJlZkluZm8uUmVmZXJlbmNlLCByZWZJbmZvKTsKLQkJfQot
Ci0JCXB1YmxpYyB2b2lkIFJlbW92ZVJlZmVyZW5jZSAoUmVmZXJlbmNlVHlwZSByZWZlcmVuY2VU
eXBlLCBzdHJpbmcgcmVmZXJlbmNlTmFtZSwgc3RyaW5nIHJlZmVyZW5jZUxvY2F0aW9uKQotCQl7
Ci0JCQlHdGsuVHJlZUl0ZXIgbG9vcGluZ19pdGVyOwotCQkJcmVmVHJlZVN0b3JlLkdldEl0ZXJG
aXJzdCAob3V0IGxvb3BpbmdfaXRlcik7Ci0JCQlkbyB7Ci0JCQkJaWYgKHJlZmVyZW5jZUxvY2F0
aW9uID09IChzdHJpbmcpcmVmVHJlZVN0b3JlLkdldFZhbHVlIChsb29waW5nX2l0ZXIsIDIpKSB7
Ci0JCQkJCXJlZlRyZWVTdG9yZS5SZW1vdmUgKHJlZiBsb29waW5nX2l0ZXIpOwotCQkJCQlyZXR1
cm47Ci0JCQkJfQotCQkJfSB3aGlsZSAocmVmVHJlZVN0b3JlLkl0ZXJOZXh0IChyZWYgbG9vcGlu
Z19pdGVyKSk7Ci0JCX0KLQkJCi0JCXB1YmxpYyB2b2lkIEFkZFJlZmVyZW5jZShSZWZlcmVuY2VU
eXBlIHJlZmVyZW5jZVR5cGUsIHN0cmluZyByZWZlcmVuY2VOYW1lLCBzdHJpbmcgcmVmZXJlbmNl
TG9jYXRpb24pCi0JCXsKLQkJCUd0ay5UcmVlSXRlciBsb29waW5nX2l0ZXI7Ci0JCQlyZWZUcmVl
U3RvcmUuR2V0SXRlckZpcnN0IChvdXQgbG9vcGluZ19pdGVyKTsKLQkJCWRvIHsKLQkJCQl0cnkg
ewotCQkJCQlpZiAocmVmZXJlbmNlTG9jYXRpb24gPT0gKHN0cmluZylyZWZUcmVlU3RvcmUuR2V0
VmFsdWUgKGxvb3BpbmdfaXRlciwgMikgJiYgcmVmZXJlbmNlTmFtZSA9PSAoc3RyaW5nKXJlZlRy
ZWVTdG9yZS5HZXRWYWx1ZSAobG9vcGluZ19pdGVyLCAwKSkgewotCQkJCQkJcmV0dXJuOwotCQkJ
CQl9Ci0JCQkJfSBjYXRjaCB7Ci0JCQkJfQotCQkJfSB3aGlsZSAocmVmVHJlZVN0b3JlLkl0ZXJO
ZXh0IChyZWYgbG9vcGluZ19pdGVyKSk7Ci0JCQkKLQkJCVByb2plY3RSZWZlcmVuY2UgdGFnOwot
CQkJc3dpdGNoIChyZWZlcmVuY2VUeXBlKSB7Ci0JCQkJY2FzZSBSZWZlcmVuY2VUeXBlLlR5cGVs
aWI6Ci0JCQkJCXRhZyA9IG5ldyBQcm9qZWN0UmVmZXJlbmNlKHJlZmVyZW5jZVR5cGUsIHJlZmVy
ZW5jZU5hbWUgKyAifCIgKyByZWZlcmVuY2VMb2NhdGlvbik7Ci0JCQkJCWJyZWFrOwotCQkJCWNh
c2UgUmVmZXJlbmNlVHlwZS5Qcm9qZWN0OgotCQkJCQl0YWcgPSBuZXcgUHJvamVjdFJlZmVyZW5j
ZShyZWZlcmVuY2VUeXBlLCByZWZlcmVuY2VOYW1lKTsKLQkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVs
dDoKLQkJCQkJdGFnID0gbmV3IFByb2plY3RSZWZlcmVuY2UocmVmZXJlbmNlVHlwZSwgcmVmZXJl
bmNlTG9jYXRpb24pOwotCQkJCQlicmVhazsKLQkJCQkJCi0JCQl9Ci0JCQlyZWZUcmVlU3RvcmUu
QXBwZW5kVmFsdWVzIChyZWZlcmVuY2VOYW1lLCByZWZlcmVuY2VUeXBlLlRvU3RyaW5nICgpLCBy
ZWZlcmVuY2VMb2NhdGlvbiwgdGFnKTsKLQkJfQotCQkKLQkJdm9pZCBTZWxlY3RSZWZlcmVuY2Uo
b2JqZWN0IHNlbmRlciwgRXZlbnRBcmdzIGUpCi0JCXsKLQkJCS8vSVJlZmVyZW5jZVBhbmVsIHJl
ZlBhbmVsID0gKElSZWZlcmVuY2VQYW5lbClyZWZlcmVuY2VUYWJDb250cm9sLlNlbGVjdGVkVGFi
LkNvbnRyb2xzWzBdOwotCQkJLy9yZWZQYW5lbC5BZGRSZWZlcmVuY2UobnVsbCwgbnVsbCk7Ci0J
CX0KLQkJCi0JCXZvaWQgUmVtb3ZlUmVmZXJlbmNlKG9iamVjdCBzZW5kZXIsIEV2ZW50QXJncyBl
KQotCQl7Ci0JCQlHdGsuVHJlZUl0ZXIgaXRlcjsKLQkJCUd0ay5UcmVlTW9kZWwgbWRsOwotCQkJ
aWYgKFJlZmVyZW5jZXNUcmVlVmlldy5TZWxlY3Rpb24uR2V0U2VsZWN0ZWQgKG91dCBtZGwsIG91
dCBpdGVyKSkgewotCQkJCXN3aXRjaCAoKChQcm9qZWN0UmVmZXJlbmNlKXJlZlRyZWVTdG9yZS5H
ZXRWYWx1ZSAoaXRlciwgMykpLlJlZmVyZW5jZVR5cGUpIHsKLQkJCQkJY2FzZSBSZWZlcmVuY2VU
eXBlLkdhYzoKLQkJCQkJCWdhY1JlZlBhbmVsLlNpZ25hbFJlZkNoYW5nZSAoKHN0cmluZylyZWZU
cmVlU3RvcmUuR2V0VmFsdWUgKGl0ZXIsIDIpLCBmYWxzZSk7Ci0JCQkJCQlicmVhazsKLQkJCQl9
Ci0JCQkJR3RrLlRyZWVJdGVyIG5ld0l0ZXIgPSBpdGVyOwotCQkJCWlmIChyZWZUcmVlU3RvcmUu
SXRlck5leHQgKHJlZiBuZXdJdGVyKSkgewotCQkJCQlSZWZlcmVuY2VzVHJlZVZpZXcuU2VsZWN0
aW9uLlNlbGVjdEl0ZXIgKG5ld0l0ZXIpOwotCQkJCQlyZWZUcmVlU3RvcmUuUmVtb3ZlIChyZWYg
aXRlcik7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJR3RrLlRyZWVQYXRoIHBhdGggPSByZWZUcmVlU3Rv
cmUuR2V0UGF0aCAoaXRlcik7Ci0JCQkJCWlmIChwYXRoLlByZXYgKCkpIHsKLQkJCQkJCVJlZmVy
ZW5jZXNUcmVlVmlldy5TZWxlY3Rpb24uU2VsZWN0UGF0aCAocGF0aCk7Ci0JCQkJCQlyZWZUcmVl
U3RvcmUuUmVtb3ZlIChyZWYgaXRlcik7Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlyZWZUcmVlU3Rv
cmUuUmVtb3ZlIChyZWYgaXRlcik7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KKwkgICAgfQog
CX0KKyAgICB9CiB9Cg==
------=_Part_697_6188064.1115927605085--



More information about the Monodevelop-list mailing list