LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDQgSGFqaW1lIFNlZ2F3YQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0pBUEFORVNFLCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqIE1lbnUKICovCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICKDjINXg1iDZ4OKKCZSKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIoOMg1eDWINng4qCzINDg5ODfIFbg2coJkkpLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIoOMg1eDWINng4qCzINHg06DWIN8gVuDZygmRSkuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig2yDYoNng4+BW4NOg4yDV4NYg2eDioLJkNqRsSgmQykuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAig2yDYoNng4+BW4NOg4yDV4NYg2eDioKpgueQ2JJmKCZEKS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKI8438KCZQKVx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAij0mXuSgmeCkiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAildKPVygmRSkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICKVz41YKCZNKSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAikFaLSygmTikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIoNMgVsoJkspIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICKVto6al/EoJlMpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAig2+DQ4Npg4ooJkIpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiRFdPUkSSbCgmRCkiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImTXVsdGkgU3RyaW5nIFZhbHVlIiwgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKN7Y+cKCZEKVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAilryRT4LMlc+NWCgmUilcdEYyIiwgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIoNMgVuWvILwg1KDc4FbKCZDKSIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIoyfjfUoJkYpXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIo6fgsyMn431jPOV4igmeClcdEYzIiwgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAilVxcjqYoJlYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAig1iDZYFbg16DWINvgVsoJkIpIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIpWqioQoJmwpIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKDioN0g4yDYoNWg4UoJlIpXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAigqiLQ4LJk/yC6CgmRikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICKCqItDgsmT/ILogsmSx4nBKCZBKS4uLiIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICKCqItDgsmT/ILogqmC543tj5woJlIpLi4uIiwgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAig3eDi4N2KCZIKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIoN3g4uDdigmSClcdEYxIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig2+BW4NXg4eDk4/ulfEoJkEpIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICKVz41YKCZNKSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICKDb4NDg2mDioNmgVuDXoLwlc+NWCIsICAgICAgICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAije2PnCgmRClcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAilryRT4LMlc+NWCgmUikiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICKQVotLKCZOKSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAig0yBWygmSykiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIpW2jpqX8SgmUykiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICKDb4NDg2mDiigmQikiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJEV09SRJJsKCZEKSIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNdWx0aSBTdHJpbmcgVmFsdWUiLCAgICAgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIo3tj5woJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICKWvJFPgsyVz41YKCZSKVx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydC4uLiIsICAgICAgICAgICAgICAgSURfRURJVF9FWFBPUlQKICAgICAgICBNRU5VSVRFTSAig0yBW5a8gvCDUoNzgVsoJkMpIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAijJ+N9SgmRilcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICKVto6al/GCzJXSj1ciCkZPTlQgOSwgIk1TIFVJIEdvdGhpYyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAikmyCzJa8kU86IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKDZoFbg146IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICKDTIODg5ODWoOLIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRXT1JEkmyCzJXSj1ciCkZPTlQgOSwgIk1TIFVJIEdvdGhpYyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAikmyCzJa8kU86IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKDZoFbg146IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAig3iBW4NYIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiMTaQaZCUIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIjEwkGmQlCIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAig0yDg4OTg1qDiyIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICKWvJFPIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIoNeg0ODdiIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICKDZoFbg14iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICKDjINXg1iDZ4OKg0eDZoNCg14iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICKDjINXg1iDZ4OKkVORzILwkYCN7IK3gumDUoN9g5ODaCIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICKSbILGg0yBW4LwldKPV4K3gumDUoN9g5ODaCIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICKDjINXg1iDZ4OKg0WDQoOTg2iDRYLwg0qDWINeg32DQ4NZgreC6YNSg32Dk4NoIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIoLmgq2OZ4Kkg0yBW4LJg0GDToNag1iCt4Lpg1KDfYOTg2giCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAig4yDV4NYg2eDioNHg2aDQoNegsmCwoKigsSCzIN3g4uDdoLij+6V8YLwlVyOpoK3gumDUoN9g5ODaCIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICKQVoK1gqKDTIFbguKSbILwjeyQrIK3gumDUoN9g5ODaCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIpJsgsyDZoFbg16C8JXPjVgiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAikFaCtYKig0yBW4LwkseJwSIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICKQVoK1gqKVto6al/GC8JLHicEiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAikFaCtYKig2+DQ4Npg4qC8JLHicEiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAikFaCtYKiRFdPUkSSbILwkseJwSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAig2WDTINYg2eDdINAg0ODi4Lwg4yDV4NYg2eDioLJg0ODk4N8gVuDZyIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIoOMg1eDWINng4qCzIjqlZSC3IK9gs2RU5WUgvCDZYNMg1iDZ4N0g0CDQ4OLgsmDR4NOg1iDfIFbg2ciCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAig4qDgoFbg2eDUoOTg3ODhYFbg16CzIOMg1eDWINng4qCyZDakbEiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAig4qDgoFbg2eDUoOTg3ODhYFbg16CzIOMg1eDWINng4qCqYLnkNiSZiIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICKDjINXg1iDZ4OKgsyI6pWUgtyCvYLNkVOVlILwiPON/CIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIoOMg1eDWINng4qDR4Nmg0KDXoLMg3eDi4N2gvCKSoKtIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIoN2g42DT4OJg4CCzI/ulfGBQYNvgVuDV4OHg5OBQZKYjeyO0oLwlVyOpiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIoOMg1eDWINng4qDR4Nmg0KDXoLwj0mXuSIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAig0yBW4LwgqiLQ4LJk/yC6ILJkseJwSIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAig0yBW4LwgqiLQ4LJk/yC6IKpgueN7Y+cIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIoNYg2WBW4Neg1iDb4FbgvCVXI6mgUWJQoK3IgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIoN5g0ODk4rUgsyCtYKrguiCzIjKknWC8JXPjVgiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAig0WDQoOTg2iDRYLwg4qDdIOMg2KDVoOFIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIpFJkfCCtYK9jYCW2oLwje2PnCIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICKRSZHwgrWCvY2AltqCzJa8kU+C8JXPjVgiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAikUmR8IK1gr2DTIFbgsyWvJFPgvCDToOKg2KDdoN7gVuDaILJg1KDc4FbIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIoNMgVuBQZJsgUGDZoFbg16CqYLnlbaOmpfxgvCMn431IgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIojIkU+CzIyfjfWP8IyPgsmCqIKigsSOn4LMjPOV4oLwjJ+N9SIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIoNHg4mBWyIKICAgIElEU19CQURfS0VZCQkgICAgIoNMgVsgJyVzJ4Kqj4qTvoLFgquC3IK5gvEiCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAikmwgJyVzJ4Kqj4qTvoLFgquC3IK5gvEiCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAigrGCzINeg0ODdoLMg0yBW4LNldKPV4LFgquC3IK5gvEgKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAikmyCqpHlgquCt4KsgtyCtyAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICKSbILMje2PnIptlEYiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAilnuTloLJICclcyeC8I3tj5yCtYLcgreCqT8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAikFaCtYKig0yBWyAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAikFaCtYKikmwgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIlNlYXJjaCBzdHJpbmcgJyVzJyBub3QgZm91bmQiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICKDjINXg1iDZ4OKg0eDZoNCg16CzIN3g4uDdoLwikqCrSIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIoN2g42DT4OJg4CCzI/ulfGBQYNvgVuDV4OHg5OBQZKYjeyO0oLwlVyOpiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==