LyoKICogUmVnZWRpdCByZXNvdXJjZXMgKEl0YWxpYW4gTGFuZ3VhZ2UgU3VwcG9ydCkKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMy0yMDA0IEl2YW4gTGVvIFB1b3RpCiAqIENvcHlyaWdodCAyMDA2IEFudG9uaW8gQ29kYXp6aQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfSVRBTElBTiwgU1VCTEFOR19ORVVUUkFMCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdHJvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGEuLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkVzcG9ydGEuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbm5ldHRpIGEgUmVnaXN0cm8gaW4gcmV0ZSIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImRGlzY29ubmV0dGkgZGEgUmVnaXN0cm8gZGkgcmV0ZSIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3RhbXBhXHRDdHJsK1AiLCAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFJnNjaSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImTW9kaWZpY2EiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTW9kaWZpY2EiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOdW92byIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiQ2hpYXZlIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvcmUgJnN0cmluZ2EiLCAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvcmUgJmJpbmFyaW8iLCAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvcmUgJkRXT1JEIiwgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNdWx0aSBTdHJpbmcgVmFsdWUiLCAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkVsaW1pbmFcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZSaW5vbWluYVx0RjIiICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWEgbm9tZSBjaGlhdmUiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVHJvdmFcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJlRyb3ZhIFN1Y2Nlc3Npdm9cdEYzIiwgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJlZpc3VhbGl6emEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJCYXJyYSBkaSAmU3RhdG8iLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRGkmdmlkaSIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFnZ2lvcm5hXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJlByZWZlcml0aSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBZ2dpdW5naSBhaSBQcmVmZXJpdGkuLi4iLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJlJpbXVvdmkgZGFpIFByZWZlcml0aS4uLiIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZBaXV0byIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTb21tYXJpbyBkZWxsYSBHdWlkYSIsICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mb3JtYXppb25pIHN1bGwnZWRpdG9yIGRlbCBSZWdpc3RybyIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZGlmaWNhIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIk1vZGlmaWNhIGRhdGkgYmluYXJpIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImRWxpbWluYVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImUmlub21pbmEiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTnVvdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGlhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yZSAmc3RyaW5nYSIsICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yZSAmYmluYXJpbyIsICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yZSAmRFdPUkQiLCAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJk11bHRpIFN0cmluZyBWYWx1ZSIsICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRWxpbWluYVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJpbm9taW5hXHRGMiIgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeHBvcnQuLi4iLCAgICAgICAgICAgICAgICAgIElEX0VESVRfRVhQT1JUCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYSBub21lIGNoaWF2ZSIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZUcm92YVx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCi8qCiAqIERpYWxvZwogKi8KCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJUcm92YSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIlRyb3ZhOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKTFRFWFQgICAgICAgICAgICJUcm92YSBpbjoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOApDSEVDS0JPWCAgICAgICAgIkNoaWF2aSIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIk5vbWUgKGNhbXBvKSIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIkRhdGkgKGNhbXBvKSIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJTb2xvIHN0cmluZ2hlIGludGVyZSIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkRFRlBVU0hCVVRUT04gICAiVHJvdmEiLElET0ssMTc1LDUsMzAsMTEsV1NfR1JPVVAKUFVTSEJVVFRPTiAgICAgICJDaGl1ZGkiLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkFnZ2l1bmdpIEZhdm9yaXRvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkxURVhUICAgICAgICAgICAiTm9tZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CkVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQ2FuY2VsbGEiLElEQ0FOQ0VMLDE3NSw0MCwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJpbXVvdmkgRmF2b3JpdG8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJOb21lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTApERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw3MywzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkFubnVsbGEiLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhIFN0cmluZ2EiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGF0aSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxsYSIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZGl0YSBEV09SRCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICBMVEVYVCAgICAgICAgICAgIk5vbWUgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICBMVEVYVCAgICAgICAgICAgIkRhdGkgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgIEdST1VQQk9YICAgICAgICAiQmFzZSIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgIEFVVE9SQURJT0JVVFRPTiAiRXNhZGVjaW1hbGUiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFsZSIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICBQVVNIQlVUVE9OICAgIkFubnVsbGEiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1vZGlmaWNhIEJpbmFyaW8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgTFRFWFQgICAgICAgICAgICJOb21lIGRlbCB2YWxvcmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgTFRFWFQgICAgICAgICAgICJEYXRpIGRlbCB2YWxvcmU6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgUFVTSEJVVFRPTiAgICJBbm51bGxhIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5vbWUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVGlwbyIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYXRpIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiRWRpdG9yIGRlbCBSZWdpc3RybyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgbGF2b3JhcmUgc3UgdHV0dG8gaWwgUmVnaXN0cm8iCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciBlZGl0YXJlIHZhbG9yaSBvIGNoaWF2aSIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIHBlcnNvbmFsaXp6YXJlIGxhIGZpbmVzdHJhIGRlbCBSZWdpc3RybyIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIGFjY2VkZXJlIGFsbGUgY2hpYXZpIHVzYXRlIGZyZXF1ZW50ZW1lbnRlIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgdmlzdWFsaXp6YXJlIGxhIEd1aWRhIGUgaW5mb3JtYXppb25pIHN1bGwnZWRpdG9yIGRlbCBSZWdpc3RybyIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIGNyZWFyZSBudW92ZSBjaGlhdmkgbyB2YWxvcmkiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJNb2RpZmljYSBpIGRhdGkgZGVsIHZhbG9yZSIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJBZ2dpdW5nZSB1bmEgbnVvdmEgY2hpYXZlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkFnZ2l1bmdlIHVuIG51b3ZvIHZhbG9yZSBzdHJpbmdhIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkFnZ2l1bmdlIHVuIG51b3ZvIHZhbG9yZSBiaW5hcmlvIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkFnZ2l1bmdlIHVuIG51b3ZvIHZhbG9yZSBhIGRvcHBpYSBwYXJvbGEiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGEgdW4gZmlsZSBkaSB0ZXN0byBuZWwgUmVnaXN0cm8iCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFc3BvcnRhIHR1dHRvIG8gcGFydGUgZGVsIFJlZ2lzdHJvIGluIHVuIGZpbGUgZGkgdGVzdG8iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2kgY29ubmV0dGUgYWwgUmVnaXN0cm8gZGkgdW4gY29tcHV0ZXIgcmVtb3RvIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNpIGRpc2Nvbm5ldHRlIGRhbCBSZWdpc3RybyBkaSB1biBjb21wdXRlciByZW1vdG8iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiU3RhbXBhIHR1dHRvIG8gcGFydGUgZGVsIFJlZ2lzdHJvIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiQXByZSBsJ2FpdXRvIGRlbGwnRWRpdG9yIGRlbCBSZWdpc3RybyIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJWaXN1YWxpenphIGluZm9ybWF6aW9uaSBzdWwgcHJvZ3JhbW1hLCBudW1lcm8gZGkgdmVyc2lvbmUgZSBjb3B5cmlnaHQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJFc2NlIGRhbGwnZWRpdG9yIGRlbCBSZWdpc3RybyIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiQWdnaXVuZ2UgdW5hIGNoaWF2ZSBhbGxhIGxpc3RhIGRlaSBQcmVmZXJpdGkiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIlJpbXVvdmUgdW5hIG8gcGn5IGNoaWF2aSBkYWxsYSBsaXN0YSBkZWkgcHJlZmVyaXRpIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk1vc3RyYSBvIG5hc2NvbmRlIGxhIGJhcnJhIGRpIHN0YXRvIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkNhbWJpYSBsYSBwb3NpemlvbmUgZGVsIHNlcGFyYXRvcmUgdHJhIGR1ZSBwYW5uZWxsaSIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJBZ2dpb3JuYSBsYSBmaW5lc3RyYSIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJFbGltaW5hIGxhIHNlbGV6aW9uZSIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSaW5vbWluYSBsYSBzZWxlemlvbmUiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQ29waWEgaWwgbm9tZSBkZWxsYSBjaGlhdmUgc2VsZXppb25hdGEgbmVnbGkgYXBwdW50aSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJUcm92YSB1bmEgc3RyaW5nYSBkaSB0ZXN0byBpbiB1bmEgY2hpYXZlLCB1biB2YWxvcmUgbyBpbiBkZWkgZGF0aSIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJUcm92YSBsYSB2b2x0YSBzdWNjZXNzaXZhIGlsIHRlc3RvIHNwZWNpZmljYXRvIG5lbGxhIHJpY2VyY2EgcHJlY2VkZW50ZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkVycm9yZSIKICAgIElEU19CQURfS0VZCQkgICAgIkltcG9zc2liaWxlIHRyb3ZhcmUgbGEgY2hpYXZlICclcyciCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiSW1wb3NzaWJpbGUgdHJvdmFyZSBpbCB2YWxvcmUgJyVzJyIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJJbXBvc3NpYmlsZSBtb2RpZmljYXJlIHZhbG9yaSBkaSBxdWVzdG8gdGlwbyAoJXUpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIlZhbG9yZSB0cm9wcG8gZ3JhbmRlICgldSkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQ29uZmVybWFyZSBFbGltaW5hemlvbmUgZGVsIFZhbG9yZSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJTZWkgc2ljdXJvIGRpIHZvbGVyZSBlbGltaW5hcmUgaWwgdmFsb3JlICclcyc/IgogICAgSURTX0RFTEVURV9CT1hfVEVYVF9NVUxUSVBMRSAiU2VpIHNpY3VybyBkaSB2b2xlcmUgZWxpbWluYXJlIHF1ZXN0aSB2YWxvcmk/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk51b3ZhIENoaWF2ZSAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTnVvdm8gVmFsb3JlICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJTdHJpbmdhIGRpIHJpY2VyY2EgJyVzJyBub24gdHJvdmF0YSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=