LyoKICogQ29weXJpZ2h0IDIwMDYgYnkgUGhpbCBLcnlsb3YKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19SVVNTSUFOLCBTVUJMQU5HX0RFRkFVTFQKCk1BSU5NRU5VIE1FTlUgRElTQ0FSREFCTEUgCkJFR0lOCiAgICBQT1BVUCAiJtTg6esiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLR7ufkJuDy/Fx0Q3RybCtOIiwgICBJRF9GSUxFX05FVwogICAgICAgIE1FTlVJVEVNICImzvLq8Pvy/Fx0Q3RybCtPIiwgICBJRF9GSUxFX09QRU4KICAgICAgICBNRU5VSVRFTSAiJtHu9fDg7ejy/Fx0Q3RybCtTIiwgSURfRklMRV9TQVZFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsIm+/Xu5CIsICAgICBJRF9GSUxFX0VYSVQKICAgIEVORAogICAgUE9QVVAgIibP8ODi6uAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImzvLs5e3o8vxcdEN0cmwrWiIsICAgICAgICAgICBJRF9FRElUX1VORE8KICAgICAgICBNRU5VSVRFTSAiJs/u4vLu8Ojy/Fx0Q3RybCtZIiwgICAgICAgICAgSURfRURJVF9SRURPCiAgICAgICAgTUVOVUlURU0gIsL75OXr6PL8IOIm8eVcdEN0cmwrQSIsICAgICAgIElEX0VESVRfU0VMRUNUQUxMCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibC+/Dl5+Dy/Fx0Q3RybCtYIiwgICAgICAgICAgIElEX0VESVRfQ1VUCiAgICAgICAgTUVOVUlURU0gIibK7u/o8O7i4PL8XHRDdHJsK0MiLCAgICAgICAgIElEX0VESVRfQ09QWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm0u7r/OruIOTr/yD38uXt6P8iLCAgICAgICAgICBJRF9FRElUX1JFQURPTkxZCiAgICAgICAgTUVOVUlURU0gIibI5+zl7eXtIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZJRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJsTu7+7r7ejy5ev87e4iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIibI7fTu8Ozg9uj/IO4g4vvk5evl7ejoIiwgICAgICAgICBJRF9FRElUX1NFTEVDVElPTklORk8KICAgICAgICAgICAgTUVOVUlURU0gIibU7vDs4PIg8ejs4u7r7uIiLCAgICAgICAgICAgICAgICBJRF9FRElUX0NIQVJGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gItTu8Ozg8iDx6Ozi7uvu4iAm7+4g8+zu6/fg7ej+IiwgICBJRF9FRElUX0RFRkNIQVJGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gItTu8Ozg8iAm4OHn4PbgIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX1BBUkFGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gIs8m7uvz9+jy/CDy5erx8iIsICAgICAgICAgICAgICAgICBJRF9FRElUX0dFVFRFWFQKICAgICAgICBFTkQKICAgIEVORAogICAgUE9QVVAgItTu8Cbs4PIiCiAgICBCRUdJTgogICAgICAgIFBPUFVQICIm1O7tIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICIm0ejx8uXs7fvpXHRDdHJsKzEiLCAgICAgICAgICAgICAgSURfQkFDS18xCiAgICAgICAgICAgIE1FTlVJVEVNICImxuXr8u7i4PL76SBQb3N0VGhhdFx0Q3RybCsyIiwgICAgSURfQkFDS18yCiAgICAgICAgRU5ECiAgICAgICAgUE9QVVAgIibC+/Dg4u3o4uDt6OUiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIsIm6+Xi7lx0Q3RybCtMIiwgICAgICAgICAgSURfQUxJR05fTEVGVAogICAgICAgICAgICBNRU5VSVRFTSAiz+4gJvbl7fLw81x0Q3RybCtFIiwgICAgICBJRF9BTElHTl9DRU5URVIKICAgICAgICAgICAgTUVOVUlURU0gIsIm7/Dg4u5cdEN0cmwrUiIsICAgICAgICAgSURfQUxJR05fUklHSFQKICAgICAgICBFTkQKICAgIEVORApFTkQK