LyoKICogKEdlcm1hbikgUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDQgTWljaGFlbCBGcml0c2NoZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN0cnkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3RyeSAmaW1wb3J0aWVyZW4uLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzdHJ5ICZleHBvcnRpZXJlbi4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQoKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1pdCBOZXR6d2Vya3JlZ2lzdHJ5IHZlcmJpbmRlbi4uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImVm9uIE5ldHp3ZXJrcmVnaXN0cnkgdHJlbm5lbi4uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRHJ1Y2tlblx0U3RyZytQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkJlZW5kZW4iLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkJlYXJiZWl0ZW4iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImxG5kZXJuIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTmV1IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImU2NobPxzc2VsIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImWmVpY2hlbmtldHRlIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbuRyd2VydCIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRCBXZXJ0IiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTPZzY2hlblx0RW50ZiIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZVbWJlbmVubmVuIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTY2hs/HNzZWxuYW1lICZrb3BpZXJlbiIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTdWNoZW5cdFN0cmcrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJk7kY2hzdGVzIGZpbmRlblx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImQW5zaWNodCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlN0YXR1cyZsZWlzdGUiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRyZW5uZW4iLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBa3R1YWxpc2llcmVuXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJkZhdm9yaXRlbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlp1IGRlbiBGYXZvcml0ZW4gJmhpbnp1ZvxnZW4iLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiVm9uIGRlbiBGYXZvcml0ZW4gJmz2c2NoZW4iLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImSGlsZmUiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSGlsZmV0aGVtZW5cdEYxIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJtxiZXIgUmVnaXN0cnkgRWRpdG9yIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImxG5kZXJuIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIkJpbuRyZSBEYXRlbiDkbmRlcm4iLCAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZM9nNjaGVuXHRFbnRmIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImVW1iZW5uZW5lbiIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOZXUiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZTY2hs/HNzZWwiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZaZWljaGVua2V0dGUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5HJ3ZXJ0IiwgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIFdlcnQiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTPZzY2hlblx0RW50ZiIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZVbWJlbmVubmVuIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTY2hs/HNzZWxuYW1lICZrb3BpZXJlbiIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTdWNoZW5cdFN0cmcrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiUmVnaXN0cnkgJmV4cG9ydGllcmVuIiwgSURDX0VYUE9SVF9CQVNFLCA2LCA2LCAyNjYsIDQyLCBXU19HUk9VUAogICAgQVVUT1JBRElPQlVUVE9OICImQWxsZXMiLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIkF1c2dld+RobHRlciAmWndlaWc6IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA5MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgMTAyLCAzMCwgMTY0LCAxMgpFTkQKCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTdWNoZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiU3VjaGVuOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDExMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIlN1Y2hlbiBuYWNoOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIlNjaGz8c3NlbG4iLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiV2VydGVuIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIkRhdGVuIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJLb21wbGV0dGUgWmVpY2hlbmZvbGdlIHZlcmdsZWljaGVuIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCAxNTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgIlN1Y2hlbiIsSURPSywxNjAsNSw0NSwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE2MCwyMiw0NSwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiWnUgZGVuIEZhdm9yaXRlbiBoaW56dWb8Z2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAiTkFNRToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAiT0siLElET0ssMTQwLDQwLDMwLDExLCBXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgIkFiYnJlY2hlbiIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJWb24gZGVuIEZhdm9yaXRlbiBlbnRmZXJuZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICJOYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgIk9LIixJRE9LLDE0MCw3MywzMCwxMSwgV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlplaWNoZW5rZXR0ZSDkbmRlcm4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiJk5hbWU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICImRGF0ZW46IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgV2VydCBlZGl0aWVyZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiJk5hbWU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICImRGF0ZW46IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQmFzaXMiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGV6aW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZXppbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkJpbuRyZW4gV2VydCBlZGl0aWVyZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiJk5hbWU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICImRGF0ZW46IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19WQUxVRV9EQVRBLCJIZXhFZGl0IixXU19UQUJTVE9QLDQsNDAsMTYwLDQwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTmFtZSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUeXAiCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiRGF0ZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJSZWdpc3RyeSBFZGl0b3IiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJCZWZlaGxlIGb8ciBkYXMgQmVhcmJlaXRlbiBkZXIgZ2FuemVuIFJlZ2lzdHJ5IgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIkJlZmVobGUgZvxyIHVtIFNjaGz8c3NlbCBvZGVyIFdlcnRlIHp1IORuZGVybiIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJCZWZlaGxlIHVtIGRhcyBGZW5zdGVyIGFuenVwYXNzZW4iCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiQmVmZWhsZSBm/HIgZGllIEZhdm9yaXRlbiIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJCZWZlaGxlIHVtIGRpZSBIaWxmZSBvZGVyIEluZm9ybWF0aW9uZW4g/GJlciBkYXMgUHJvZ3JhbW0gYW56dXplaWdlbiIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJCZWZlaGxlIGb8ciBkYXMgRXJzdGVsbGVuIHZvbiBuZXVlbiBTY2hs/HNzZWxuIG9kZXIgRGF0ZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICLEbmRlcnQgZGllIERhdGVuIGVpbmVzIFdlcnRlcyIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJG/Gd0IGVpbmVuIG5ldWVuIFNjaGz8c3NlbCBoaW56dSIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJG/Gd0IGVpbmVuIG5ldWUgWmVpY2hlbmtldHRlIGhpbnp1ICIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJG/Gd0IGVpbmVuIG5ldWVuIEJpbuRyd2VydCBoaW56dSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJG/Gd0IGVpbmVuIG5ldWVuIERXT1JEIFdlcnQgaGluenUiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGllcnQgZWluZSBUZXh0ZGF0ZWkgaW4gZGllIFJlZ2lzdHJ5IgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwb3J0aWVydCBUZWlsZSBvZGVyIGRpZSBnYW56ZSBSZWdpc3RyeSBpbiBlaW5lIFRleHRkYXRlaSIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWZXJiaW5kZXQgenUgZWluZXIgUmVnaXN0cnkgZWluZXMgRnJlbWRjb21wdXRlcnMiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJlbm50IGRpZSBWZXJiaW5kdW5nIHp1IGRlciBSZWdpc3RyeSBlaW5lcyBGcmVtZGNvbXB1dGVycyIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJEcnVja3QgVGVpbGUgb2RlciBkaWUgZ2VzYW10ZSBSZWdpc3RyeSBhdXMiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICLWZmZuZXQgZGllIEhpbGZlIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlplaWd0IFByb2dyYW1tbmFtZSwgVmVyc2lvbiB1bmQgQ29weXJpZ2h0IGFuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiQmVlbmRldCBkZW4gUmVnaXN0cnkgRWRpdG9yIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJG/Gd0IFNjaGz8c3NlbCB6dSBkZW4gRmF2b3JpdGVuIGhpbnp1IgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJM9nNjaHQgU2NobPxzc2VsIHZvbiBkZW4gRmF2b3JpdGVuIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIlplaWd0IG9kZXIgdmVyc3RlY2t0IGRpZSBTdGF0dXNsZWlzdGUiCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAixG5kZXJ0IGRpZSBQb3NpdGlvbiBkYXMgRmVuc3RlcnRlaWxlcnMiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiQWt0dWFsaXNpZXJ0IGRhcyBGZW5zdGVyIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkz2c2NodCBkaWUgQXVzd2FobCIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJCZW5lbm50IGRpZSBBdXN3YWhsIHVtIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIktvcGllcnQgZGVuIFNjaGz8c3NlbG5hbWVuIGluIGRpZSBad2lzY2hlbmFibGFnZSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJGaW5kZXQgZWluZSBaZWljaGVua2V0dGUgaW4gZWluZW0gU2NobPxzc2VsLCBlaW5lbSBOYW1lbiBvZGVyIGluIERhdGVuIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkZpbmRldCBkaWUgbuRjaHN0ZSBaZWljaGVua2V0dGUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJGZWhsZXIiCiAgICBJRFNfQkFEX0tFWSAgICAgICAgICAgICAiS2FubiBkZW4gU2NobPxzc2VsICclcycgbmljaHQgbGVzZW4iCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiS2FubiBkZW4gV2VydCAnJXMnIG5pY2h0IGxlc2VuIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkthbm4gU2NobPxzc2VsIHZvbiBkaWVzZW0gVHlwICglbGQpIG5pY2h0IORuZGVybiIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJEZXIgV2VydCBpc3QgenUgZ3Jv3yAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJCaXR0ZSBiZXN05HRpZ2VuIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIldvbGxlbiBTaWUgJyVzJyB3aXJrbGljaCBs9nNjaGVuPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOZXVlciBTY2hs/HNzZWwgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk5ldWVyIFdlcnQgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIlN1Y2hmb2xnZSAnJXMnIHd1cmRlIG5pY2h0IGdlZnVuZGVuLiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0ZJTEVESUFMT0dfSU1QT1JUX1RJVExFICAgIlJlZ2lzdHJ5LURhdGVpIGltcG9ydGllcmVuIgogICAgSURTX0ZJTEVESUFMT0dfRVhQT1JUX1RJVExFICAgIlJlZ2lzdHJ5LURhdGVpIGV4cG9ydGllcmVuIgogICAgSURTX0ZJTEVESUFMT0dfRklMVEVSICAgICAgICAgIlJlZ2lzdHJ5LURhdGVpZW5cMCoucmVnXDBXaW45eC9OVDQgUmVnaXN0cnktRGF0ZWllbiAoUkVHRURJVDQpXDAqLnJlZ1wwQWxsZSBEYXRlaWVuICgqLiopXDAqLipcMFwwIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfUkVHSVNUUllfUk9PVF9OQU1FICAgICAgICAgICAiQXJiZWl0c3BsYXR6IgogICAgSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgICAgIihTdGFuZGFyZCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfTk9UX1NFVCAgICAgICAiKFdlcnQgbmljaHQgZ2VzZXR6dCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKGthbm4gV2VydCBuaWNodCBkYXJzdGVsbGVuKSIKICAgIElEU19SRUdJU1RSWV9VTktOT1dOX1RZUEUgICAgICAgICIodW5iZWthbm50ICVkKSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgItZmZm5ldCBkaWUgSGlsZmUuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiWmVpZ3QgUHJvZ3JhbW1uYW1lLCBWZXJzaW9uIHVuZCBDb3B5cmlnaHQgYW4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=