LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgV2Fsb24KICoKICoJV2Fsb24gaXMgbm90IGxpc3RlZCBpbiBNaWNyb3NvZnQgc3VwcG9ydGVkIGxhbmd1YWdlczsgSSBwaWNrZWQgMHg5MAogKgogKiBTaSB2b3Mgdm9sb3ogYWlkZXIgYXZvdSBsaSByYXRv+3JuYWVkamUgZGVzIGxpYmVzIHByb2dyYW1lcyDoIHdhbG9uLAogKiB2b3MgcG9sb3ogc2Ny7nJlIGEgbCcgYWRyZXNzZSBlbWlsZSA8bGludXgtd2FAY2hhbmFlLmFscGhhbmV0LmNoPgogKiAKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjA0OTAiKSAvKiBub3Qgb2ZmaWNpYWwgKi8KTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIldhbG9uIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIldhbGxvb24iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwid2FsIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIldhbG9uIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiMzIiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJCZWxqaWtlIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiQmVsZ2l1bSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJCRUwiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwiQmVsamlrZSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiMDQ5MCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCIzMiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwiODUwIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSwiMTI1MiIpCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQovKiBMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCIsIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsIiAiKQpMT0NWQUwoTE9DQUxFX1NHUk9VUElORywgIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKSAqLwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMsICIwMTIzNDU2Nzg5IikKTE9DVkFMKExPQ0FMRV9TQ1VSUkVOQ1ksIqQiKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCAiRVVSIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwiLCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCIuIikKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lDVVJSRElHSVRTLCIyIikKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMsICIyIikKLyogTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikgKi8KTE9DVkFMKExPQ0FMRV9TREFURSwiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkL01NL3l5eXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiTGkgZGRkIGQgZGkgTU1NTSB5eXl5IikKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCwgImhoOm1tOnNzIikKLyogTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUxEQVRFKSAqLwpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDRU5UVVJZKSAqLwpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sIjEiKQpMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX0lNT05MWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX1MxMTU5LCAiIikKTE9DVkFMKExPQ0FMRV9TMjM1OSwgIiIpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwgIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSKSAqLwpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywgIjYiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIsICIwIikKCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJsb25kaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJt5XJkaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCJtZXJraWRpIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsImRqdWRpIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsInZpbnJkaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCJzZW1kaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJkaW1lZ25lIikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCJsb24iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwibeVyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIm1lciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCJkanUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwidmluIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsInNlbSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCJkaW0iKQoKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiZGphbnbuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwiZul2cu4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCJt5XMiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCJhdnJpIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwibWFleSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsImRqdW4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJkanVsZXQiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJhd291c3NlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwic2V0aW1iZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCJvY3T0YmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwibvR2aW1iZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJkZWNpbWJlIikKLyogTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpICovCgpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCJkamEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCJmZXYiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJt5XMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCJhdnIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCJtYWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJkam4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3LCJkamwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCJhd28iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJzZXQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwib2N0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIm70diIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJkZWMiKQovKiBMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywiIikgKi8KCkxPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTiwgIiIpCkxPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTiwgIi0iKQovKiBMT0NWQUwoTE9DQUxFX0lQT1NTSUdOUE9TTiwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMsICIiKSAqLwpMT0NWQUwoTE9DQUxFX0lQT1NTRVBCWVNQQUNFLCAiMCIpCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTLCAiIikgKi8KTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwgIjAiKQovKiBMT0NWQUwoTE9DQUxFX0ZPTlRTSUdOQVRVUkUsICIiKSAqLwpMT0NWQUwoTE9DQUxFX1NJU082MzlMQU5HTkFNRSwid2EiKQpMT0NWQUwoTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIkJFIikK