LlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgouXCIKLlwiIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIHdpdGggcG80YS4gVHJhbnNsYXRlIHRoZSBzb3VyY2UgZmlsZS4KLlwiCi5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLlRIIGRwa2dcLW1haW50c2NyaXB0XC1oZWxwZXIgMSAyMDExXC0wOFwtMTQgRGViaWFuXC1Qcm9qZWt0IGRwa2dcLVByb2dyYW1tc2FtbWx1bmcKLlNIIE5BTUUKZHBrZ1wtbWFpbnRzY3JpcHRcLWhlbHBlciBcLSBCZWthbm50ZSBFaW5zY2hy5G5rdW5nZW4gaW4gRHBrZyBpbgpCZXRyZXVlcnNrcmlwdGVuIHVtZ2VoZW4KLgouU0gg3EJFUlNJQ0hUClxmQmRwa2dcLW1haW50c2NyaXB0XC1oZWxwZXJcZlAgXGZJQmVmZWhsXGZQIFtcZklQYXJhbWV0ZXJcZlAuLi5dIFxmQlwtXC1cZlAKXGZJQmV0clwtU2tyaXB0XC1QYXJhbWV0ZXJcZlAuLi4KLgouU0ggIkJFRkVITEUgVU5EIFBBUkFNRVRFUiIKLlAKXGZCcm1fY29uZmZpbGVcZlAgXGZJQ29uZmZpbGVcZlAgW1xmSWxldHp0ZVZlcnNpb25cZlAgW1xmSVBha2V0XGZQXV0KLlAKXGZCbXZfY29uZmZpbGVcZlAgXGZJQWx0ZUNvbmZmaWxlXGZQIFxmSU5ldWVDb25mZmlsZVxmUCBbXGZJbGV0enRlVmVyc2lvblxmUCBbXGZJUGFrZXRcZlBdXQouCi5TSCBCRVNDSFJFSUJVTkcKLlAKRGllc2VzIFByb2dyYW1tIHd1cmRlIHNvIGVudHdvcmZlbiwgZGFzcyBlcyBpbiBCZXRyZXVlcnNrcmlwdGVuIGF1c2dlZvxocnQKd2VyZGVuIGthbm4sIHVtIGVpbmlnZSBBdWZnYWJlbiB6dSBlcmxlZGlnZW4sIGRpZSBEcGtnIChub2NoKSBuaWNodCBzZWxic3QKZXJsZWRpZ2VuIGthbm4sIGVudHdlZGVyIGF1ZmdydW5kIHZvbiBEZXNpZ25cLUVudHNjaGVpZHVuZ2VuIG9kZXIgYXVmZ3J1bmQKYWt0dWVsbGVyIEVpbnNjaHLkbmt1bmdlbi4KLlAKVmllbGUgZGllc2VyIEF1ZmdhYmVuIGJlbvZ0aWdlbiBrb29yZGluaWVydGUgQWt0aW9uZW4gYXVzIG1laHJlcmVuCkJldHJldWVyc2tyaXB0ZW4gKFxmQnByZWluc3RcZlAsIFxmQnBvc3RpbnN0XGZQLCBcZkJwcmVybVxmUCwgXGZCcG9zdHJtXGZQKS4gVW0gRmVobGVyCnp1IHZlcm1laWRlbiwgd2lyZCBkZXIgZ2xlaWNoZSBBdWZydWYgZWluZmFjaCBpbiBhbGxlIFNrcmlwdGUgZWluZ2Vm/Gd0IHVuZApkYXMgUHJvZ3JhbW0gd2lyZCBzZWluIFZlcmhhbHRlbiBhdXRvbWF0aXNjaCBhYmjkbmdpZyB2b24gZGVyIFZhcmlhYmxlClxmQkRQS0dfTUFJTlRTQ1JJUFRfTkFNRVxmUCB1bmQgZGVuIEFyZ3VtZW50ZW4gaW0gQmV0cmV1ZXJza3JpcHQsIGRpZSBTaWUgbmFjaAplaW5lbSBkb3BwZWx0ZW4gU2NocuRnc3RyaWNoIPxiZXJnZWJlbiBt/HNzZW4sIGFucGFzc2VuLgouCi5TSCAiQ09ORkZJTEVcLUJFWk9HRU5FIEFVRkdBQkVOIgouUApCZWltIFVwZ3JhZGUgZWluZXMgUGFrZXRzIHdpcmQgRHBrZyBlaW4gQ29uZmZpbGUgKGVpbmUgS29uZmlndXJhdGlvbnNkYXRlaSwKYmVpIGRlciBEcGtnIGRpZSDEbmRlcnVuZ2VuIGRlcyBCZW51dHplcnMgZXJoYWx0ZW4gc29sbCkgbmljaHQgYXV0b21hdGlzY2hlbgplbnRmZXJuZW4sIGZhbGxzIHNpZSBuaWNodCBpbiBkZXIgbmV1ZXJlbiBWZXJzaW9uIGVudGhhbHRlbiBpc3QuIEVzIGdpYnQKendlaSBIYXVwdGdy/G5kZSBkYWb8cjsgZGVyIGVyc3RlIGlzdCwgZGFzcyBkaWUgQ29uZmZpbGUgdmVyc2VoZW50bGljaAplbnRmYWxsZW4gc2VpbiB1bmQgZGllIG7kY2hzdGUgVmVyc2lvbiBzaWUgd2llZGVyIGhlcnN0ZWxsZW4ga/ZubnRlIHVuZCBkaWUKQmVudXR6ZXIgZGllIMRuZGVydW5nIG5pY2h0IHdlZ2dld29yZmVuIHNlaGVuIHdvbGxlbi4gRGVyIHp3ZWl0ZSBiZXN0ZWh0CmRhcmluLCBkYXNzIFBha2V0ZW4gZXJsYXVidCB3ZXJkZW4gc29sbCwgdm9uIGVpbmVyIERwa2dcLWJldHJldXRlbiBDb25mZmlsZQphdWYgZWluZSBEYXRlaSwgZGllIHZvbiBkZW4gQmV0cmV1ZXJza3JpcHRlbiBkZXMgUGFrZXRzLCBub3JtYWxlcndlaXNlIG1pdAplaW5lbSBXZXJremV1ZyB3aWUgRGViY29uZiBvZGVyIFVjZiwgdmVyd2FsdGV0IHdpcmQsIHVtenVzdGVsbGVuLgouUApEYXMgYmVkZXV0ZXQsIGZhbGxzIGVpbiBQYWtldCBlaW5lIENvbmZmaWxlIHVtYmVuZW5uZW4gb2RlciBlbnRmZXJuZW4gc29sbCwKbXVzcyBlcyBkaWVzIGV4cGxpeml0IGR1cmNoZvxocmVuIHVuZCBcZkJkcGtnXC1tYWludHNjcmlwdFwtaGVscGVyXGZQIGthbm4gZGF6dQp2ZXJ3YW5kdCB3ZXJkZW4sIGVpbmUgc2FuZnRlIEz2c2NodW5nIHVuZCBWZXJzY2hpZWJ1bmcgdm9uIENvbmZmaWxlcwppbm5lcmhhbGIgdm9uIEJldHJldWVyc2tyaXB0ZW4gZHVyY2h6dWb8aHJlbi4KLgouU1MgIkVJTkUgQ09ORkZJTEUgRU5URkVSTkVOIgouUApGYWxscyBlaW5lIENvbmZmaWxlIGtvbXBsZXR0IGVudGZlcm50IHdpcmQsIHNvbGx0ZSBzaWUgdm9uIGRlciBQbGF0dGUKZW50ZmVybnQgd2VyZGVuLCBmYWxscyBkZXIgQmVudXR6ZXIgc2llIG5pY2h0IHZlcuRuZGVydCBoYXQuIEZhbGxzIGVzIGxva2FsZQpBbnBhc3N1bmdlbiBnaWJ0LCBzb2xsdGVuIGRpZXNlIGVyaGFsdGVuIHdlcmRlbi4gRmFsbHMgZGFzIFVwZ3JhZGUgZGVzClBha2V0cyBhYmdlYnJvY2hlbiB3aXJkLCBzb2xsdGUgZGllIG5ldWVyZGluZ3MgdmVyYWx0ZXRlIENvbmZmaWxlIG5pY2h0CnZlcnNjaHdpbmRlbi4KLlAKQWxsIGRpZXMgd2lyZCBkdXJjaCBFaW5zZXR6ZW4gZGVyIGZvbGdlbmRlbiBTaGVsbFwtU2Nobmlwc2VsIGluIGRpZQpCZXRyZXVlcnNrcmlwdGUgXGZCcHJlaW5zdFxmUCwgXGZCcG9zdGluc3RcZlAgdW5kIFxmQnBvc3RybVxmUCBpbXBsZW1lbnRpZXJ0OgouUAogICAgZHBrZ1wtbWFpbnRzY3JpcHRcLWhlbHBlciBybV9jb25mZmlsZSBcZQogICAgICAgIFxmSUNvbmZmaWxlXGZQIFxmSWxldHp0ZVZlcnNpb25cZlAgXGZJUGFrZXRcZlAgXC1cLSAiJEAiCi5QClxmSUNvbmZmaWxlXGZQIGlzdCBkZXIgRGF0ZWluYW1lIGRlciB6dSBlbnRmZXJuZW5kZW4gQ29uZmZpbGUuIFxmSWxldHp0ZVZlcnNpb25cZlAKaXN0IGRpZSBsZXR6dGUgVmVyc2lvbiBkZXMgUGFrZXRzLCBkYXMgZGllIENvbmZmaWxlIGVudGhpZWx0IChvZGVyIGRpZQpsZXR6dGUgVmVyc2lvbiBkZXMgUGFrZXRzLCBkYXMgc2ljaCBuaWNodCBkYXJ1bSBr/G1tZXJ0ZSwgZGllIHZlcmFsdGV0ZQpDb25mZmlsZSB6dSBs9nNjaGVuLCBmYWxscyBkaWVzIG5pY2h0IHNvZm9ydCBpbXBsZW1lbnRpZXJ0IHd1cmRlKS4gRmFsbHMKXGZJbGV0enRlVmVyc2lvblxmUCBsZWVyIG9kZXIgZW50ZmFsbGVuIGlzdCB3aXJkIGRpZSBEdXJjaGb8aHJ1bmcgYmVpIGplZGVtClVwZ3JhZGUgdmVyc3VjaHQuIFxmSVBha2V0XGZQIGlzdCBkZXIgUGFrZXRuYW1lLiBFciBpc3Qgb3B0aW9uYWwsIGRhIGVyCnN0YW5kYXJkbeTfaWcgbWl0ICREUEtHX01BSU5UU0NSSVBUX1BBQ0tBR0UgYmVsZWd0IGlzdCAoZGllc2UgVmFyaWFibGUgd2lyZAp2b24gRHBrZyBhdWYgZGVuIE5hbWVuIGRlcyBtb21lbnRhbiBpbiBCZWFyYmVpdHVuZyBiZWZpbmRsaWNoZW4gUGFrZXRzCmdlc2V0enQpLiBBbGxlIFBhcmFtZXRlciBkZXMgQmV0cmV1ZXJza3JpcHRzIG38c3NlbiBuYWNoILtcLVwtqyBhbiBkYXMKUHJvZ3JhbW0gd2VpdGVyZ2VsZWl0ZXQgd2VyZGVuLgouUApBa3R1ZWxsZSBJbXBsZW1lbnRpZXJ1bmc6IGltIFxmQnByZWluc3RcZlAgd2lyZCBnZXBy/GZ0LCBvYiBkaWUgQ29uZmZpbGUKZ2XkbmRlcnQgd3VyZGUuIERhbm4gd2lyZCBzaWUgZW50d2VkZXIgaW4gXGZJQ29uZmZpbGVcZlBcZkIuZHBrZ1wtcmVtb3ZlXGZQIChmYWxscwpzaWUgbmljaHQgZ2XkbmRlcnQgd3VyZGUpIG9kZXIgaW4gXGZJQ29uZmZpbGVcZlBcZkIuZHBrZ1wtYmFja3VwXGZQIChmYWxscyBzaWUKZ2XkbmRlcnQgd3VyZGUpIHVtYmVuYW5udC4gSW0gXGZCcG9zdGluc3RcZlAgd2lyZCBsZXR6dGVyZSBpbgpcZklDb25mZmlsZVxmUFxmQi5kcGtnXC1iYWtcZlAgdW1iZW5hbm50IHVuZCBhbHMgUmVmZXJlbnogYmVoYWx0ZW4sIGRhIHNpZQpCZW51dHplcuRuZGVydW5nZW4gZW50aORsdCwgd+RocmVuZCBlcnN0ZXJlIGVudGZlcm50IHdpcmQuIEZhbGxzIGRhcyBVcGdyYWRlCmRlcyBQYWtldHMgYWJnZWJyb2NoZW4gd2lyZCwgcmVpbnN0YWxsaWVydCBcZkJwb3N0cm1cZlAgZGllIHVyc3By/G5nbGljaGUKQ29uZmZpbGUuIFfkaHJlbmQgZGVzIHZvbGxzdORuZGlnZW4gTPZzY2hlbnMgd2lyZCBcZkJwb3N0cm1cZlAgYXVjaCBkaWUgYmlzaGVyCmJlaGFsdGVuZSBEYXRlaSBcZkIuZHBrZ1wtYmFrXGZQIGVudGZlcm5lbi4KLgouU1MgIkVJTkUgQ09ORkZJTEUgVU1CRU5FTk5FTiIKLlAKRmFsbHMgZWluZSBDb25mZmlsZSB2b24gZWluZW0gT3J0IHp1IGVpbmVtIGFuZGVyZW4gdmVyc2Nob2JlbiB3aXJkLCBt/HNzZW4KU2llIHNpY2hlcnN0ZWxsZW4sIGRhc3MgU2llIGF1Y2ggYWxsZSDEbmRlcnVuZ2VuIGRlcyBCZW51dHplcnMgbWl0CvxiZXJuZWhtZW4uIEFuZuRuZ2xpY2ggZXJzY2hlaW50IGRpZXMgYWxzIGVpbmZhY2hlIMRuZGVydW5nIGFtIFNrcmlwdApcZkJwcmVpbnN0XGZQLCBhbGxlcmRpbmdzIHdpcmQgZGllcyBkYXp1IGb8aHJlbiwgZGFzcyBkZXIgQmVudXR6ZXIgdm9uIERwa2cKYXVmZ2Vmb3JkZXJ0IHdpcmQsIGRpZSBCZWFyYmVpdHVuZyBkZXIgQ29uZmZpbGUgenUgYmVzdOR0aWdlbiwgb2J3b2hsIHNpZQpm/HIgZGllc2UgZ2FyIG5pY2h0IHZlcmFudHdvcnRsaWNoIHNpbmQuCi5QClNhbmZ0ZSBVbWJlbmVubnVuZyBrYW5uIGR1cmNoIEVpbnNldHplbiBkZXIgZm9sZ2VuZGVuIFNoZWxsXC1TY2huaXBzZWwgaW4gZGllCkJldHJldWVyc2tyaXB0ZSBcZkJwcmVpbnN0XGZQLCBcZkJwb3N0aW5zdFxmUCB1bmQgXGZCcG9zdHJtXGZQIGltcGxlbWVudGllcnQgd2VyZGVuOgouUAogICAgZHBrZ1wtbWFpbnRzY3JpcHRcLWhlbHBlciBtdl9jb25mZmlsZSBcZQogICAgICAgIFxmSWFsdGVDb25mZmlsZVxmUCBcZkluZXVlQ29uZmZpbGVcZlAgXGZJbGV0enRlVmVyc2lvblxmUCBcZklQYWtldFxmUCBcLVwtICIkQCIKLlAKXGZJYWx0ZUNvbmZmaWxlXGZQIHVuZCBcZkluZXVlQ29uZmZpbGVcZlAgc2luZCBkZXIgYWx0ZSB1bmQgZGVyIG5ldWUgTmFtZSBkZXIKdW16dWJlbmVubmVuZGVuIENvbmZmaWxlLiBcZklsZXR6dGVWZXJzaW9uXGZQIGlzdCBkaWUgbGV0enRlIFZlcnNpb24gZGVzClBha2V0cywgZGllIGRpZSBDb25mZmlsZSBtaXQgZGVtIGFsdGVuIE5hbWVuIGVudGhpZWx0LiBGYWxscwpcZklsZXR6dGVWZXJzaW9uXGZQIGxlZXIgb2RlciBlbnRmYWxsZW4gaXN0LCB3aXJkIGRpZSBEdXJjaGb8aHJ1bmcgYmVpIGplZGVtClVwZ3JhZGUgdmVyc3VjaHQgKEhpbndlaXM6IEVzIGlzdCBzaWNoZXJlciwgZGllIFZlcnNpb24gYW56dWdlYmVuIHVuZCBkaWUKRHVyY2hm/GhydW5nIG51ciBlaW5tYWwgdmVyc3VjaGVuIHp1IGxhc3NlbikuIFxmSVBha2V0XGZQIGlzdCBkZXIgUGFrZXRuYW1lLiBFcgppc3Qgb3B0aW9uYWwsIGRhIGVyIHN0YW5kYXJkbeTfaWcgbWl0ICREUEtHX01BSU5UU0NSSVBUX1BBQ0tBR0UgYmVsZWd0IGlzdAooZGllc2UgVmFyaWFibGUgd2lyZCB2b24gRHBrZyBhdWYgZGVuIE5hbWVuIGRlcyBtb21lbnRhbiBpbiBCZWFyYmVpdHVuZwpiZWZpbmRsaWNoZW4gUGFrZXRzIGdlc2V0enQpLiBBbGxlIFBhcmFtZXRlciBkZXMgQmV0cmV1ZXJza3JpcHRzIG38c3NlbiBuYWNoCrtcLVwtqyBhbiBkYXMgUHJvZ3JhbW0gd2VpdGVyZ2VsZWl0ZXQgd2VyZGVuLgouUApBa3R1ZWxsZSBJbXBsZW1lbnRpZXJ1bmc6IGRhcyBcZkJwcmVpbnN0XGZQIPxiZXJwcvxmdCwgb2IgZGllIENvbmZmaWxlCnZlcuRuZGVydCB3dXJkZSwgZmFsbHMgamEsIHZlcmJsZWlidCBzaWUgYW0gUGxhdHosIGFuZGVybmZhbGxzIHdpcmQgc2llIGluClxmSWFsdGVDb25mZmlsZVxmUFxmQi5kcGtnXC1yZW1vdmVcZlAgdW1iZW5hbm50LiBCZWkgZGVyIEtvbmZpZ3VyYXRpb24gZW50ZmVybnQgZGFzClxmQnBvc3RpbnN0XGZQIFxmSWFsdGVDb25mZmlsZVxmUFxmQi5kcGtnXC1yZW1vdmVcZlAgdW5kIGJlbm5lbnQgXGZJYWx0ZUNvbmZmaWxlXGZQIGluClxmSW5ldWVDb25mZmlsZVxmUCB1bSwgZmFsbHMgXGZJYWx0ZUNvbmZmaWxlXGZQIG5vY2ggZXhpc3RpZXJ0LiBGYWxscwphYm9ydFwtdXBncmFkZS9hYm9ydFwtaW5zdGFsbCBlaW50cml0dCwgYmVuZW5udCBkYXMgXGZCcG9zdHJtXGZQIHdpZWRlcgpcZklhbHRlQ29uZmZpbGVcZlBcZkIuZHBrZ1wtcmVtb3ZlXGZQIGluIFxmSWFsdGVDb25mZmlsZVxmUCB6dXL8Y2ssIGZhbGxzIG5vdHdlbmRpZy4KLgouU0ggIklOVEVHUkFUSU9OIElOIFBBS0VURSIKLlAKRGEgXGZCZHBrZ1wtbWFpbnRzY3JpcHRcLWhlbHBlclxmUCBpbSBcZkJwcmVpbnN0XGZQIHZlcndhbmR0IHdpcmQsIGJlbvZ0aWd0IGRlcgpiZWRpbmd1bmdzbG9zZSBFaW5zYXR6IGVpbmUgcHJlXC1BYmjkbmdpZ2tlaXQgKFxmSXByZVwtZGVwZW5kZW5jeVxmUCksIHVtCnNpY2hlcnp1c3RlbGxlbiwgZGFzcyBkaWUgTWluZGVzdHZlcnNpb24gdm9uIERwa2cgYnJlaXRzIGVudHBhY2t0IHd1cmRlLiBEaWUKYmVu9nRpZ3RlIFZlcnNpb24gaORuZ3Qgdm9tIHZlcndhbmR0ZW4gQmVmZWhsIGFiLCBm/HIgXGZCcm1fY29uZmZpbGVcZlAgdW5kClxmQm12X2NvbmZmaWxlXGZQIGxhdXRldCBzaWUgMS4xNS43LjI6Ci5QCiAgICBcZkJQcmVcLURlcGVuZHM6XGZQIGRwa2cgKD49IDEuMTUuNy4yKQouUApJbiB2aWVsZW4gRuRsbGVuIHNpbmQgYWJlciBkaWUgQXVzZvxocnVuZ2VuIGRlcyBQcm9ncmFtbXMgZvxyIGRhcyBQYWtldApuaWNodCBrcml0aXNjaCB1bmQgc3RhdHQgZWluZXIgcHJlXC1BYmjkbmdpZ2tlaXQgc29sbCBkYXMgUHJvZ3JhbW0gbnVyCmF1ZmdlcnVmZW4gd2VyZGVuLCBmYWxscyBiZWthbm50IGlzdCwgZGFzcyBkZXIgYmVu9nRpZ3RlIEJlZmVobCB2b20gZGVyemVpdAppbnN0YWxsaWVydGVuIERwa2cgdW50ZXJzdPx0enQgd2lyZDoKLlAKICAgIGlmIGRwa2dcLW1haW50c2NyaXB0XC1oZWxwZXIgc3VwcG9ydHMgXGZJY29tbWFuZFxmUDsgdGhlbgogICAgICAgIGRwa2dcLW1haW50c2NyaXB0XC1oZWxwZXIgXGZJY29tbWFuZFxmUCAuLi4KICAgIGZpCi4KLlNIIEFVVE9SRU4KQ29weXJpZ2h0IFwoY28gMjAxMCBSYXBoYVxbOmVdbCBIZXJ0em9nCi5icgpDb3B5cmlnaHQgXChjbyAyMDA4IEpvZXkgSGVzcwouYnIKQ29weXJpZ2h0IFwoY28gMjAwNyBHdWlsbGVtIEpvdmVyCi5icgpDb3B5cmlnaHQgXChjbyAyMDA1IFNjb3R0IEphbWVzIFJlbW5hbnQKLnNwCkRpZXMgaXN0IEZyZWllIFNvZnR3YXJlOyBsZXNlbiBTaWUgZGllIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMgpvZGVyIG5ldWVyIGb8ciBkaWUgS29waWVyYmVkaW5ndW5nZW4uIEVzIGdpYnQgS0VJTkUgSGFmdHVuZy4KCi5TSCDcQkVSU0VUWlVORwpEaWUgZGV1dHNjaGUg3GJlcnNldHp1bmcgd3VyZGUgMjAwNCwgMjAwNi0yMDExIHZvbiBIZWxnZSBLcmV1dHptYW5uCjxkZWJpYW5AaGVsZ2VmamVsbC5kZT4sIDIwMDcgdm9uIEZsb3JpYW4gUmVobmlzY2ggPGVpeG1hbkBnbXguZGU+IHVuZAoyMDA4IHZvbiBTdmVuIEpvYWNoaW0gPHN2ZW5qb2FjQGdteC5kZT4KYW5nZWZlcnRpZ3QuIERpZXNlINxiZXJzZXR6dW5nIGlzdCBGcmVpZSBEb2t1bWVudGF0aW9uOyBsZXNlbiBTaWUgZGllCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMiBvZGVyIG5ldWVyIGb8ciBkaWUgS29waWVyYmVkaW5ndW5nZW4uCkVzIGdpYnQgS0VJTkUgSEFGVFVORy4K