LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDMgTWFyY2VsbyBEdWFydGUKICogQ29weXJpZ2h0IDIwMDQgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKLyoKICogTWVudQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZBcnF1aXZvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiU2FpJnIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiQWomdWRhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlNvYnJlLi4uIiwgICAgICAgICAgICAgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZGaWNoZWlybyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlNhaSZyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIkFqJnVkYSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTb2JyZS4uLiIsICAgICAgICAgICAgICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdHJvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGFyIGFycXVpdm8gZG8gUmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGFyIGFycXVpdm8gZG8gUmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbmVjdGFyIFJlZ2lzdHJvIGRhIHJlZGUuLi4iLCAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkRlc2NvbmVjdGFyIFJlZ2lzdHJvIGRhIHJlZGUuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSW0mcHJpbWlyXHRDdHJsK1AiLCAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNhaSZyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkVkaXRhciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZNb2RpZmljYXIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5vdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGF2ZSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmVGV4dG8iLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZCaW7hcmlvIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJkRXT1JEIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmVub21lYXJcdEYyIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgbm9tZSBkYSBjaGF2ZSIsICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTG9jYWxpemFyXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIkwmb2NhbGl6YXIgcHLzeGltYVx0RjMiLCAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJFJnhpYmlyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIHN0YXR1cyIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkF0dWFsaXphclx0RjUiLCAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcml0b3MiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWRpY2lvbmFyIGFvcyBGYXZvcml0b3MiLCAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJlJlbW92ZXIgRmF2b3JpdG8iLCAgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgICAgICwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJBaiZ1ZGEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVG9waWNzIGRhIEFqdWRhIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNvYnJlIG8gRWRpdG9yIGRvIFJlZ2lzdHJvIiwgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGFyIGZpY2hlaXJvIGRvIFJlZ2lzdG8uLi4iLCBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGFyIGZpY2hlaXJvIGRvIFJlZ2lzdG8uLi4iLCBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbmVjdGFyIFJlZ2lzdG8gZGEgcmVkZS4uLiIsICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgUmVnaXN0byBkYSByZWRlLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkltJnByaW1pclx0Q3RybCtQIiwgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZFZGl0YXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTW9kaWZpY2FyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOb3ZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2hhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJlRleHRvIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmQmlu4XJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tZWFyXHRGMiIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWFyIG5vbWUgZGEgY2hhdmUiLCAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkxvY2FsaXphclx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJMJm9jYWxpemFyIHBy83hpbWFcdEYzIiwgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiRSZ4aWJpciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSBzdGF0dXMiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkRpdmlkaXIiLCAgICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBY3R1YWxpemFyXHRGNSIsICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJkZhdm9yaXRvcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBZGljaW9uYXIgYW9zIEZhdm9yaXRvcyIsICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImUmVtb3ZlciBGYXZvcml0byIsICAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICAgICAgLCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIkFqJnVkYSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUb3BpY29zIGRhIEFqdWRhIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFjZXJjYSBkbyBFZGl0b3IgZGUgUmVnaXN0byIsIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZGlmaWNhciIsICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmljYXIgZGFkb3MgYmlu4XJpb3MiLCAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZFeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJlJlbm9tZWFyIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOb3ZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2hhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJlRleHRvIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmQmlu4XJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tZWFyXHRGMiIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWFyIG5vbWUgZGEgY2hhdmUiLCAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkxvY2FsaXphclx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTb2JyZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVhY3RPUyByZWdlZGl0IFZlcnNpb24gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBSZWFjdE9TIFRlYW0iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGFyIHRleHRvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbWUgZG8gdmFsb3I6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGFkb3MgZG8gdmFsb3I6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgREVGUFVTSEJVVFRPTiAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhciBEV09SRCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb21lIGRvIHZhbG9yOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhZG9zIGRvIHZhbG9yOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGVjaW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgREVGUFVTSEJVVFRPTiAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5vbWUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVGlwbyIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYWRvcyIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIkVkaXRvciBkbyBSZWdpc3RybyIKICAgIElEQ19SRUdFRElUICAgICAgICAgICAgICJSRUdFRElUIgogICAgSURDX1JFR0VESVRfRlJBTUUgICAgICAgIlJFR0VESVRfRlJBTUUiCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiRWRpdG9yIGRlIFJlZ2lzdG8iCiAgICBJRENfUkVHRURJVCAgICAgICAgICAgICAiUkVHRURJVCIKICAgIElEQ19SRUdFRElUX0ZSQU1FICAgICAgICJSRUdFRElUX0ZSQU1FIgpFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgdHJhYmFsaGFyIGNvbSBvIFJlZ2lzdHJvIGludGVpcm8uIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGVkaefjbyBkZSB2YWxvcmVzIG91IGNoYXZlcy4iCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgcGVyc29uYWxpemHn428gZGEgamFuZWxhIGRvIFJlZ2lzdHJvLiIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBhY2Vzc2FyIGNoYXZlcyBmcmVxdWVudGVtZW50ZSB1c2FkYXMuIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGV4aWJp5+NvIGRhIGFqdWRhIGUgaW5mb3JtYef1ZXMgc29icmUgbyBFZGl0b3IgZG8gUmVnaXN0cm8uIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGNyaWHn428gZGUgbm92YXMgY2hhdmVzIG91IHZhbG9yZXMiCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgdHJhYmFsaGFyIGNvbSBvIFJlZ2lzdG8gaW50ZWlyby4iCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgZWRp5+NvIGRlIHZhbG9yZXMgb3UgY2hhdmVzLiIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBwZXJzb25hbGl6YefjbyBkYSBqYW5lbGEgZG8gUmVnaXN0by4iCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgYWNlZGVyIGNoYXZlcyBmcmVxdWVudGVtZW50ZSB1c2FkYXMuIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGV4aWJp5+NvIGRhIGFqdWRhIGUgaW5mb3JtYef1ZXMgc29icmUgbyBFZGl0b3IgZG8gUmVnaXN0by4iCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgY3JpYefjbyBkZSBub3ZhcyBjaGF2ZXMgb3UgdmFsb3JlcyIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWNhIG9zIGRhZG9zIGRvIHZhbG9yLiIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJBZGljaW9uYSB1bWEgbm92YSBjaGF2ZSIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJBZGljaW9uYSB1bSBub3ZvIHZhbG9yIHRleHRvLiIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJBZGljaW9uYSB1bSBub3ZvIHZhbG9yIGJpbuFyaW8uIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkFkaWNpb25hIHVtIG5vdm8gdmFsb3IgRFdPUkQuIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRhIHVtIGFycXVpdm8gdGV4dG8gcGFyYSBvIHJlZ2lzdHJvLiIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cG9ydGEgdG9kbyBvdSBwYXJ0ZSBkbyByZWdpc3RybyBwYXJhIHVtIGFycXVpdm8gdGV4dG8uIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmVjdGEgYSB1bSByZWdpc3RybyBlbSB1bSBjb21wdXRhZG9yIHJlbW90by4iCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVzY29uZWN0YSBkZSB1bSByZWdpc3RybyB1bSBjb21wdXRhZG9yIHJlbW90by4iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSW1wcmltZSB0b2RvIG91IHBhcnRlIGRvIHJlZ2lzdHJvLiIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIkFicmUgYSBhanVkYSBkbyBFZGl0b3IgZG8gUmVnaXN0cm8uIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkV4aWJlIGluZm9ybWHn9WVzIGRvIHByb2dyYW1hLCBu+m1lcm8gZGEgdmVyc+NvIGUgY29weXJpZ2h0LiIKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJNb2RpZmljYSBvcyBkYWRvcyBkbyB2YWxvci4iCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiQWRpY2lvbmEgdW1hIG5vdmEgY2hhdmUiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiQWRpY2lvbmEgdW0gbm92byB2YWxvciB0ZXh0by4iCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiQWRpY2lvbmEgdW0gbm92byB2YWxvciBiaW7hcmlvLiIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJBZGljaW9uYSB1bSBub3ZvIHZhbG9yIERXT1JELiIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0YSB1bSBmaWNoZWlybyBkZSB0ZXh0byBwYXJhIG8gcmVnaXN0by4iCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRhIHRvZG8gb3UgcGFydGUgZG8gcmVnaXN0byBwYXJhIHVtIGZpY2hlaXJvIGRlIHRleHRvLiIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25lY3RhIGEgdW0gcmVnaXN0byB1bSBjb21wdXRhZG9yIHJlbW90by4iCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVzY29uZWN0YSBkZSB1bSByZWdpc3RvIHVtIGNvbXB1dGFkb3IgcmVtb3RvLiIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJJbXByaW1lIHRvZG8gb3UgcGFydGUgZG8gcmVnaXN0by4iCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBYnJlIGEgYWp1ZGEgZG8gRWRpdG9yIGRlIFJlZ2lzdG8uIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkV4aWJlIGluZm9ybWHn9WVzIGRvIHByb2dyYW1hLCBu+m1lcm8gZGEgdmVyc+NvIGUgY29weXJpZ2h0LiIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkVuY2VycmEgbyBFZGl0b3IgZG8gUmVnaXN0cm8uIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJBZGljaW9uYSBjaGF2ZXMgYSBsaXN0YSBkZSBmYXZvcml0b3MuIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJSZW1vdmUgY2hhdmVzIGRhIGxpc3RhIGRlIGZhdm9yaXRvcy4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTW9zdHJhIG91IG9jdWx0YSBhIGJhcnJhIGRlIHN0YXR1cy4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiQWx0ZXJhIGEgcG9zaefjbyBkYSBkaXZpc+NvIGVudHJlIG9zIHBhaW7paXMuIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkF0dWFsaXphIGEgamFuZWxhLiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJFeGNsdWkgYSBzZWxlY+NvLiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSZW5vbWVpYSBhIHNlbGVj428uIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkNvcGlhIG8gbm9tZSBkYSBjaGF2ZSBzZWxlY2lvbmFkYSBwYXJhIGEgwXJlYSBkZSB0cmFuc2ZlcupuY2lhLiIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJMb2NhbGl6YSB1bSB0ZXh0byBlbSB1bWEgY2hhdmUsIHZhbG9yIG91IGRhZG8uIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkxvY2FsaXphIGEgcHLzeGltYSBvY29ycupuY2lhIGRvIHRleHRvIGVzcGVjaWZpY2FkbyBuYSBwZXNxdWlzYSBhbnRlcmlvci4iCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiRW5jZXJyYSBvIEVkaXRvciBkZSBSZWdpc3RvLiIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiQWRpY2lvbmEgY2hhdmVzIGEgbGlzdGEgZGUgZmF2b3JpdG9zLiIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiUmVtb3ZlIGNoYXZlcyBkYSBsaXN0YSBkZSBmYXZvcml0b3MuIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk1vc3RyYSBvdSBvY3VsdGEgYSBiYXJyYSBkZSBzdGF0dXMuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkFsdGVyYSBhIHBvc2nn428gZGEgZGl2aXPjbyBlbnRyZSBvcyBwYWlu6WlzLiIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJBY3R1YWxpemEgYSBqYW5lbGEuIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkV4Y2x1aSBhIHNlbGVj5+NvLiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSZW5vbWVpYSBhIHNlbGVj5+NvLiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpYSBvIG5vbWUgZGEgY2hhdmUgc2VsZWNpb25hZGEgcGFyYSBhIMFyZWEgZGUgdHJhbnNmZXLqbmNpYS4iCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiTG9jYWxpemEgdW0gdGV4dG8gbnVtYSBjaGF2ZSwgdmFsb3Igb3UgZGFkby4iCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiTG9jYWxpemEgYSBwcvN4aW1hIG9jb3Jy6m5jaWEgZG8gdGV4dG8gZXNwZWNpZmljYWRvIG5hIHBlc3F1aXNhIGFudGVyaW9yLiIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkVycm8iCiAgICBJRFNfQkFEX0tFWQkJICAgICJO428gcG9kZSBjb25zdWx0YXIgYSBjaGF2ZSAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk7jbyBwb2RlIGNvbnN1bHRhciBvIHZhbG9yICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiTuNvIHBvZGUgZWRpdGFyIGNoYXZlcyBkZXN0ZSB0aXBvICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIlZhbG9yIOkgbXVpdG8gZ3JhbmRlICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkNvbmZpcm1hciBleGNsdXPjbyBkZSB2YWxvciIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJUZW0gY2VydGV6YSBxdWUgZGVzZWphIGV4Y2x1aXIgbyB2YWxvciAnJXMnPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOb3ZhIGNoYXZlICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOb3ZvIHZhbG9yICMlZCIKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJFcnJvIgogICAgSURTX0JBRF9LRVkJCSAgICAiTuNvIHBvZGUgcGVyZ3VudGFyIGEgY2hhdmUgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJO428gcG9kZSBwZXJndW50YXIgbyB2YWxvciAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk7jbyBwb2RlIGVkaXRhciBjaGF2ZXMgZGVzdGUgdGlwbyAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJWYWxvciBtdWl0byBncmFuZGUgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQ29uZmlybWFyIGV4Y2x1c+NvIGRlIHZhbG9yIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIlRlbSBjZXJ0ZXphIHF1ZSBkZXNlamEgZXhjbHVpciBvIHZhbG9yICclcyc/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk5vdmEgY2hhdmUgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk5vdm8gdmFsb3IgIyVkIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKgogKiBEaWFsb2cKICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX0RJQUxPRzEgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI2OCwgOTgKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX0RJQUxPRzIgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxODcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRpYWxvZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMzAsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsSURDQU5DRUwsMTMwLDI0LDUwLDE0CkVORAoKCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKCgovKgogKkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgogKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIFJlZ2lzdHJ5IEVkaXRvciBIZWxwLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkRpc3BsYXlzIHByb2dyYW0gaW5mb3JtYXRpb24sIHZlcnNpb24gbnVtYmVyLCBhbmQgY29weXJpZ2h0LiIKICpFTkQKICovCgoKLyoKICpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQogKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIkFicmUgYSBhanVkYSBkbyBFZGl0b3IgZGUgUmVnaXN0b3MuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTW9zdHJhIGluZm9ybWHn428gZG8gcHJvZ3JhbWEsIG76bWVybyBkYSB2ZXJz428sIGUgY29weXJpZ2h0LiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==