LyoKICogQ29weXJpZ2h0IDE5OTkgSnVsaW8gQ2VzYXIgR2F6cXVlegogKiBDb3B5cmlnaHQgMjAwNSBKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXoKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgIndpbmRlZi5oIgojaW5jbHVkZSAibW1kZGsuaCIKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfU1BBTklTSCwgU1VCTEFOR19ORVVUUkFMCkJFR0lOCgovKiBNTVNZUyBlcnJvcnMgKi8KICAgTU1TWVNFUlJfTk9FUlJPUiwgIkVsIGNvbWFuZG8gZXNwZWNpZmljYWRvIGZ1ZSBlamVjdXRhZG8uIgogICBNTVNZU0VSUl9FUlJPUiwgIkVycm9yIGV4dGVybm8gaW5kZWZpbmlkby4iCiAgIE1NU1lTRVJSX0JBRERFVklDRUlELCAiVW4gaWRlbnRpZmljYWRvciBkZSBkaXNwb3NpdGl2byBxdWUgaGEgc2lkbyB1c2FkbyBlc3ThIGZ1ZXJhIGRlIHJhbmdvIHBhcmEgc3Ugc2lzdGVtYS4iCiAgIE1NU1lTRVJSX05PVEVOQUJMRUQsICJFbCBtYW5lamFkb3Igbm8gZnVlIGFjdGl2YWRvLiIKICAgTU1TWVNFUlJfQUxMT0NBVEVELCAiRWwgZGlzcG9zaXRpdm8gZXNwZWNpZmljYWRvIGH6biBlc3ThIGVuIHVzby4gRXNwZXJlIGhhc3RhIHF1ZSBlc3TpIGxpYnJlIGUgaW50ZW50ZSBudWV2YW1lbnRlLiIKICAgTU1TWVNFUlJfSU5WQUxIQU5ETEUsICJFbCBoYW5kbGUgZGUgZGlzcG9zaXRpdm8gZXNwZWNpZmljYWRvIGVzIGluduFsaWRvLiIKICAgTU1TWVNFUlJfTk9EUklWRVIsICKhTm8gaGF5IHVuIG1hbmVqYWRvciBpbnN0YWxhZG8gZW4gc3Ugc2lzdGVtYSFcbiIKICAgTU1TWVNFUlJfTk9NRU0sICJObyBoYXkgc3VmaWNpZW50ZSBtZW1vcmlhIGRpc3BvbmlibGUgcGFyYSBlc3RhIHRhcmVhLiBDaWVycmUgdW5hIG8gbeFzIGFwbGljYWNpb25lcyBwYXJhIGF1bWVudGFyIGxhIG1lbW9yaWEgZGlzcG9uaWJsZSBlIGludOludGVsbyBkZSBudWV2by4iCiAgIE1NU1lTRVJSX05PVFNVUFBPUlRFRCwgIkVzdGEgZnVuY2nzbiBubyBlc3ThIHNvcG9ydGFkYS4gVXNlIGxhIGZ1bmNp824gQ2FwYWNpZGFkZXMgcGFyYSBkZXRlcm1pbmFyIHF16SBmdW5jaW9uZXMgeSBtZW5zYWplcyBzb3BvcnRhIGVsIG1hbmVqYWRvci4iCiAgIE1NU1lTRVJSX0JBREVSUk5VTSwgIlNlIGhhIGVzcGVjaWZpY2FkbyB1biBu+m1lcm8gZGUgZXJyb3IgcXVlIG5vIGVzdOEgZGVmaW5pZG8gZW4gZWwgc2lzdGVtYS4iCiAgIE1NU1lTRVJSX0lOVkFMRkxBRywgIlNlIGhhIHBhc2FkbyB1bmEgYmFuZGVyYSBubyB24WxpZGEgYSB1bmEgZnVuY2nzbiBkZWwgc2lzdGVtYS4iCiAgIE1NU1lTRVJSX0lOVkFMUEFSQU0sICJTZSBoYSBwYXNhZG8gdW4gcGFy4W1ldHJvIG5vIHbhbGlkbyBhIHVuYSBmdW5jafNuIGRlbCBzaXN0ZW1hLiIKCi8qIFdBVkUgZXJyb3JzICovCiAgIFdBVkVSUl9CQURGT1JNQVQsICJFbCBmb3JtYXRvIGVzcGVjaWZpY2FkbyBubyBlc3ThIHNvcG9ydGFkbyBvIG5vIHB1ZWRlIHNlciB0cmFkdWNpZG8uIFVzZSBsYSBmdW5jafNuIENhcGFjaWRhZGVzIHBhcmEgZGV0ZXJtaW5hciBsb3MgZm9ybWF0b3Mgc29wb3J0YWRvcy4iCiAgIFdBVkVSUl9TVElMTFBMQVlJTkcsICJFc3RhIG9wZXJhY2nzbiBubyBwdWVkZSBlamVjdXRhcnNlIG1pZW50cmFzIGNvbnRpbvphIGxhIHJlcHJvZHVjY2nzbi4gUmVpbmljaWUgZWwgZGlzcG9zaXRpdm8sIG8gZXNwZXJlIGhhc3RhIHF1ZSBsYSByZXByb2R1Y2Np824gdGVybWluZS4iCiAgIFdBVkVSUl9VTlBSRVBBUkVELCAiTGEgY2FiZWNlcmEgZGUgb25kYSBubyBlc3ThIHByZXBhcmFkYS4gVXNlIGxhIGZ1bmNp824gUHJlcGFyYXIgcGFyYSBwcmVwYXJhcmxhLCBlIGludOludGVsbyBkZSBudWV2by4iCiAgIFdBVkVSUl9TWU5DLCAiTm8gcHVlZGUgYWJyaXJzZSBlbCBkaXNwb3NpdGl2byBzaW4gdXNhciBsYSBiYW5kZXJhIFdBVkVfQUxMT1dTWU5DLiBVdGls7WNlbGEsIGUgaW506W50ZWxvIGRlIG51ZXZvLiIKCi8qIE1JREkgZXJyb3JzICovCiAgIE1JRElFUlJfVU5QUkVQQVJFRCwgIkxhIGNhYmVjZXJhIE1JREkgbm8gZXN04SBwcmVwYXJhZGEuIFVzZSBsYSBmdW5jafNuIFByZXBhcmFyIHBhcmEgcHJlcGFyYXJsYSwgZSBpbnTpbnRlbG8gZGUgbnVldm8uIgogICBNSURJRVJSX1NUSUxMUExBWUlORywgIkVzdGEgb3BlcmFjafNuIG5vIHB1ZWRlIGVqZWN1dGFyc2UgbWllbnRyYXMgc2UgY29udGlu+mEgdG9jYW5kby4gUmVpbmljaWUgZWwgZGlzcG9zaXRpdm8sIG8gZXNwZXJhIGhhc3RhIHF1ZSB0ZXJtaW5lIGRlIHRvY2FyLiIKICAgTUlESUVSUl9OT01BUCwgIk5vIHNlIGVuY29udHLzIHVuIG1hcGEgTUlESS4gUHVlZGUgaGFiZXIgdW4gcHJvYmxlbWEgY29uIGVsIGNvbnRyb2xhZG9yLCBlbCBlbCBmaWNoZXJvIE1JRElNQVAuQ0ZHIHB1ZWRlIGZhbHRhciBvIGVzdGFyIGNvcnJ1cHRvLiIKICAgTUlESUVSUl9OT1RSRUFEWSwgIkVsIHB1ZXJ0byBlc3ThIHRyYW5zbWl0aWVuZG8gZGF0b3MgYWwgZGlzcG9zaXRpdm8uIEVzcGVyYSBoYXN0YSBxdWUgbG9zIGRhdG9zIGhheWFuIHNpZG8gdHJhbnNtaXRpZG9zLCBlIGludGVudGUgbnVldmFtZW50ZS4iCiAgIE1JRElFUlJfTk9ERVZJQ0UsICJMYSBjb25maWd1cmFjafNuIGFjdHVhbCBkZWwgbWFwZWFkb3IgTUlESSByZWZpZXJlIGEgdW4gZGlzcG9zaXRpdm8gTUlESSBxdWUgbm8gZXN04SBpbnN0YWxhZG8gZW4gZWwgc2lzdGVtYS4gVXNlIGVsIG1hcGVhZG9yIE1JREkgcGFyYSBlZGl0YXIgbGEgY29uZmlndXJhY2nzbi4iCiAgIE1JRElFUlJfSU5WQUxJRFNFVFVQLCAiTGEgY29uZmlndXJhY2nzbiBhY3R1YWwgZGUgTUlESSBlc3ThIGRh8WFkYS4gQ29waWUgZWwgZmljaGVybyBNSURJTUFQLkNGRyBvcmlnaW5hbCBhbCBkaXJlY3RvcmlvIFNZU1RFTSBkZSBXaW5kb3dzIFNZU1RFTSwgZSBpbnRlbnRlIG51ZXZhbWVudGUuIgoKICAgLyogTUNJIGVycm9ycyAqLwogICBNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfSUQsICJJZGVudGlmaWNhZG9yIGRlIGRpc3Bvc2l0aXZvIE1DSSBpbnbhbGlkby4gVXNlIGVsIGlkZW50aWZpY2Fkb3IgZGV2dWVsdG8gYWwgYWJyaXIgZWwgZGlzcG9zaXRpdm8gTUNJLiIKICAgTUNJRVJSX1VOUkVDT0dOSVpFRF9LRVlXT1JELCAiRWwgY29udHJvbGFkb3Igbm8gcHVlZGUgcmVjb25vY2VyIGVsIHBhcuFtZXRybyBkZSBjb21hbmRvIGVzcGVjaWZpY2Fkby4iCiAgIE1DSUVSUl9VTlJFQ09HTklaRURfQ09NTUFORCwgIkVsIGNvbnRyb2xhZG9yIG5vIHB1ZWRlIHJlY29ub2NlciBlbCBjb21hbmRvIGVzcGVjaWZpY2Fkby4iCiAgIE1DSUVSUl9IQVJEV0FSRSwgIkhheSB1biBwcm9ibGVtYSBjb24gc3UgZGlzcG9zaXRpdm8uIEFzZWf6cmVzZSBkZSBxdWUgZXN06SBmdW5jaW9uYW5kbyBjb3JyZWN0YW1lbnRlIG8gY29udGFjdGUgYWwgZmFicmljYW50ZSBkZWwgZGlzcG9zaXRpdm8uIgogICBNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfTkFNRSwgIkVsIGRpc3Bvc2l0aXZvIGVzcGVjaWZpY2FkbyBubyBlc3ThIGFiaWVydG8gbyBubyBlcyByZWNvbm9jaWRvIHBvciBNQ0kuIgogICBNQ0lFUlJfT1VUX09GX01FTU9SWSwgIk5vIGhheSBzdWZpY2llbnRlIG1lbW9yaWEgcGFyYSBlc3RhIHRhcmVhLlxuQ2llcnJlIHVuYSBvIG3hcyBhcGxpY2FjaW9uZXMgcGFyYSBhdW1lbnRhciBsYSBtZW1vcmlhIGRpc3BvbmlibGUgZSBpbnRlbnRlIG51ZXZhbWVudGUuIgogICBNQ0lFUlJfREVWSUNFX09QRU4sICJFbCBub21icmUgZGUgZGlzcG9zaXRpdm8geWEgZXN04SBzaWVuZG8gdXNhZG8gY29tbyB1biBhbGlhcyBwb3IgZXN0YSBhcGxpY2FjafNuLiBVc2UgdW4gYWxpYXMg+m5pY28uIgogICBNQ0lFUlJfQ0FOTk9UX0xPQURfRFJJVkVSLCAiSGF5IHVuIHByb2JsZW1hIG5vIGRldGVjdGFibGUgZW4gbGEgY2FyZ2EgZGVsIGNvbnRyb2xhZG9yIGRlIGRpc3Bvc2l0aXZvIGVzcGVjaWZpY2Fkby4iCiAgIE1DSUVSUl9NSVNTSU5HX0NPTU1BTkRfU1RSSU5HLCAiTm8gc2UgaGEgZXNwZWNpZmljYWRvIHVuIGNvbWFuZG8uIgogICBNQ0lFUlJfUEFSQU1fT1ZFUkZMT1csICJMYSBjYWRlbmEgZGUgc2FsaWRhIGVzIG11eSBncmFuZGUgcGFyYSBjYWJlciBlbiBlbCBidWZmZXIgZGUgcmV0b3Juby4gQXVtZW50ZSBlbCB0YW1h8W8gZGVsIGJ1ZmZlci4iCiAgIE1DSUVSUl9NSVNTSU5HX1NUUklOR19BUkdVTUVOVCwgIkVsIGNvbWFuZG8gZXNwZWNpZmljYWRvIHJlcXVpZXJlIHVuIHBhcuFtZXRybyBkZSBjYWRlbmEgZGUgY2FyYWN0ZXJlcy4gUG9yIGZhdm9yIHByb3ZlYSB1bm8uIgogICBNQ0lFUlJfQkFEX0lOVEVHRVIsICJFbCBlbnRlcm8gZXNwZWNpZmljYWRvIGVzIGluduFsaWRvIHBhcmEgZXN0ZSBjb21hbmRvLiIKICAgTUNJRVJSX1BBUlNFUl9JTlRFUk5BTCwgIkVsIGNvbnRyb2xhZG9yIGRlIGRpc3Bvc2l0aXZvIGRldm9sdmnzIHVuIHRpcG8gZGUgcmV0b3JubyBpbnbhbGlkby4gQ29udGFjdGUgYWwgZmFicmljYW50ZSBkZWwgZGlzcG9zaXRpdm8gcGFyYSBvYnRlbmVyIHVuIG51ZXZvIGNvbnRyb2xhZG9yLiIKICAgTUNJRVJSX0RSSVZFUl9JTlRFUk5BTCwgIkhheSB1biBwcm9ibGVtYSBjb24gZWwgY29udHJvbGFkb3IgZGUgZGlzcG9zaXRpdm8uIENvbnRhY3RlIGFsIGZhYnJpY2FudGUgZGVsIGRpc3Bvc2l0aXZvIHBhcmEgb2J0ZW5lciB1biBudWV2byBjb250cm9sYWRvci4iCiAgIE1DSUVSUl9NSVNTSU5HX1BBUkFNRVRFUiwgIkVsIGNvbWFuZG8gZXNwZWNpZmljYWRvIHJlcXVpZXJlIHVuIHBhcuFtZXRyby4gUG9yIGZhdm9yIHByb3ZlYSB1bm8uIgogICBNQ0lFUlJfVU5TVVBQT1JURURfRlVOQ1RJT04sICJFbCBkaXNwb3NpdGl2byBNQ0kgcXVlIGVzdOEgdXNhbmRvIG5vIHNvcG9ydGEgZWwgY29tYW5kbyBlc3BlY2lmaWNhZG8uIgogICBNQ0lFUlJfRklMRV9OT1RfRk9VTkQsICJObyBzZSBlbmN1ZW50cmEgZWwgZmljaGVybyBlc3BlY2lmaWNhZG8uIEFzZWf6cmVzZSBxdWUgZWwgcGF0aCB5IGVsIG5vbWJyZSBkZWwgZmljaGVybyBzb24gY29ycmVjdG9zLiIKICAgTUNJRVJSX0RFVklDRV9OT1RfUkVBRFksICJFbCBjb250cm9sYWRvciBkZSBkaXNwb3NpdGl2byBubyBlc3ThIGxpc3RvLiIKICAgTUNJRVJSX0lOVEVSTkFMLCAiVW4gcHJvYmxlbWEgaGEgb2N1cnJpZG8gaW5pY2lhbGl6YW5kbyBlbCBNQ0kuIEludGVudGUgcmVpbmljaWFyIFdpbmRvd3MuIgogICBNQ0lFUlJfRFJJVkVSLCAiSGF5IHVuIHByb2JsZW1hIGNvbiBlbCBjb250cm9sYWRvciBkZWwgZGlzcG9zaXRpdm8uIEVsIGNvbnRyb2xhZG9yIHNlIGhhIGNlcnJhZG8uIEludGVudGUgcmVlbnZpYXIgZWwgY29tYW5kby4iCiAgIE1DSUVSUl9DQU5OT1RfVVNFX0FMTCwgIlV0aWxpY2UgdW4gbm9tYnJlIGRlIGRpc3Bvc2l0aXZvIGVzcGVj7WZpY28gcGFyYSBlc3RlIGNvbWFuZG8uIgogICBNQ0lFUlJfTVVMVElQTEUsICJIYW4gb2N1cnJpZG8gZXJyb3JlcyBlbiBt4XMgZGUgdW4gZGlzcG9zaXRpdm8uIEVzcGVjaWZpcXVlIGNhZGEgY29tYW5kbyB5IGRpc3Bvc2l0aXZvIHBvciBzZXBhcmFkbyBwYXJhIGRldGVybWluYXIgcXVlIGRpc3Bvc2l0aXZvcyBjYXVzYXJvbiBlbCBlcnJvci4iCiAgIE1DSUVSUl9FWFRFTlNJT05fTk9UX0ZPVU5ELCAiTm8gcHVlZGUgZGV0ZXJtaW5hcnNlIGVsIHRpcG8gZGUgZGlzcG9zaXRpdm8gYSBwYXJ0aXIgZGUgbGEgZXh0ZW5zafNuIGRlIGZpY2hlcm8gZGFkYS4iCiAgIE1DSUVSUl9PVVRPRlJBTkdFLCAiRWwgcGFy4W1ldHJvIGVzcGVjaWZpY2FkbyBlc3ThIGZ1ZXJhIGRlbCByYW5nbyBwYXJhIGVsIGNvbWFuZG8gZXNwZWNpZmljYWRvLiIKICAgTUNJRVJSX0ZMQUdTX05PVF9DT01QQVRJQkxFLCAiTG9zIHBhcuFtZXRyb3MgZXNwZWNpZmljYWRvcyBubyBwdWVkZW4gdXNhcnNlIGp1bnRvcy4iCiAgIE1DSUVSUl9GSUxFX05PVF9TQVZFRCwgIk5vIHB1ZWRlIGdyYWJhcnNlIGVsIGZpY2hlcm8gZXNwZWNpZmljYWRvLiBBc2Vn+nJlc2UgZGUgdGVuZXIgc3VmaWNpZW50ZSBlc3BhY2lvIGVuIGRpc2NvIG8gZGUgcXVlIHBlcm1hbmVjZSBjb25lY3RhZG8gYSBsYSByZWQuIgogICBNQ0lFUlJfREVWSUNFX1RZUEVfUkVRVUlSRUQsICJObyBwdWVkZSBlbmNvbnRyYXJzZSBlbCBkaXNwb3NpdGl2byBlc3BlY2lmaWNhZG8uIEFzZWf6cmVzZSBkZSBxdWUgZXN04SBpbnN0YWxhZG8gbyBkZSBxdWUgZWwgbm9tYnJlIGRlbCBkaXNwb3NpdGl2byBlc3ThIGVzY3JpdG8gY29ycmVjdGFtZW50ZS4iCiAgIE1DSUVSUl9ERVZJQ0VfTE9DS0VELCAiRWwgZGlzcG9zaXRpdm8gZXNwZWNpZmljYWRvIGVzdOEgc2llbmRvIGNlcnJhZG8uIEVzcGVyZSB1bm9zIHNlZ3VuZG9zIGUgaW50ZW50ZSBudWV2YW1lbnRlLiIKICAgTUNJRVJSX0RVUExJQ0FURV9BTElBUywgIkVsIGFsaWFzIGVzcGVjaWZpY2FkbyB5YSBlc3ThIHNpZW5kbyB1c2FkbyBwb3IgZXN0YSBhcGxpY2FjafNuLiBVc2UgdW4gYWxpYXMg+m5pY28uIgogICBNQ0lFUlJfQkFEX0NPTlNUQU5ULCAiRWwgcGFy4W1ldHJvIGVzcGVjaWZpY2FkbyBlcyBpbnbhbGlkbyBwYXJhIGVzdGUgY29tYW5kby4iCiAgIE1DSUVSUl9NVVNUX1VTRV9TSEFSRUFCTEUsICJFbCBjb250cm9sYWRvciBkZSBkaXNwb3NpdGl2byB5YSBlc3ThIGVuIHVzby4gUGFyYSBjb21wYXJ0aXJsbywgdXNlIGVsIHBhcuFtZXRybyAnY29tcGFydGlibGUnICgnc2hhcmVhYmxlJykgY29uIGNhZGEgY29tYW5kbyAnYWJyaXInICgnb3BlbicpLiIKICAgTUNJRVJSX01JU1NJTkdfREVWSUNFX05BTUUsICJFbCBjb21hbmRvIGVzcGVjaWZpY2FkbyByZXF1aWVyZSB1biBhbGlhcywgZmljaGVybywgY29udHJvbGFkb3IgbyBub21icmUgZGUgZGlzcG9zaXRpdm8uIFBvciBmYXZvciBwcm92ZWEgdW5vLiIKICAgTUNJRVJSX0JBRF9USU1FX0ZPUk1BVCwgIkVsIHZhbG9yIGVzcGVjaWZpY2FkbyBwYXJhIGVsIGZvcm1hdG8gZGUgdGllbXBvIGVzIGluduFsaWRvLiBWZXJpZmlxdWUgbG9zIGZvcm1hdG9zIHbhbGlkb3MgZW4gbGEgZG9jdW1lbnRhY2nzbiBkZSBNQ0kuIgogICBNQ0lFUlJfTk9fQ0xPU0lOR19RVU9URSwgIlVuYSBjb21pbGxhIGRlIGNpZXJyZSBlc3ThIGZhbHRhbmRvIGVuIGVsIHZhbG9yIGRlbCBwYXLhbWV0cm8uIFBvciBmYXZvciBwcm92ZWEgdW5hLiIKICAgTUNJRVJSX0RVUExJQ0FURV9GTEFHUywgIlVuIHBhcuFtZXRybyBvIHZhbG9yIGZ1ZSBlc3BlY2lmaWNhZG8gZG9zIHZlY2VzLiBFc3BlY2lm7XF1ZWxvIHVuYSBzb2xhIHZlei4iCiAgIE1DSUVSUl9JTlZBTElEX0ZJTEUsICJFbCBmaWNoZXJvIGVzcGVjaWZpY2FkbyBubyBwdWVkZSBzZXIgdG9jYWRvIGVuIGVsIGRpc3Bvc2l0aXZvIE1DSSBlc3BlY2lmaWNhZG8uIEVsIGZpY2hlcm8gcHVlZGUgZXN0YXIgY29ycnVwdG8gbyBlbiB1biBmb3JtYXRvIGluY29ycmVjdG8uIgogICBNQ0lFUlJfTlVMTF9QQVJBTUVURVJfQkxPQ0ssICJTZSBoYSBwYXNhZG8gdW4gYmxvcXVlIGRlIHBhcuFtZXRyb3MgbnVsbyBhbCBNQ0kuIgogICBNQ0lFUlJfVU5OQU1FRF9SRVNPVVJDRSwgIk5vIHB1ZWRlIGd1YXJkYXJzZSB1biBmaWNoZXJvIHNpbiBub21icmUuIFByb3ZlYSB1biBub21icmUgcGFyYSBlbCBmaWNoZXJvLiIKICAgTUNJRVJSX05FV19SRVFVSVJFU19BTElBUywgIkRlYmUgZXNwZWNpZmljYXIgdW4gYWxpYXMgY3VhbmRvIHV0aWxpY2UgZWwgcGFy4W1ldHJvICdudWV2bycuIgogICBNQ0lFUlJfTk9USUZZX09OX0FVVE9fT1BFTiwgIk5vIHB1ZWRlIHVzYXIgZWwgZmxhZyAnbm90aWZpY2FyJyBjb24gZGlzcG9zaXRpdm9zIGRlIGFwZXJ0dXJhIGF1dG9t4XRpY2EuIgogICBNQ0lFUlJfTk9fRUxFTUVOVF9BTExPV0VELCAiTm8gcHVlZGUgdXNhciB1biBub21icmUgZGUgZmljaGVybyBjb24gZWwgZGlzcG9zaXRpdm8gZXNwZWNpZmljYWRvLiIKICAgTUNJRVJSX05PTkFQUExJQ0FCTEVfRlVOQ1RJT04sICJObyBwdWVkZW4gZWplY3V0YXJzZSBsb3MgY29tYW5kb3MgZW4gZWwgb3JkZW4gZXNwZWNpZmljYWRvLiBDb3JyaWphIGxhIHNlY3VlbmNpYSBkZSBjb21hbmRvcyBlIGludGVudGUgbnVldmFtZW50ZS4iCiAgIE1DSUVSUl9JTExFR0FMX0ZPUl9BVVRPX09QRU4sICJObyBwdWVkZSBlamVjdXRhcnNlIGVsIGNvbWFuZG8gZXNwZWNpZmljYWRvIGVuIHVuIGRpc3Bvc2l0aXZvIGRlIGFwZXJ0dXJhIGF1dG9t4XRpY2EuIEVzcGVyZSBoYXN0YSBxdWUgZWwgZGlzcG9zaXRpdm8gZXN06SBjZXJyYWRvIGUgaW50ZW50ZSBudWV2YW1lbnRlLiIKICAgTUNJRVJSX0ZJTEVOQU1FX1JFUVVJUkVELCAiRWwgbm9tYnJlIGRlbCBmaWNoZXJvIGVzIGluduFsaWRvLiBBc2Vn+nJlc2UgZGUgcXVlIGVsIG5vbWJyZSBkZWwgZmljaGVybyBubyBlcyBtYXlvciBkZSA4IGNhcmFjdGVyZXMsIHNlZ3VpZG8gcG9yIHVuIHB1bnRvIHkgdW5hIGV4dGVuc2nzbi4iCiAgIE1DSUVSUl9FWFRSQV9DSEFSQUNURVJTLCAiTm8gcHVlZGUgZXNwZWNpZmljYXIgY2FyYWN0ZXJlcyBleHRyYSBkZXNwdelzIGRlIHVuYSBjYWRlbmEgZW5jZXJyYWRhIGVudHJlIGNvbWlsbGFzLiIKICAgTUNJRVJSX0RFVklDRV9OT1RfSU5TVEFMTEVELCAiRWwgZGlzcG9zaXRpdm8gZXNwZWNpZmljYWRvIG5vIGVzdOEgaW5zdGFsYWRvIGVuIGVsIHNpc3RlbWEuIFVzZSBsYSBvcGNp824gQ29udHJvbGFkb3JlcyBlbiBlbCBQYW5lbCBkZSBDb250cm9sIHBhcmEgaW5zdGFsYXIgZWwgZGlzcG9zaXRpdm8uIgogICBNQ0lFUlJfR0VUX0NELCAiTm8gcHVlZGUgYWNjZWRlcnNlIGFsIGZpY2hlcm8gbyBkaXNwb3NpdGl2byBNQ0kgZXNwZWNpZmljYWRvLiBJbnRlbnRlIGNhbWJpYW5kbyBkZSBkaXJlY3RvcmlvIG8gcmVpbmljaWFuZG8gZWwgZXF1aXBvLiIKICAgTUNJRVJSX1NFVF9DRCwgIk5vIHB1ZWRlIGFjY2VkZXJzZSBhbCBmaWNoZXJvIG8gZGlzcG9zaXRpdm8gTUNJIGVzcGVjaWZpY2FkbyBwb3JxdWUgbGEgYXBsaWNhY2nzbiBubyBwdWVkZSBjYW1iaWFyIGRlIGRpcmVjdG9yaW8uIgogICBNQ0lFUlJfU0VUX0RSSVZFLCAiTm8gcHVlZGUgYWNjZWRlcnNlIGFsIGZpY2hlcm8gbyBkaXNwb3NpdGl2byBNQ0kgZXNwZWNpZmljYWRvIHBvcnF1ZSBsYSBhcGxpY2FjafNuIG5vIHB1ZWRlIGNhbWJpYXIgZGUgdW5pZGFkLiIKICAgTUNJRVJSX0RFVklDRV9MRU5HVEgsICJFc3BlY2lmaXF1ZSB1biBkaXNwb3NpdGl2byBvIG5vbWJyZSBkZSBjb250cm9sYWRvciBkZSBtZW5vcyBkZSA3OSBjYXJhY3RlcmVzLiIKICAgTUNJRVJSX0RFVklDRV9PUkRfTEVOR1RILCAiRXNwZWNpZmlxdWUgdW4gZGlzcG9zaXRpdm8gbyBub21icmUgZGUgY29udHJvbGFkb3IgZGUgbWVub3MgZGUgNjkgY2FyYWN0ZXJlcy4iCiAgIE1DSUVSUl9OT19JTlRFR0VSLCAiRWwgY29tYW5kbyBlc3BlY2lmaWNhZG8gcmVxdWllcmUgdW4gcGFy4W1ldHJvIGVudGVyby4gUG9yIGZhdm9yIHByb3ZlYSB1bm8uIgogICBNQ0lFUlJfV0FWRV9PVVRQVVRTSU5VU0UsICJUb2RvcyBsb3MgZGlzcG9zaXRpdm9zIHF1ZSBwdWVkZW4gdG9jYXIgZmljaGVyb3MgZW4gZXN0ZSBmb3JtYXRvIGVzdOFuIGVuIHVzby4gRXNwZXJlIGhhc3RhIHF1ZSBzZSBsaWJlcmUgdW4gZGlzcG9zaXRpdm8gZSBpbnRlbnRlIG51ZXZhbWVudGUuIgogICBNQ0lFUlJfV0FWRV9TRVRPVVRQVVRJTlVTRSwgIk5vIHB1ZWRlIHByZXBhcmFyc2UgZWwgZGlzcG9zaXRpdm8gZGUgZm9ybWEgZGUgb25kYSBwYXJhIHJlcHJvZHVjY2nzbiBwb3JxdWUgZXN04SBlbiB1c28uIEVzcGVyZSBoYXN0YSBxdWUgZWwgZGlzcG9zaXRpdm8gZXN06SBsaWJyZSBlIGludGVudGUgbnVldmFtZW50ZS4iCiAgIE1DSUVSUl9XQVZFX0lOUFVUU0lOVVNFLCAiVG9kb3MgbG9zIGRpc3Bvc2l0aXZvcyBxdWUgcHVlZGVuIGdyYWJhciBmaWNoZXJvcyBlbiBlc3RlIGZvcm1hdG8gZXN04W4gZW4gdXNvLiBFc3BlcmUgaGFzdGEgcXVlIHNlIGxpYmVyZSB1biBkaXNwb3NpdGl2byBlIGludGVudGUgbnVldmFtZW50ZS4iCiAgIE1DSUVSUl9XQVZFX1NFVElOUFVUSU5VU0UsICJObyBwdWVkZSBwcmVwYXJhcnNlIGVsIGRpc3Bvc2l0aXZvIGRlIGZvcm1hIGRlIG9uZGEgcGFyYSBncmFiYWNp824gcG9ycXVlIGVzdOEgZW4gdXNvLiBFc3BlcmUgaGFzdGEgcXVlIGVsIGRpc3Bvc2l0aXZvIGVzdOkgbGlicmUgZSBpbnRlbnRlIG51ZXZhbWVudGUuIgogICBNQ0lFUlJfV0FWRV9PVVRQVVRVTlNQRUNJRklFRCwgIkN1YWxxdWllciBkaXNwb3NpdGl2byBjb21wYXRpYmxlIGRlIHJlcHJvZHVjY2nzbiBkZSBmb3JtYSBkZSBvbmRhIHB1ZWRlIHNlciB1c2Fkby4iCiAgIE1DSUVSUl9XQVZFX0lOUFVUVU5TUEVDSUZJRUQsICJDdWFscXVpZXIgZGlzcG9zaXRpdm8gY29tcGF0aWJsZSBkZSBncmFiYWNp824gZGUgZm9ybWEgZGUgb25kYSBwdWVkZSBzZXIgdXNhZG8uIgogICBNQ0lFUlJfV0FWRV9PVVRQVVRTVU5TVUlUQUJMRSwgIk5vIGhheSBuaW5n+m4gZGlzcG9zaXRpdm8gZGUgZm9ybWEgZGUgb25kYSBpbnN0YWxhZG8gY2FwYXogZGUgcmVwcm9kdWNpciBmaWNoZXJvcyBlbiBlc3RlIGZvcm1hdG8uIFVzZSBsYSBvcGNp824gRGlzcG9zaXRpdm9zIHBhcmEgaW5zdGFsYXIgZWwgZGlzcG9zaXRpdm8gZGUgZm9ybWEgZGUgb25kYS4iCiAgIE1DSUVSUl9XQVZFX1NFVE9VVFBVVFVOU1VJVEFCTEUsIkVsIGRpc3Bvc2l0aXZvIGNvbiBlbCBxdWUgaW50ZW50YSByZXByb2R1Y2lyIG5vIHB1ZWRlIHJlY29ub2NlciBlbCBmb3JtYXRvIGRlIGZpY2hlcm8uIgogICBNQ0lFUlJfV0FWRV9JTlBVVFNVTlNVSVRBQkxFLCAiTm8gaGF5IG5pbmf6biBkaXNwb3NpdGl2byBkZSBmb3JtYSBkZSBvbmRhIGluc3RhbGFkbyBjYXBheiBkZSBncmFiYXIgZmljaGVyb3MgZW4gZXN0ZSBmb3JtYXRvLiBVc2UgbGEgb3BjafNuIERpc3Bvc2l0aXZvcyBwYXJhIGluc3RhbGFyIGVsIGRpc3Bvc2l0aXZvIGRlIGZvcm1hIGRlIG9uZGEuIgogICBNQ0lFUlJfV0FWRV9TRVRJTlBVVFVOU1VJVEFCTEUsICJFbCBkaXNwb3NpdGl2byBjb24gZWwgcXVlIGludGVudGEgZ3JhYmFyIG5vIHB1ZWRlIHJlY29ub2NlciBlbCBmb3JtYXRvIGRlIGZpY2hlcm8uIgogICBNQ0lFUlJfTk9fV0lORE9XLCAiTm8gaGF5IHVuYSB2ZW50YW5hLiIKICAgTUNJRVJSX0NSRUFURVdJTkRPVywgIk5vIHB1ZWRlIGNyZWFyc2UgbyB1c2FyIHVuYSB2ZW50YW5hLiIKICAgTUNJRVJSX0ZJTEVfUkVBRCwgIk5vIHB1ZWRlIGxlZXJzZSBlbCBmaWNoZXJvIGVzcGVjaWZpY2Fkby4gQXNlZ/pyZXNlIGRlIHF1ZSBlbCBmaWNoZXJvIGH6biBlc3ThIHByZXNlbnRlLCBvIHJldmlzZSBzdSBkaXNjbyBvIGNvbmV4afNuIGRlIHJlZC4iCiAgIE1DSUVSUl9GSUxFX1dSSVRFLCAiTm8gcHVlZGUgZ3JhYmFyc2UgZWwgZmljaGVybyBlc3BlY2lmaWNhZG8uIEFzZWf6cmVzZSBkZSB0ZW5lciBzdWZpY2llbnRlIGVzcGFjaW8gZW4gZGlzY28gbyBkZSBxdWUgcGVybWFuZWNlIGNvbmVjdGFkbyBhIGxhIHJlZC4iCiAgIE1DSUVSUl9TRVFfRElWX0lOQ09NUEFUSUJMRSwgIkxvcyBmb3JtYXRvcyBkZSB0aWVtcG8gZGUgIiJzb25nIHBvaW50ZXIiIiB5IFNNUFRFIHNvbiBtdXR1YW1lbnRlIGV4Y2x1c2l2b3MuIE5vIHB1ZWRlbiB1dGlsaXphcnNlIGEgbGEgdmV6LiIKICAgTUNJRVJSX1NFUV9OT01JRElQUkVTRU5ULCAiRWwgc2lzdGVtYSBubyB0aWVuZSBkaXNwb3NpdGl2b3MgTUlESSBpbnN0YWxhZG9zLiBVc2UgbGEgb3BjafNuIENvbnRyb2xhZG9yZXMgZW4gZWwgUGFuZWwgZGUgQ29udHJvbCBwYXJhIGluc3RhbGFyIGVsIGRpc3Bvc2l0aXZvLiIKICAgTUNJRVJSX1NFUV9QT1JUX0lOVVNFLCAiRWwgcHVlcnRvIE1JREkgZXNwZWNpZmljYWRvIHlhIGVzdOEgZW4gdXNvLiBFc3BlcmUgaGFzdGEgcXVlIGVzdOkgbGlicmUgZSBpbnRlbnRlIG51ZXZhbWVudGUuIgogICBNQ0lFUlJfU0VRX1BPUlRfTUFQTk9ERVZJQ0UsICJMYSBjb25maWd1cmFjafNuIGFjdHVhbCBkZWwgbWFwZWFkb3IgTUlESSByZWZpZXJlIGEgdW4gZGlzcG9zaXRpdm8gTUlESSBxdWUgbm8gZXN04SBpbnN0YWxhZG8gZW4gZWwgc2lzdGVtYS4gVXNlIGVsIGxhIG9wY2nzbiBkZWwgbWFwZWFkb3IgTUlESSBlbiBlbCBQYW5lbCBkZSBDb250cm9sIHBhcmEgZWRpdGFyIGxhIGNvbmZpZ3VyYWNp824uIgogICBNQ0lFUlJfU0VRX1BPUlRfTUlTQ0VSUk9SLCAiSGEgb2N1cnJpZG8gdW4gZXJyb3IgY29uIGVsIHB1ZXJ0byBlc3BlY2lmaWNhZG8uIgogICBNQ0lFUlJfU0VRX1BPUlRfTk9ORVhJU1RFTlQsICJFbCBkaXNwb3NpdGl2byBNSURJIGVzcGVjaWZpY2FkbyBubyBlc3ThIGluc3RhbGFkbyBlbiBlbCBzaXN0ZW1hLiBVc2UgbGEgb3BjafNuIERpc3Bvc2l0aXZvcyBlbiBlbCBQYW5lbCBkZSBDb250cm9sIHBhcmEgaW5zdGFsYXIgdW4gZGlzcG9zaXRpdm8gTUlESS4iCiAgIE1DSUVSUl9TRVFfUE9SVFVOU1BFQ0lGSUVELCAiRWwgc2lzdGVtYSBubyB0aWVuZSBhY3R1YWxtZW50ZSB1biBwdWVydG8gTUlESSBlc3BlY2lmaWNhZG8uIgogICBNQ0lFUlJfU0VRX1RJTUVSLCAiVG9kb3MgbG9zIHRlbXBvcml6YWRvcmVzIGRlIG11bHRpbWVkaWEgZXN04W4gc2llbmRvIHVzYWRvcyBwb3Igb3RyYXMgYXBsaWNhY2lvbmVzLiBDaWVycmUgdW5hIGRlIGVzYXMgYXBsaWNhY2lvbmVzIGUgaW50ZW50ZSBudWV2YW1lbnRlLiIKCkVORAo=