LyoKICogKEdlcm1hbikgUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDQgTWljaGFlbCBGcml0c2NoZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCklEQ19SRUdFRElUIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImRGF0ZWkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQmVlbmRlbiIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImSGlsZmUiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICIm3GJlciAuLi4iLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RyeSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzdHJ5ICZpbXBvcnRpZXJlbi4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQoKICAgICAgICBNRU5VSVRFTSAiUmVnaXN0cnkgJmV4cG9ydGllcmVuLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWl0IE5ldHp3ZXJrcmVnaXN0cnkgdmVyYmluZGVuLi4uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZWb24gTmV0endlcmtyZWdpc3RyeSB0cmVubmVuLi4uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZEcnVja2VuXHRTdHJnK1AiLCAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQmVlbmRlbiIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImQmVhcmJlaXRlbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibEbmRlcm4iLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOZXUiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZTY2hs/HNzZWwiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZaZWljaGVua2V0dGUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5HJ3ZXJ0IiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIFdlcnQiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZM9nNjaGVuXHRFbnRmIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlVtYmVuZW5uZW4iLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNjaGz8c3NlbG5hbWUgJmtvcGllcmVuIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN1Y2hlblx0U3RyZytGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImTuRjaHN0ZXMgZmluZGVuXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBbnNpY2h0IgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiU3RhdHVzJmxlaXN0ZSIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVHJlbm5lbiIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFrdHVhbGlzaWVyZW5cdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpdGVuIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiWnUgZGVuIEZhdm9yaXRlbiAmaGluenVm/GdlbiIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICJWb24gZGVuIEZhdm9yaXRlbiAmbPZzY2hlbiIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZIaWxmZSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZIaWxmZXRoZW1lblx0RjEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm3GJlciBSZWdpc3RyeSBFZGl0b3IiLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIibEbmRlcm4iLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiQmlu5HJlIERhdGVuIORuZGVybiIsICAgICAgICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAiJkz2c2NoZW5cdEVudGYiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIiZVbWJlbm5lbmVuIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk5ldSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJlNjaGz8c3NlbCIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlplaWNoZW5rZXR0ZSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7kcndlcnQiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQgV2VydCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZM9nNjaGVuXHRFbnRmIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlVtYmVuZW5uZW4iLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNjaGz8c3NlbG5hbWUgJmtvcGllcmVuIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN1Y2hlblx0U3RyZytGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpJRERfQUJPVVRCT1ggRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIzMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gItxiZXIgUmVnaXN0cnkgRWRpdG9yIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBJQ09OICAgICAgICAgICAgSURJX1JFR0VESVQsSURJX1JFR0VESVQsMTQsOSwxNiwxNgogICAgTFRFWFQgICAgICAgICAgICJSZWFjdE9TIHJlZ2VkaXQgVmVyc2lvbiAxLjAiLElEQ19TVEFUSUMsNDksMTAsMTE5LDgsCiAgICAgICAgICAgICAgICAgICAgU1NfTk9QUkVGSVgKICAgIExURVhUICAgICAgICAgICAiQ29weXJpZ2h0IChDKSAyMDAyIFJlYWN0T1MgVGVhbSIsSURDX1NUQVRJQyw0OSwyMCwxMTksOAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTUsNiwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FWFBPUlRfVEVNUExBVEUgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI3OCwgNTQKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggIlJlZ2lzdHJ5ICZleHBvcnRpZXJlbiIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiJkFsbGVzIiwgSURDX0VYUE9SVF9BTEwsIDEyLCAxNSwgMjQ0LCAxMgogICAgQVVUT1JBRElPQlVUVE9OICJBdXNnZXfkaGx0ZXIgJlp3ZWlnOiIsIElEQ19FWFBPUlRfU0VMRUNURUQsIDEyLCAzMCwgOTAsIDEyCiAgICBFRElUVEVYVCBJRENfRVhQT1JUX1BBVEgsIDEwMiwgMzAsIDE2NCwgMTIKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU3VjaGVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlN1Y2hlbjoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICJTdWNoZW4gbmFjaDoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICJTY2hs/HNzZWxuIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIldlcnRlbiIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJEYXRlbiIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiS29tcGxldHRlIFplaWNoZW5mb2xnZSB2ZXJnbGVpY2hlbiIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgMTUwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJTdWNoZW4iLElET0ssMTYwLDUsNDUsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNjAsMjIsNDUsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlp1IGRlbiBGYXZvcml0ZW4gaGluenVm/GdlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgIk5BTUU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgIk9LIixJRE9LLDE0MCw0MCwzMCwxMSwgV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE3NSw0MCwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVm9uIGRlbiBGYXZvcml0ZW4gZW50ZmVybmVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAiTmFtZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBMSVNUQk9YICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICJPSyIsSURPSywxNDAsNzMsMzAsMTEsIFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJaZWljaGVua2V0dGUg5G5kZXJuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIiZOYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiJkRhdGVuOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRXT1JEIFdlcnQgZWRpdGllcmVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIiZOYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiJkRhdGVuOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc2lzIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWRlemltYWwiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGV6aW1hbCIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJCaW7kcmVuIFdlcnQgZWRpdGllcmVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIiZOYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiJkRhdGVuOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hbWUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkRhdGVuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0cnkgRWRpdG9yIgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkJlZmVobGUgZvxyIGRhcyBCZWFyYmVpdGVuIGRlciBnYW56ZW4gUmVnaXN0cnkiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiQmVmZWhsZSBm/HIgdW0gU2NobPxzc2VsIG9kZXIgV2VydGUgenUg5G5kZXJuIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkJlZmVobGUgdW0gZGFzIEZlbnN0ZXIgYW56dXBhc3NlbiIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJCZWZlaGxlIGb8ciBkaWUgRmF2b3JpdGVuIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIkJlZmVobGUgdW0gZGllIEhpbGZlIG9kZXIgSW5mb3JtYXRpb25lbiD8YmVyIGRhcyBQcm9ncmFtbSBhbnp1emVpZ2VuIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIkJlZmVobGUgZvxyIGRhcyBFcnN0ZWxsZW4gdm9uIG5ldWVuIFNjaGz8c3NlbG4gb2RlciBEYXRlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIsRuZGVydCBkaWUgRGF0ZW4gZWluZXMgV2VydGVzIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkb8Z3QgZWluZW4gbmV1ZW4gU2NobPxzc2VsIGhpbnp1IgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkb8Z3QgZWluZW4gbmV1ZSBaZWljaGVua2V0dGUgaGluenUgIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkb8Z3QgZWluZW4gbmV1ZW4gQmlu5HJ3ZXJ0IGhpbnp1IgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkb8Z3QgZWluZW4gbmV1ZW4gRFdPUkQgV2VydCBoaW56dSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0aWVydCBlaW5lIFRleHRkYXRlaSBpbiBkaWUgUmVnaXN0cnkiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRpZXJ0IFRlaWxlIG9kZXIgZGllIGdhbnplIFJlZ2lzdHJ5IGluIGVpbmUgVGV4dGRhdGVpIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZlcmJpbmRldCB6dSBlaW5lciBSZWdpc3RyeSBlaW5lcyBGcmVtZGNvbXB1dGVycyIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmVubnQgZGllIFZlcmJpbmR1bmcgenUgZGVyIFJlZ2lzdHJ5IGVpbmVzIEZyZW1kY29tcHV0ZXJzIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkRydWNrdCBUZWlsZSBvZGVyIGRpZSBnZXNhbXRlIFJlZ2lzdHJ5IGF1cyIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgItZmZm5ldCBkaWUgSGlsZmUiICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiWmVpZ3QgUHJvZ3JhbW1uYW1lLCBWZXJzaW9uIHVuZCBDb3B5cmlnaHQgYW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJCZWVuZGV0IGRlbiBSZWdpc3RyeSBFZGl0b3IiCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkb8Z3QgU2NobPxzc2VsIHp1IGRlbiBGYXZvcml0ZW4gaGluenUiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIkz2c2NodCBTY2hs/HNzZWwgdm9uIGRlbiBGYXZvcml0ZW4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiWmVpZ3Qgb2RlciB2ZXJzdGVja3QgZGllIFN0YXR1c2xlaXN0ZSIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICLEbmRlcnQgZGllIFBvc2l0aW9uIGRhcyBGZW5zdGVydGVpbGVycyIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJBa3R1YWxpc2llcnQgZGFzIEZlbnN0ZXIiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiTPZzY2h0IGRpZSBBdXN3YWhsIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIkJlbmVubnQgZGllIEF1c3dhaGwgdW0iCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiS29waWVydCBkZW4gU2NobPxzc2VsbmFtZW4gaW4gZGllIFp3aXNjaGVuYWJsYWdlIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIkZpbmRldCBlaW5lIFplaWNoZW5rZXR0ZSBpbiBlaW5lbSBTY2hs/HNzZWwsIGVpbmVtIE5hbWVuIG9kZXIgaW4gRGF0ZW4iCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiRmluZGV0IGRpZSBu5GNoc3RlIFplaWNoZW5rZXR0ZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SICAgICAgICAgICAgICAgIkZlaGxlciIKICAgIElEU19CQURfS0VZICAgICAgICAgICAgICJLYW5uIGRlbiBTY2hs/HNzZWwgJyVzJyBuaWNodCBsZXNlbiIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJLYW5uIGRlbiBXZXJ0ICclcycgbmljaHQgbGVzZW4iCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiS2FubiBTY2hs/HNzZWwgdm9uIGRpZXNlbSBUeXAgKCVsZCkgbmljaHQg5G5kZXJuIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIkRlciBXZXJ0IGlzdCB6dSBncm/fICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkJpdHRlIGJlc3TkdGlnZW4iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiV29sbGVuIFNpZSAnJXMnIHdpcmtsaWNoIGz2c2NoZW4/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk5ldWVyIFNjaGz8c3NlbCAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTmV1ZXIgV2VydCAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiU3VjaGZvbGdlICclcycgd3VyZGUgbmljaHQgZ2VmdW5kZW4uIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRklMRURJQUxPR19JTVBPUlRfVElUTEUgICAiUmVnaXN0cnktRGF0ZWkgaW1wb3J0aWVyZW4iCiAgICBJRFNfRklMRURJQUxPR19FWFBPUlRfVElUTEUgICAiUmVnaXN0cnktRGF0ZWkgZXhwb3J0aWVyZW4iCiAgICBJRFNfRklMRURJQUxPR19GSUxURVIgICAgICAgICAiUmVnaXN0cnktRGF0ZWllblwwKi5yZWdcMFdpbjl4L05UNCBSZWdpc3RyeS1EYXRlaWVuIChSRUdFRElUNClcMCoucmVnXDBBbGxlIERhdGVpZW4gKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19SRUdJU1RSWV9ST09UX05BTUUgICAgICAgICAgICJBcmJlaXRzcGxhdHoiCiAgICBJRFNfUkVHSVNUUllfREVGQVVMVF9WQUxVRSAgICAgICAiKFN0YW5kYXJkKSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9OT1RfU0VUICAgICAgICIoV2VydCBuaWNodCBnZXNldHp0KSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9DQU5UX0RJU1BMQVkgICIoa2FubiBXZXJ0IG5pY2h0IGRhcnN0ZWxsZW4pIgogICAgSURTX1JFR0lTVFJZX1VOS05PV05fVFlQRSAgICAgICAgIih1bmJla2FubnQgJWQpIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAi1mZmbmV0IGRpZSBIaWxmZS4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJaZWlndCBQcm9ncmFtbW5hbWUsIFZlcnNpb24gdW5kIENvcHlyaWdodCBhbiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==