PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkxhIHNvcnRpZSBzaW11bHRhbullIEVjbGlwc2UgSnVubyBlc3QgbWFpbnRlbmFudCBkaXNwb25pYmxlIjsKCSRwYWdlS2V5d29yZHMJPSAiZWNsaXBzZSwgcmVsZWFzZSwgb3BlbiBzb3VyY2UsIEp1bm8iOwoJJHBhZ2VBdXRob3IJCT0gIklhbiBTa2VycmV0dCI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKQoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkKCSMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCQoJJGh0bWwgPSA8PDxFT0hUTUwKCTxzdHlsZT4KCQkucGFkZGVkbGlzdCBsaSB7CXBhZGRpbmctYm90dG9tOjdweDsJfQoJCSNtaWRjb2x1bW4gdWwgdWx7cGFkZGluZy1ib3R0b206MHB4O30KCTwvc3R5bGU+CgkKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+Cjxicj4KPHA+PHN0cm9uZz5PdHRhd2EsIENhbmFkYSAtIEp1bmUgMjcsIDIwMTI8L3N0cm9uZz4gliBDb21tZSBsZSB2ZXV0IGxhIHRyYWRpdGlvbiBkZSBmaW4gSnVpbiwgbGEgY29tbXVuYXV06SAKRWNsaXBzZSBj6WzoYnJlIGxhIHNvcnRpZSBzaW11bHRhbullIGSSRWNsaXBzZSBxdWkgY2V0dGUgYW5u6WUgc2Ugbm9tbWUgSnVuby4gUG91ciBsYSA56G1lIGFubullIGNvbnPpY3V0aXZlIGxhIGNvbW11bmF1dOkgYSBtZW7pIOAgYm9uIHBvcnQgCmNldHRlIHZlcnNpb24sIHRvdWpvdXJzIGRlIHBsdXMgZW4gcGx1cyBpbXBvcnRhbnRlLiBKdW5vIHJlcHLpc2VudGUgbGUgdHJhdmFpbCBkZSA3MiDpcXVpcGVzIGRlIHByb2pldHMgaW1wbGlxdWFudCA0NDUgY29tbWl0dGVycyBzdXIgNTUgbWlsbGlvbnMgZGUKbGlnbmVzIGRlIGNvZGUsIGV0IGxhIHBhcnRpY2lwYXRpb24gZGUgcGx1cyBkZSA0MCBvcmdhbmlzbWVzIG1lbWJyZXMgZGUgbGEgZm9uZGF0aW9uIEVjbGlwc2UuPC9wPgoKPHA+UG91ciBjZXR0ZSBzb3J0aWUgbGEgdGFpbGxlIHJlbmQgZGlmZmljaWxlIGxlIGxpc3RpbmcgZXhoYXVzdGlmIGRlcyBub3V2ZWxsZXMgZm9uY3Rpb25uYWxpdOlzLCBtYWlzIHZvaWNpIHF1ZWxxdWVzLXVuZXMgZGVzIHByaW5jaXBhbGVzIDoKPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lY2xpcHNlNC8iPkVjbGlwc2UgNC4yPC9hPiBlc3QgbWFpbnRlbmFudCBsYSBwbGF0ZWZvcm1lIGRlIHLpZulyZW5jZSBwb3VyIGxhIGNvbW11bmF1dOkgCkVjbGlwc2UuIExhIHBsYXRlZm9ybWUgRWNsaXBzZSAzLlggcGFzc2UgZW4gbW9kZSBtYWludGVuYW5jZS4gRWNsaXBzZSA0LjIgaW5jbHV0IHVuZSBjb3VjaGUgZGUgY29tcGF0aWJpbGl06SBxdWkgcGVybWV0IGF1eCBwbHVnaW5zIEVjbGlwc2UgCmV0IGFwcGxpY2F0aW9ucyBSQ1AgZXhpc3RhbnRzIGRlIGZvbmN0aW9ubmVyIHN1ciBsYSBub3V2ZWxsZSBwbGF0ZWZvcm1lLgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9yZWNvbW1lbmRlcnMvIj5Db2RlIFJlY29tbWVuZGVyczwvYT4gZXN0IHVuIG5vdXZlYXUgcHJvamV0IHF1aSByZW5kIGxhIGNvbXBs6XRpb24gZGUgY29kZSBwbHVzIAppbnRlbGxpZ2VudGUuIENvZGUgUmVjb21tZW5kZXJzIGFuYWx5c2UgY29tbWVudCBsZXMgYXBwbGljYXRpb25zIHV0aWxpc2VudCBkZXMgQVBJIEphdmEgc3DpY2lmaXF1ZXMgcG91ciBk6XZlbG9wcGVyIHVuZSBiYXNlIGRlIGRvbm7pZXMgZGUgCmJvbm5lcyBwcmF0aXF1ZXMuIEVuc3VpdGUgaWwgZm91cm5pdCBkZXMgY29uc2VpbHMgcGVydGluZW50cyBhdSBk6XZlbG9wcGV1ciBlc3NheWFudCBkZSBjb25zdHJ1aXJlIGRlcyBhcHBsaWNhdGlvbnMgdXRpbGlzYW50IGNlcyBBUEkgSmF2YS4gCkNvbW1lIEFtYXpvbiB2b3VzIHJlY29tbWFuZGUgZGVzIGFjaGF0cywgQ29kZSBSZWNvbW1lbmRlcnMgcmVjb21tYW5kZSB1bmUgYm9ubmUgdXRpbGlzYXRpb24gZJJBUEkuCjxsaT5FY2xpcHNlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj5WaXJnbzwvYT4gZW1iYXJxdWUgbGUgbm91dmVhdSBub3lhdSBOYW5vIHF1aSBmb3Vybml0IGxhIHBvc3NpYmlsaXTpIGRlIGNvbnN0cnVpcmUgZGUgdHLocyBwZXRpdGVzIGFwcGxpY2F0aW9ucyB3ZWIgYmFz6WVzIHN1ciBPU0dpLgo8bGk+TGUgbm91dmVhdSAgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9rb25la2kvIj5wcm9qZXQgS29uZWtpPC9hPiBmb3Vybml0IHVuIElERSBwb3VyIEx1YS4gTHVhIGVzdCB1biAKbGFuZ2FnZSBkZSBzY3JpcHQsIHBvdXZhbnQg6nRyZSBlbWJhcnF16SwgcG9wdWxhaXJlIGRhbnMgbJJpbmR1c3RyaWUgZHUgamV1IGV0IGRlIHBsdXMgZW4gcGx1cyB1dGlsaXPpIGRhbnMgbJJpbmR1c3RyaWUgTTJNLiBLb25la2kgZXN0IHVuZSAKcGFydCBpbXBvcnRhbnRlIGRlIGySaW5pdGlhdGl2ZSBhdXRvdXIgZGUgbJJJbmR1c3RyeSBXb3JraW5nIEdyb3VwIE0yTS4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvWHRleHQvIj5YdGV4dDwvYT4gYSBham91dOkgbGUgc3VwcG9ydCBwb3VyIGxlIGTpYm9nYWdlIGludOlncukgZGUgRFNMcyBiYXPpcyBzdXIgZGVzIEpWTSB1dGlsaXNhbnQgWHRleHQsIGV0IHVuZSBwbHVzIGZpbmUgaW506WdyYXRpb24gYXZlYyBsZSBKYXZhIERldmVsb3BtZW50IFRvb2xzIChKRFQpLgo8bGk+RWNsaXBzZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VxdWlub3gvIj5FcXVpbm94PC9hPiBlbWJhcnF1ZSBskmltcGzpbWVudGF0aW9uIGRlIHLpZulyZW5jZSBkZXMgbm91dmVsbGVzIHNw6WNpZmljYXRpb25zIE9TR2kgUjUuCjxsaT5EZXV4IG5vdXZlYXV4IHBhY2thZ2VzIG9udCDpdOkgYWpvdXTpcyA6IDEpIFVuIElERSBFY2xpcHNlIHBvdXIgROl2ZWxvcHBldXIgZGUgTG9naWNpZWwgQXV0b21vYmlsZSBjb250ZW5hbnQgbGVzIG91dGlscyBldCBsZXMgCmZyYW1ld29ya3MgbuljZXNzYWlyZXMgcG91ciBsZSBk6XZlbG9wcGVtZW50IGRlIGxvZ2ljaWVscyBhdXRvbW9iaWxlcyBlbWJhcnF16XMuIElsIGVzdCBsZSBy6XN1bHRhdCBkknVuIHRyYXZhaWwgY29tcGzpdOkgcGFyIGySRWNsaXBzZSAKQXV0b21vdGl2ZSBJbmR1c3RyeSBXb3JraW5nIEdyb3VwLiAyKSBFY2xpcHNlIGZvciBNb2JpbGUgRGV2ZWxvcGVycyBzaW1wbGlmaWUsIHBvdXIgbGVzIGTpdmVsb3BwZXVycywgbGUgdOls6WNoYXJnZW1lbnQgZXQgbJJ1dGlsaXNhdGlvbiAKZJJFY2xpcHNlIGF2ZWMgbm9tYnJlIGRlIFNESyBtb2JpbGVzLCBpbmNsdWFudCBsZSBTREsgQW5kcm9pZC4KPC91bD4KPC9wPgo8cD6rIENoYXF1ZSBhbm7pZSBskmVuZ2FnZW1lbnQgZXQgbGUgZOl2b3VlbWVudCBkZXMgY29tbWl0dGVycyBFY2xpcHNlIGTpbW9udHJlbnQgcXWSRWNsaXBzZSBlc3QgdW4gZXhlbXBsZSBy6XVzc2kgZGUgZOl2ZWxvcHBlbWVudCBPcGVuIApTb3VyY2UgZGlzdHJpYnXpIHF1aSBsaXZyZSBy6Wd1bGnocmVtZW50IHBsdXNpZXVycyBkaXphaW5lcyBkZSBtaWxsaW9ucyBkZSBsaWduZXMgZGUgY29kZSDgIGySaGV1cmUgcHLpdnVlILsgZXhwbGlxdWUgTWlrZSBNaWxpbmtvdmljaCwgCkRpcmVjdGV1ciBFeOljdXRpZiBkZSBsYSBmb25kYXRpb24gRWNsaXBzZS4gqyBKZSBzdWlzIHBhcnRpY3VsaehyZW1lbnQgaGV1cmV1eCBxdWUgSnVubyBzb2l0IGJhc+kgc3VyIGxhIHBsYXRlZm9ybWUgRWNsaXBzZSA0LjIsIGZvdXJuaXNzYW50IAphaW5zaSB1bmUgcGxhdGVmb3JtZSBzdGFibGUgcG91ciBmYWlyZSBwZXJkdXJlciBskmlubm92YXRpb24gZGFucyBsYSBjb21tdW5hdXTpIEVjbGlwc2UuILs8L3A+CjxwPlBsdXMgZJJpbmZvcm1hdGlvbnMgc3VyIEp1bm8sIHNlcyBwcm9qZXRzLCBldCBsZXMgdOls6WNoYXJnZW1lbnRzIHNvbnQgZGlzcG9uaWJsZXMg4CBskmFkcmVzc2Ugc3VpdmFudGUgOiA8YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvanVuby8iPmVjbGlwc2Uub3JnL2p1bm88L2E+LjwvcD4KCgk8L2Rpdj4KCgk8IS0tIHJlbW92ZSB0aGUgZW50aXJlIDxkaXY+IHRhZyB0byBvbWl0IHRoZSByaWdodCBjb2x1bW4hICAtLT4KCTxkaXYgaWQ9InJpZ2h0Y29sdW1uIj4KCQk8ZGl2IGNsYXNzPSJzaWRlaXRlbSI+CgkJCTxoNj5SZWxhdGVkIExpbmtzPC9oNj4KCQkJPHVsPgoJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9lY2xpcHNlLm9yZy9qdW5vLyI+SnVubzwvYT48L2xpPgoJCQk8L3VsPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2PgoKRU9IVE1MOwoKICAgICRodG1sID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtbCwgIkhUTUwtRU5USVRJRVMiLCAiSVNPLTg4NTktMSIpOwogICAgJHBhZ2VUaXRsZSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJHBhZ2VUaXRsZSwgIkhUTUwtRU5USVRJRVMiLCAiSVNPLTg4NTktMSIpOwoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/Pgo8P3BocAovKgogKiBDcmVhdGVkIG9uIDIwLUphbi0yMDA2CiAqCiAqIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIGZpbGUgZ28gdG8KICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBQSFBlY2xpcHNlIC0gUEhQIC0gQ29kZSBUZW1wbGF0ZXMKICovCj8+Cgo=