LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogU3dlZGlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA3IERhbmllbCBOeWxhbmRlciA8cG9AZGFuaWVsbnlsYW5kZXIuc2U+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfU1dFRElTSCwgU1VCTEFOR19ORVVUUkFMCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiS29uZmlndXJlcmEiLCBJRENfQVVESU9fQ09ORklHVVJFCiAgICBFTkQKRU5ECgpJRERfQUJPVVRDRkcgRElBTE9HRVggMCwgMCwgMjYwLCAyNzAKU1RZTEUgV1NfQ0hJTEQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgIFBBQ0tBR0VfU1RSSU5HLElEQ19TVEFUSUMsMTE5LDE3LDEyMCw4CiAgICBDT05UUk9MICAgICAgICAgSURCX1dJTkUsSURDX1NUQVRJQywiU3RhdGljIixTU19CSVRNQVAgLDE1LDE3LDE1NywxMTEKICAgIExURVhUICAgICAgICAgICAiaHR0cDovL3d3dy53aW5laHEub3JnLyIsSURDX1NUQVRJQywxMTksMzEsMTA2LDgKICAgIExURVhUICAgICAgICAgICAiRGV0dGEgYmlibGlvdGVrIORyIGZyaSBwcm9ncmFtdmFyYS4gRHUga2FuIGRpc3RyaWJ1ZXJhIGRldCBvY2gvZWxsZXIgbW9kaWZpZXJhIGRldCB1bmRlciB2aWxsa29yZW4gaSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHB1YmxpY2VyYWQgYXYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbnRpbmdlbiB2ZXJzaW9uIDIuMSBlbGxlciAob20gZHUgc+UgdmlsbCkgbuVnb24gc2VuYXJlIHZlcnNpb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKICAgIEdST1VQQk9YICAgICAgICAiIFdpbmRvd3MgUmVnaXN0cmF0aW9uIEluZm9ybWF0aW9uICIsIElEQ19TVEFUSUMsIDE1LCAxMTAsIDIzMCwgNTUKICAgIExURVhUICAgICAgICAgICAiT3duZXI6IiwgSURDX1NUQVRJQywgMjIsIDEyNiwgNDAsIDIwCiAgICBMVEVYVCAgICAgICAgICAgIk9yZ2FuaXphdGlvbjoiLCBJRENfU1RBVElDLCAyMiwgMTQwLCA1MCwgMjAKICAgIEVESVRURVhUICAgICAgICBJRENfQUJUX09XTkVSLCA3NSwgMTI2LCAxNjAsIDEzLCBFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIEVESVRURVhUICAgICAgICBJRENfQUJUX09SRywgNzUsIDE0MCwgMTYwLCAxMywgRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCkVORAoKSUREX0FQUENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgUHJvZ3JhbWluc3TkbGxuaW5nYXIgIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJXaW5lIGthbiBpbWl0ZXJhIG9saWthIFdpbmRvd3MtdmVyc2lvbmVyIGb2ciB2YXJqZSBwcm9ncmFtLiAgRGVuIGjkciBmbGlrZW4g5HIgbORua2FkIHRpbGwgZmxpa2FybmEgQmlibGlvdGVrIG9jaCBHcmFmaWsgZvZyIGF0dCBs5XRhIGRpZyDkbmRyYSBpbnN05GxsbmluZ2FyIGkgZGUgZmxpa2FybmEgb2Nrc+UsIGFudGluZ2VuIHN5c3RlbWJyZWRhIGVsbGVyIHBlciBwcm9ncmFtLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiUHJvZ3JhbSIsSURDX0FQUF9MSVNUVklFVywiU3lzTGlzdFZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExWU19MSVNUIHwgTFZTX1NJTkdMRVNFTCB8IExWU19TSE9XU0VMQUxXQVlTLAogICAgICAgICAgICAgICAgICAgIDE1LDUwLDIzMCwxNTAKICAgIFBVU0hCVVRUT04JICAgICImTORnZyB0aWxsIHByb2dyYW0iLElEQ19BUFBfQUREQVBQLCA5MCwyMDQsNzUsMTQKICAgIFBVU0hCVVRUT04JICAgICImVGEgYm9ydCBwcm9ncmFtIixJRENfQVBQX1JFTU9WRUFQUCwgMTcwLDIwNCw3NSwxNAogICAgTFRFWFQgICAgICAgICAgICImV2luZG93cy12ZXJzaW9uOiIsSURDX1NUQVRJQywxNywyMjYsNTgsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19XSU5WRVIsODMsMjI0LDE2Myw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICIgRvZuc3Rlcmluc3TkbGxuaW5nYXIgIixJRENfU1RBVElDLDgsNCwyNDQsODQKICAgIENPTlRST0wgICAgICJUaWxs5XQgRGlyZWN0WC1wcm9ncmFtIGF0dCBzdG9wcGEgJm11c2VuIHNvbSBs5G1uYXIgZGVzcyBm9m5zdGVyIixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIwLDIzMCw4CiAgICBDT05UUk9MICAgICAiQWxsb3cgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvICZkZWNvcmF0ZSB0aGUgd2luZG93cyIsSURDX0VOQUJMRV9ERUNPUkFURUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwzMiwyMzAsOAogICAgQ09OVFJPTCAgICAgIlRpbGzldCAmZvZuc3RlcmhhbnRlcmFyZW4gYXR0IHN0eXJhIGb2bnN0cmVuIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSw0NCwyMzAsOAogICAgQ09OVFJPTCAgICAgIkVtdWxlcmEgZXR0IHZpcnR1ZWxsdCBza3JpdiZib3JkIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDU2LDIzMCw4CiAgICBMVEVYVCAgICAgICAiU3RvcmxlayBw5SAmc2tyaXZib3JkOiIsSURDX0RFU0tUT1BfU0laRSwxNSw3MCw0NCw4LFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAiWCIsSURDX0RFU0tUT1BfQlksMTA5LDcwLDgsOCxXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfV0lEVEgsNjQsNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfSEVJR0hULDExNyw2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECgogICAgR1JPVVBCT1ggICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCw5NSwyNDQsNDkKICAgIExURVhUICAgICAgICJTdPZkIGb2ciAmVmVydGV4IFNoYWRlcjogIixJRENfU1RBVElDLDE1LDExMCw4MCwzMgogICAgQ09NQk9CT1ggICAgSURDX0QzRF9WU0hBREVSX01PREUsMTAwLDEwOCwxNDUsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAiVGlsbOV0ICZQaXhlbCBTaGFkZXIgKG9tIGjlcmR2YXJhbiBzdPZkcykiLElEQ19EM0RfUFNIQURFUl9NT0RFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTI2LDIzMCwxMAoKICAgIEdST1VQQk9YICAgICIgU2vkcm0mdXBwbPZzbmluZyAiLElEQ19TVEFUSUMsOCwxNTEsMjQ0LDkzCiAgICBDT05UUk9MICAgICAiIiwgSURDX1JFU19UUkFDS0JBUiwgIm1zY3Rsc190cmFja2JhcjMyIixXU19UQUJTVE9QLDEyLDE2MSwxODcsMTUKICAgIEVESVRURVhUICAgIElEQ19SRVNfRFBJRURJVCwyMDQsMTYxLDIzLDEzLEVTX05VTUJFUnxXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAiZHBpIixJRENfU1RBVElDLDIzNSwxNjMsMTAsOAogICAgTFRFWFQgICAgICAgIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCB1c2luZyAxMCBwb2ludCBUYWhvbWEiLElEQ19SRVNfRk9OVF9QUkVWSUVXLDE1LDE4MSwyMzAsNTUKRU5ECgpJRERfRExMQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBETEwt5XNpZG9z5HR0bmluZ2FyICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJEeW5hbWljIExpbmsgTGlicmFyaWVzIGthbiBhbmdlcyBpbmRpdmlkdWVsbHQgYXR0IHZhcmEgYW50aW5nZW4gaW5ieWdnZGEgKHRpbGxoYW5kYWjlbGxzIGF2IFdpbmUpIGVsbGVyIHVyc3BydW5nbGlnYSAodGFnbmEgZnLlbiBXaW5kb3dzIGVsbGVyIHRpbGxoYW5kYWjlbGxzIGF2IHByb2dyYW1tZXQpLiIKICAgICAgICAgICAgICAgICAgICAsSURDX1NUQVRJQywxNiwxNiwyMjAsMzIKICAgIExURVhUICAgICAgICAgICAiJk55IOVzaWRvc+R0dG5pbmcgZvZyIGJpYmxpb3RlazoiLElEQ19TVEFUSUMsMTYsNTgsMTAwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRExMQ09NQk8sMTYsNjgsMTQwLDE0LENCU19EUk9QRE9XTiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQgfCBDQlNfTE9XRVJDQVNFCiAgICBQVVNIQlVUVE9OICAgICAgIiZM5GdnIHRpbGwiLElEQ19ETExTX0FERERMTCwgMTY0LDY4LDgyLDEzLEJTX0RFRlBVU0hCVVRUT04KICAgIExURVhUICAgICAgICAgICAiQmVmaW50bGlnYSAm5XNpZG9z5HR0bmluZ2FyOiIsSURDX1NUQVRJQywxNiw4NiwxMDAsOAogICAgTElTVEJPWCAgICAgICAgIElEQ19ETExTX0xJU1QsMTYsOTYsMTQwLDE0MCxXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfVlNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICJSJmVkaWdlcmEiLElEQ19ETExTX0VESVRETEwsMTY0LDk2LDgyLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZUYSBib3J0IixJRENfRExMU19SRU1PVkVETEwsMTY0LDExNCw4MiwxNApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlcmEg5XNpZG9z5HR0bmluZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgSW5s5HNuaW5nc29yZG5pbmcgIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICImSW5ieWdnZCAoV2luZSkiLElEQ19SQURfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAsMTYsMTQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJlVyc3BydW5nbGlnIChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwyNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJJbmImeWdnZCBzZWRhbiBVcnNwcnVuZ2xpZyIsSURDX1JBRF9CVUlMVElOX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDM0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIlVycyZwcnVuZ2xpZyBzZWRhbiBJbmJ5Z2dkIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJkluYWt0aXZlcmEiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDU0LDc1LDEwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCw1Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRW5oZXRzJm1hcHBuaW5nYXIgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2eSIsSURDX0xJU1RfRFJJVkVTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDE4LDIzMiw3NgogICAgUFVTSEJVVFRPTiAgICAgICImTORnZyB0aWxsLi4uIixJRENfQlVUVE9OX0FERCwxNSw5OCwzNywxNAogICAgUFVTSEJVVFRPTiAgICAgICImVGEgYm9ydCIsSURDX0JVVFRPTl9SRU1PVkUsNTYsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXV0byZkZXRlY3QuLi4iLElEQ19CVVRUT05fQVVUT0RFVEVDVCwxOTcsOTgsNDksMTQKCiAgICAvKiBlZGl0aW5nIGRyaXZlIGRldGFpbHMgKi8KICAgIExURVhUICAgICAgICAgICAiJlP2a3bkZzoiLElEQ19TVEFUSUMsMTUsMTIzLDIwLDkKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9QQVRILDQxLDEyMCwxNjAsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZCbORkZHJhLi4uIixJRENfQlVUVE9OX0JST1dTRV9QQVRILDIwNiwxMjAsNDAsMTMKCiAgICBMVEVYVCAgICAgICAgICAgIiZUeXA6IixJRENfU1RBVElDX1RZUEUsMTUsMTM4LDIxLDEwCiAgICBDT01CT0JPWCAgICAgICAgSURDX0NPTUJPX1RZUEUsNDEsMTM1LDc3LDYwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIExURVhUICAgICAgICAgICAiRXRpa2V0dCBvY2ggc2VyaWVudW1tZXIiLElEQ19MQUJFTFNFUklBTF9TVEFUSUMsMTUsMTU1LDk1LDEwCgogICAgUFVTSEJVVFRPTiAgICAgICJWaXNhICZhdmFuY2VyYXQiLElEQ19CVVRUT05fU0hPV19ISURFX0FEVkFOQ0VELDE4NiwxMzYsNjAsMTMKICAgIENPTlRST0wgICAgICAgICAiSWRlbnRpZmllcmEgYXV0b21hdGlza3QgJmZy5W4gZW5oZXQ6IixJRENfUkFESU9fQVVUT0RFVEVDVCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTY2LDkzLDEwCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfREVWSUNFLDI3LDE3NiwxNzQsMTMsRVNfQVVUT0hTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiQnJvJndzZS4uLiIsSURDX0JVVFRPTl9CUk9XU0VfREVWSUNFLDIwNiwxNzYsNDAsMTMKICAgIENPTlRST0wgICAgICAgICAiVGlsbGRlbGEgJm1hbnVlbGx0OiIsSURDX1JBRElPX0FTU0lHTiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTk1LDY5LDEwCgogICAgTFRFWFQgICAgICAgICAgICImRXRpa2V0dDoiLElEQ19TVEFUSUNfTEFCRUwsMzMsMjA4LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfTEFCRUwsNjMsMjA1LDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTJmVyaWVucjoiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw2MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJWaXNhICZwdW5rdGZpbGVyIixJRENfU0hPV19ET1RfRklMRVMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw4LDI2MCwyMzAsOApFTkQKCklERF9BVURJT0NGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRW5oZXRzdmFsICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICJW5GxqIGVuIGxqdWRkcml2cnV0aW4gZ2Vub20gYXR0IGtyeXNzYSBpIHJ1dGFuIGb2ciBkZW4g9m5za2FkZSBkcml2cnV0aW5lbi4gIEluYWt0aXZlcmEgbGp1ZCBnZW5vbSBhdHQgaW50ZSB25GxqYSBu5WdvbiBkcml2cnV0aW4uIFZhbCBhdiBmbGVyYSBkcml2cnV0aW5lciByZWtvbW1lbmRlcmFzIGludGUuIEtvbmZpZ3VyZXJhIGVuIGRyaXZydXRpbiBnZW5vbSBhdHQgaPZnZXJrbGlja2EgcOUgZGVuLiIsSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiRW5oZXRlciIsSURDX0FVRElPX1RSRUUsIlN5c1RyZWVWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsMTUsNTAsMTQwLDE0MAogICAgUFVTSEJVVFRPTiAgICAgICImVGVzdGEgbGp1ZCIsSURDX0FVRElPX1RFU1QsMTcwLDUwLDU5LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiJktvbnRyb2xscGFuZWwiLElEQ19BVURJT19DT05UUk9MX1BBTkVMLDE3MCw3MCw1OSwxNAogICAgR1JPVVBCT1ggICAgICAgICIgRGlyZWN0U291bmQgIixJRENfU1RBVElDLDgsMjA1LDI0NCw2MAogICAgTFRFWFQJICAgICImSOVyZHZhcnVhY2NlbGVyZXJpbmc6ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImU2FtcGxpbmdzZnJla3ZlbnMgc29tIHN0YW5kYXJkOiIsSURDX1NUQVRJQywxNSwyMzIsNzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfUkFURVMsOTAsMjMwLDQyLDc2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImQml0YXIgcGVyIHNhbXBsaW5nIHNvbSBzdGFuZGFyZDoiLElEQ19TVEFUSUMsMTM3LDIzMiw4MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9CSVRTLDIyMCwyMzAsMzAsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAgICAgIkRyaXZydXRpbnMmZW11bGVyaW5nIixJRENfRFNPVU5EX0RSVl9FTVVMLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjUwLDIzMCwxMApFTkQKCklERF9ERVNLVE9QX0lOVEVHUkFUSU9OIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBVdHNlZW5kZSAiLElEQ19TVEFUSUMsOCw0LDI0NCwxMDYKICAgIExURVhUICAgICAgICAgICAiJlRlbWE6IixJRENfU1RBVElDLDE1LDE2LDEzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1RIRU1FQ09NQk8sMTUsMjQsMTMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICImSW5zdGFsbGVyYSB0ZW1hLi4uIixJRENfVEhFTUVfSU5TVEFMTCwxNTIsMjMsOTMsMTQKICAgIExURVhUICAgICAgICAgICAiJkbkcmc6IixJRENfVEhFTUVfQ09MT1JURVhULDE1LDQwLDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX0NPTE9SQ09NQk8sMTUsNDgsMTEyLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImU3RvcmxlazoiLElEQ19USEVNRV9TSVpFVEVYVCwxMzUsNDAsMTEwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfU0laRUNPTUJPLDEzNSw0OCwxMTAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIk9iJmpla3Q6IixJRENfU1RBVElDLDE1LDY0LDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1NZU1BBUkFNX0NPTUJPLDE1LDc0LDExMiwxMjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQKICAgIExURVhUICAgICAgICAgICAiRuQmcmc6IixJRENfU1lTUEFSQU1fQ09MT1JfVEVYVCwxMzUsNjQsMjUsOCxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICIiLElEQ19TWVNQQVJBTV9DT0xPUiwxMzUsNzQsMjUsMTMsV1NfRElTQUJMRUQgfCBCU19PV05FUkRSQVcKICAgIExURVhUICAgICAgICAgICAiU3Qmb3JsZWs6IixJRENfU1lTUEFSQU1fU0laRV9URVhULDE2Niw2NCwzMCw4LFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX1NZU1BBUkFNX1NJWkUsMTY2LDc0LDIzLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1NZU1BBUkFNX1NJWkVfVUQsVVBET1dOX0NMQVNTLFVEU19TRVRCVUREWUlOVCB8IFdTX0RJU0FCTEVELDE4Nyw3NCwxNSwxMwogICAgUFVTSEJVVFRPTiAgICAgICImVHlwc25pdHQiLElEQ19TWVNQQVJBTV9GT05ULDIwOCw3NCwzNywxMyxXU19ESVNBQkxFRAogICAgR1JPVVBCT1ggICAgICAgICIgUyZoZWxsLW1hcHAgIixJRENfU1RBVElDLDgsMTE0LDI0NCwxMDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZ5IixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIiZM5G5rYSB0aWxsOiIsSURDX0xJTktfU0ZQQVRILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QfFdTX0RJU0FCTEVELDE1LDE5NSw1MCwxMwogICAgRURJVFRFWFQgICAgICAgICBJRENfRURJVF9TRlBBVEgsNjUsMTk1LDE0NSwxMyxFU19BVVRPSFNDUk9MTHxXU19UQUJTVE9QfFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIkImbORkZHJhIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19UQUJfQVBQTElDQVRJT05TICAgICJQcm9ncmFtIgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIkJpYmxpb3RlayIKICAgIElEU19UQUJfRFJJVkVTICAgICAgICAgICJFbmhldGVyIgogICAgSURTX0NIT09TRV9QQVRIICAgICAgICAgIlbkbGogdW5peC1t5WxrYXRhbG9nLCB0YWNrLiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJE9mxqICZhdmFuY2VyYXQiCiAgICBJRFNfU0hPV19BRFZBTkNFRCAgICAgICAiVmlzYSAmYXZhbmNlcmF0IgogICAgSURTX05PVEhFTUUgICAgICAgICAgICAgIihJbmdldCB0ZW1hKSIKICAgIElEU19UQUJfR1JBUEhJQ1MgICAgICAgICJHcmFmaWsiCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIlNrcml2Ym9yZHNpbnRlZ3JhdGlvbiIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICJManVkIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIk9tIgogICAgSURTX1dJTkVDRkdfVElUTEUgICAgICAgIktvbmZpZ3VyYXRpb24gYXYgV2luZSIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJXaW5lLWtvbmZpZ3VyYXRpb24gZvZyICVzIgogICAgSURTX1RIRU1FRklMRSAgICAgICAgICAgIlRlbWFmaWxlciIKICAgIElEU19USEVNRUZJTEVfU0VMRUNUICAgICJW5GxqIGVuIHRlbWFmaWwiCiAgICBJRFNfQVVESU9fTUlTU0lORyAgICAgICAiRGV0IGZpbm5zIGluZ2VuIGxqdWRkcml2cnV0aW4gZvZyIG7kcnZhcmFuZGUgYW5naXZlbiBpIHJlZ2lzdHJldC5cblxuRW4gcmVrb21tZW5kZXJhZCBkcml2cnV0aW4gaGFyIHZhbHRzIOV0IGRpZy5cbkR1IGthbiBhbnbkbmRhIGRlbm5hIGRyaXZydXRpbiBlbGxlciB25GxqYSBlbiBhbm5hbiB0aWxsZ+RuZ2xpZyBkcml2cnV0aW4uXG5cbkR1IG3lc3RlIGtsaWNrYSBw5SBWZXJrc3TkbGwgZvZyIGF0dCB2YWxldCBza2EgYvZyamEgZ+RsbGEuIgogICAgSURTX1NIRUxMX0ZPTERFUiAgICAgICAgIlNoZWxsLW1hcHAiCiAgICBJRFNfTElOS1NfVE8gICAgICAgICAgICAiTORua2FyIHRpbGwiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19ETExfV0FSTklORyAgICAgICAgICLEbmRyaW5nIGF2IGlubORzbmluZ3NvcmRuaW5nZW4gZvZyIGRldHRhIGJpYmxpb3RlayByZWtvbW1lbmRlcmFzIGludGUuXG7EciBkdSBz5GtlciBw5SBhdHQgZHUgdmlsbCBn9nJhIGRldHRhPyIKICAgIElEU19ETExfV0FSTklOR19DQVBUSU9OICJWYXJuaW5nOiBzeXN0ZW1iaWJsaW90ZWsiCiAgICBJRFNfRExMX05BVElWRSAgICAgICAgICAidXJzcHJ1bmdsaWciCiAgICBJRFNfRExMX0JVSUxUSU4gICAgICAgICAiaW5ieWdnZCIKICAgIElEU19ETExfTkFUSVZFX0JVSUxUSU4gICJ1cnNwcnVuZ2xpZywgaW5ieWdnZCIKICAgIElEU19ETExfQlVJTFRJTl9OQVRJVkUgICJpbmJ5Z2dkLCB1cnNwcnVuZ2xpZyIKICAgIElEU19ETExfRElTQUJMRUQgICAgICAgICJpbmFrdGl2ZXJhZCIKICAgIElEU19ERUZBVUxUX1NFVFRJTkdTICAgICJTdGFuZGFyZGluc3TkbGxuaW5nYXIiCiAgICBJRFNfRVhFQ1VUQUJMRV9GSUxURVIgICAiV2luZS1wcm9ncmFtICgqLmV4ZSwqLmV4ZS5zbylcMCouZXhlOyouZXhlLnNvXDAiCiAgICBJRFNfVVNFX0dMT0JBTF9TRVRUSU5HUyAiQW525G5kIGdsb2JhbGEgaW5zdORsbG5pbmdhciIKICAgIElEU19TRUxFQ1RfRVhFQ1VUQUJMRSAgICJW5GxqIGVuIGv2cmJhciBmaWwiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19TSEFERVJfTU9ERV9IQVJEV0FSRSAgICAiSOVyZHZhcmEiCiAgICBJRFNfU0hBREVSX01PREVfTk9ORSAgICAgICAgIkluZ2VuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRFJJVkVfVU5LTk9XTiAgICAgICAgICAgIkF1dG9kZXRlY3QiCiAgICBJRFNfRFJJVkVfRklYRUQgICAgICAgICAgICAgIkxva2FsIGjlcmRkaXNrIgogICAgSURTX0RSSVZFX1JFTU9URSAgICAgICAgICAgICJO5HR2ZXJrc3V0ZGVsbmluZyIKICAgIElEU19EUklWRV9SRU1PVkFCTEUgICAgICAgICAiRGlza2V0dCIKICAgIElEU19EUklWRV9DRFJPTSAgICAgICAgICAgICAiQ2Qtcm9tIgogICAgSURTX0RSSVZFX0xFVFRFUlNfRVhDRUVERUQgICJEdSBrYW4gaW50ZSBs5GdnYSB0aWxsIGZsZXIgZW5oZXRlci5cblxuVmFyamUgZW5oZXQgbeVzdGUgaGEgZW4gYm9rc3RhdiwgZnLlbiBBIHRpbGwgWiwgc+UgZHUga2FuIGludGUgaGEgZmxlciDkbiAyNiIKICAgIElEU19TWVNURU1fRFJJVkVfTEFCRUwgICAgICAiU3lzdGVtZW5oZXQiCiAgICBJRFNfQ09ORklSTV9ERUxFVEVfQyAgICAgICAgIsRyIGR1IHPka2VyIHDlIGF0dCBkdSB2aWxsIHRhIGJvcnQgZW5oZXRlbiBDP1xuXG5EZSBmbGVzdGEgV2luZG93cy1wcm9ncmFtIGb2cnbkbnRhciBhdHQgZW5oZXQgQyBmaW5ucywgb2NoIGtvbW1lciBhdHQgZPYgb20gZGVuIGludGUgZmlubnMuIE9tIGR1IGZvcnRz5HR0ZXIgYvZyIGR1IGtvbW1hIGlo5WcgYXR0IOV0ZXJza2FwYSBkZW4hIgogICAgSURTX0NPTF9EUklWRUxFVFRFUiAgICAgICAgICJCb2tzdGF2IgogICAgSURTX0NPTF9EUklWRU1BUFBJTkcgICAgICAgICJFbmhldHNtYXBwbmluZyIKICAgIElEU19OT19EUklWRV9DICAgICAgICAgICAgICAiRHUgc2FrbmFyIGVuaGV0IEMuIERldCBo5HIg5HIgaW50ZSBz5SBicmEuXG5cbktvbSBpaOVnIGF0dCBrbGlja2EgcOUgkUzkZ2cgdGlsbJIgaSBmbGlrZW4gRW5oZXRlciBm9nIgYXR0IHNrYXBhIGVuIVxuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQUNDRUxfRlVMTCAgICAgICAgICAgICAgIkZ1bGxzdORuZGlnIgogICAgSURTX0FDQ0VMX1NUQU5EQVJEICAgICAgICAgICJTdGFuZGFyZCIKICAgIElEU19BQ0NFTF9CQVNJQyAgICAgICAgICAgICAiR3J1bmRs5GdnYW5kZSIKICAgIElEU19BQ0NFTF9FTVVMQVRJT04gICAgICAgICAiRW11bGVyaW5nIgogICAgSURTX0RSSVZFUl9BTFNBICAgICAgICAgICAgICJBTFNBLWRyaXZydXRpbiIKICAgIElEU19EUklWRVJfRVNPVU5EICAgICAgICAgICAiRXNvdW5ELWRyaXZydXRpbiIKICAgIElEU19EUklWRVJfT1NTICAgICAgICAgICAgICAiT1NTLWRyaXZydXRpbiIKICAgIElEU19EUklWRVJfSkFDSyAgICAgICAgICAgICAiSkFDSy1kcml2cnV0aW4iCiAgICBJRFNfRFJJVkVSX05BUyAgICAgICAgICAgICAgIk5BUy1kcml2cnV0aW4iCiAgICBJRFNfRFJJVkVSX0FVRElPSU8gICAgICAgICAgIkF1ZGlvIElPLWRyaXZydXRpbiAoU29sYXJpcykiCiAgICBJRFNfRFJJVkVSX0NPUkVBVURJTyAgICAgICAgIkNvcmVBdWRpbyBEcml2ZXIiCiAgICBJRFNfT1BFTl9EUklWRVJfRVJST1IgICAgICAgIkt1bmRlIGludGUg9nBwbmEgJXMhIgogICAgSURTX1NPVU5ERFJJVkVSUyAgICAgICAgICAgICJManVkZHJpdnJ1dGluZXIiCiAgICBJRFNfREVWSUNFU19XQVZFT1VUICAgICAgICAgIldhdmUgT3V0LWVuaGV0ZXIiCiAgICBJRFNfREVWSUNFU19XQVZFSU4gICAgICAgICAgIldhdmUgSW4tZW5oZXRlciIKICAgIElEU19ERVZJQ0VTX01JRElPVVQgICAgICAgICAiTUlESSBPdXQtZW5oZXRlciIKICAgIElEU19ERVZJQ0VTX01JRElJTiAgICAgICAgICAiTUlESSBJbi1lbmhldGVyIgogICAgSURTX0RFVklDRVNfQVVYICAgICAgICAgICAgICJBdXgtZW5oZXRlciIKICAgIElEU19ERVZJQ0VTX01JWEVSICAgICAgICAgICAiTWl4ZXJlbmhldGVyIgogICAgSURTX1VOQVZBSUxBQkxFX0RSSVZFUiAgICAgICJIaXR0YWRlIGRyaXZydXRpbiBpIHJlZ2lzdHJldCBzb20gaW50ZSBmaW5ucyB0aWxsZ+RuZ2xpZyFcblxuVGEgYm9ydCCTJXOUIGZy5W4gcmVnaXN0cmV0PyIKICAgIElEU19XQVJOSU5HICAgICAgICAgICAgICAgICAiVmFybmluZyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURDX1NZU1BBUkFNU19CVVRUT04gICAgICAgICAgICAiQ29udHJvbHMgQmFja2dyb3VuZCIKICAgIElEQ19TWVNQQVJBTVNfQlVUVE9OX1RFWFQgICAgICAgIkNvbnRyb2xzIFRleHQiCiAgICBJRENfU1lTUEFSQU1TX0RFU0tUT1AgICAgICAgICAgICJTa3JpdmJvcmQiCiAgICBJRENfU1lTUEFSQU1TX01FTlUgICAgICAgICAgICAgICJNZW55YmFrZ3J1bmQiCiAgICBJRENfU1lTUEFSQU1TX01FTlVfVEVYVCAgICAgICAgICJNZW55dGV4dCIKICAgIElEQ19TWVNQQVJBTVNfU0NST0xMQkFSICAgICAgICAgIlNjcm9sbGJhciIKICAgIElEQ19TWVNQQVJBTVNfU0VMRUNUSU9OICAgICAgICAgIlNlbGVjdGlvbiBCYWNrZ3JvdW5kIgogICAgSURDX1NZU1BBUkFNU19TRUxFQ1RJT05fVEVYVCAgICAiU2VsZWN0aW9uIFRleHQiCiAgICBJRENfU1lTUEFSQU1TX1RPT0xUSVAgICAgICAgICAgICJUb29sVGlwIEJhY2tncm91bmQiCiAgICBJRENfU1lTUEFSQU1TX1RPT0xUSVBfVEVYVCAgICAgICJUb29sVGlwIFRleHQiCiAgICBJRENfU1lTUEFSQU1TX1dJTkRPVyAgICAgICAgICAgICJXaW5kb3cgQmFja2dyb3VuZCIKICAgIElEQ19TWVNQQVJBTVNfV0lORE9XX1RFWFQgICAgICAgIldpbmRvdyBUZXh0IgogICAgSURDX1NZU1BBUkFNU19BQ1RJVkVfVElUTEUgICAgICAiQWN0aXZlIFRpdGxlIEJhciIKICAgIElEQ19TWVNQQVJBTVNfQUNUSVZFX1RJVExFX1RFWFQgIkFjdGl2ZSBUaXRsZSBUZXh0IgogICAgSURDX1NZU1BBUkFNU19JTkFDVElWRV9USVRMRSAgICAiSW5hY3RpdmUgVGl0bGUgQmFyIgogICAgSURDX1NZU1BBUkFNU19JTkFDVElWRV9USVRMRV9URVhUICJJbmFjdGl2ZSBUaXRsZSBUZXh0IgpFTkQK