LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMy0yMDA0IEl2YW4gTGVvIFB1b3RpCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfSVRBTElBTiwgU1VCTEFOR19ERUZBVUxUCgovKgogKiBNZW51CiAqLwoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZGaWxlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiRSZzY2kiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkFpdXRvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkluZm9ybWF6aW9uaSBzdWxsJ2VkaXRvciBkZWwgUmVnaXN0cm8iLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RybyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIiZFc3BvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb25uZXR0aSBhIFJlZ2lzdHJvIGluIHJldGUuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkRpc2Nvbm50dGkgZGEgUmVnaXN0cm8gZGkgcmV0ZS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3RhbXBhXHRDdHJsK1AiLCAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFJnNjaSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImTW9kaWZpY2EiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTW9kaWZpY2EiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOdW92byIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiQ2hpYXZlIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImVmFsb3JlIHN0cmluZ2EiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImVmFsb3JlIGJpbmFyaW8iLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImVmFsb3JlIERXT1JEIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRWxpbWluYVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJpbm9taW5hXHRGMiIgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYSBub21lIGNoaWF2ZSIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZUcm92YVx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImVHJvdmEgU3VjY2Vzc2l2b1x0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImVmlzdWFsaXp6YSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGRpICZTdGF0byIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJEaSZ2aWRpIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQWdnaW9ybmFcdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImUHJlZmVyaXRpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFnZ2l1bmdpIGFpIFByZWZlcml0aSIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgICwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZSaW11b3ZpIGRhaSBQcmVmZXJpdGkiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICAgICAgLCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBaXV0byIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTb21tYXJpbyBkZWxsYSBHdWlkYSIsICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mb3JtYXppb25pIHN1bGwnZWRpdG9yIGRlbCBSZWdpc3RybyIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZGlmaWNhIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIk1vZGlmaWNhIGRhdGkgYmluYXJpIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImRWxpbWluYVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImUmlub21pbmEiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTnVvdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGlhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgc3RyaW5nYSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgYmluYXJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgRFdPUkQiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFbGltaW5hXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmlub21pbmFcdEYyIiAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhIG5vbWUgY2hpYXZlIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRyb3ZhXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJJbmZvcm1hemlvbmkgc3VsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBJQ09OICAgICAgICAgICAgSURJX1JFR0VESVQsSURJX1JFR0VESVQsMTQsOSwxNiwxNgogICAgTFRFWFQgICAgICAgICAgICJSZWFjdE9TIEVkaXRvciBkZWwgUmVnaXN0cm8gVmVyc2lvbmUgMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBSZWFjdE9TIFRlYW0iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhIFN0cmluZ2EiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdGEgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGxhIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhIFN0cmluZ2EiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdGUgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiRXNhZGVjaW1hbGUiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW1hbGUiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsbGEiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTm9tZSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUaXBvIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkRhdGkiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJFZGl0b3IgZGVsIFJlZ2lzdHJvIgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgbGF2b3JhcmUgc3UgdHV0dG8gaWwgUmVnaXN0cm8iCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciBlZGl0YXJlIHZhbG9yaSBvIGNoaWF2aSIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIHBlcnNvbmFsaXp6YXJlIGxhIGZpbmVzdHJhIGRlbCBSZWdpc3RybyIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIGFjY2VkZXJlIGFsbGUgY2hpYXZpIHVzYXRlIGZyZXF1ZW50ZW1lbnRlIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgdmlzdWFsaXp6YXJlIGxhIEd1aWRhIGUgaW5mb3JtYXppb25pIHN1bGwnZWRpdG9yIGRlbCBSZWdpc3RybyIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIGNyZWFyZSBudW92ZSBjaGlhdmkgbyB2YWxvcmkiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJNb2RpZmljYSBpIGRhdGkgZGVsIHZhbG9yZSIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJBZ2dpdW5nZSB1bmEgbnVvdmEgY2hpYXZlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkFnZ2l1bmdlIHVuIG51b3ZvIHZhbG9yZSBzdHJpbmdhIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkFnZ2l1bmdlIHVuIG51b3ZvIHZhbG9yZSBiaW5hcmlvIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkFnZ2l1bmdlIHVuIG51b3ZvIHZhbG9yZSBhIGRvcHBpYSBwYXJvbGEiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGEgdW4gZmlsZSBkaSB0ZXN0byBuZWwgUmVnaXN0cm8iCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFc3BvcnRhIHR1dHRvIG8gcGFydGUgZGVsIFJlZ2lzdHJvIGluIHVuIGZpbGUgZGkgdGVzdG8iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2kgY29ubmV0dGUgYWwgUmVnaXN0cm8gZGkgdW4gY29tcHV0ZXIgcmVtb3RvIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNpIGRpc2Nvbm5ldHRlIGRhbCBSZWdpc3RybyBkaSB1biBjb21wdXRlciByZW1vdG8iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiU3RhbXBhIHR1dHRvIG8gcGFydGUgZGVsIFJlZ2lzdHJvIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiQXByZSBsJ2FpdXRvIGRlbGwnRWRpdG9yIGRlbCBSZWdpc3RybyIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJWaXN1YWxpenphIGluZm9ybWF6aW9uaSBzdWwgcHJvZ3JhbW1hLCBudW1lcm8gZGkgdmVyc2lvbmUgZSBjb3B5cmlnaHQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJFc2NlIGRhbGwnZWRpdG9yIGRlbCBSZWdpc3RybyIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiQWdnaXVuZ2UgdW5hIGNoaWF2ZSBhbGxhIGxpc3RhIGRlaSBQcmVmZXJpdGkiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIlJpbXVvdmUgdW5hIG8gcGn5IGNoaWF2aSBkYWxsYSBsaXN0YSBkZWkgcHJlZmVyaXRpIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk1vc3RyYSBvIG5hc2NvbmRlIGxhIGJhcnJhIGRpIHN0YXRvIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkNhbWJpYSBsYSBwb3NpemlvbmUgZGVsIHNlcGFyYXRvcmUgdHJhIGR1ZSBwYW5uZWxsaSIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJBZ2dpb3JuYSBsYSBmaW5lc3RyYSIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJFbGltaW5hIGxhIHNlbGV6aW9uZSIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSaW5vbWluYSBsYSBzZWxlemlvbmUiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQ29waWEgaWwgbm9tZSBkZWxsYSBjaGlhdmUgc2VsZXppb25hdGEgbmVnbGkgYXBwdW50aSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJUcm92YSB1bmEgc3RyaW5nYSBkaSB0ZXN0byBpbiB1bmEgY2hpYXZlLCB1biB2YWxvcmUgbyBpbiBkZWkgZGF0aSIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJUcm92YSBsYSB2b2x0YSBzdWNjZXNzaXZhIGlsIHRlc3RvIHNwZWNpZmljYXRvIG5lbGxhIHJpY2VyY2EgcHJlY2VkZW50ZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkVycm9yZSIKICAgIElEU19CQURfS0VZCQkgICAgIkltcG9zc2liaWxlIHRyb3ZhcmUgbGEgY2hpYXZlICclcyciCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiSW1wb3NzaWJpbGUgdHJvdmFyZSBpbCB2YWxvcmUgJyVzJyIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJJbXBvc3NpYmlsZSBlZGl0YXJlIHZhbG9yaSBkaSBxdWVzdG8gdGlwbyAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJWYWxvcmUgdHJvcHBvIGdyYW5kZSAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJDb25mZXJtYXJlIENhbmNlbGxhemlvbmUgZGVsIFZhbG9yZSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJTZWkgc2ljdXJvIGRpIHZvbGVyIGNhbmNlbGxhcmUgaWwgdmFsb3JlICclcyc/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk51b3ZhIENoaWF2ZSAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTnVvdm8gVmFsb3JlICMlZCIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0RJQUxPRzEgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI2OCwgOTgKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpFTkQKCklERF9ESUFMT0cyIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMTg3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEaWFsb2dvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsbGEiLElEQ0FOQ0VMLDEzMCwyNCw1MCwxNApFTkQKCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIkFwcmUgbCdhaXV0byBkZWxsJ2VkaXRvciBkZWwgUmVnaXN0cm8uIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiVmlzdWFsaXp6YSBpbmZvcm1hemlvbmkgc3VsIHByb2dyYW1tYSwgaWwgbnVtZXJvIGRpIHZlcnNpb25lIGUgaWwgY29weXJpZ2h0LiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==