LyoKICogV2luZUZpbGUKICogU3BhbmlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA0LCAyMDA3IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpegogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfU1BBTklTSCwgU1VCTEFOR19ORVVUUkFMCgovKiBNZW51ICovCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewogICAgUE9QVVAgIiZBcmNoaXZvIiAgewogICAgICAgIE1FTlVJVEVNICImQWJyaXJcdEVudGVyIiwgICAgICAgICAgICAgICBJRF9BQ1RJVkFURQogICAgICAgIE1FTlVJVEVNICJNbyZ2ZXIuLi5cdEY3IiwgICAgICAgICAgICAgICBJRF9GSUxFX01PVkUKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhci4uLlx0RjgiLCAgICAgICAgICAgICAgSURfRklMRV9DT1BZCiAgICAgICAgTUVOVUlURU0gIkUmbiBwb3J0YXBhcGVsZXMuLi5cdEY5IiwgICAgIDExOAogICAgICAgIE1FTlVJVEVNICImRWxpbWluYXJcdERlbCIsICAgICAgICAgICAgICBJRF9GSUxFX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmVub21icmFyLi4uIiwgICAgICAgICAgICAgICAxMDkKICAgICAgICBNRU5VSVRFTSAiJlByb3BpZWRhZGVzLi4uXHRBbHQrRW50ZXIiLCAgSURfRURJVF9QUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkMmb21wcmltaXIuLi4iLCAgICAgICAgICAgICAgIDExOQogICAgICAgIE1FTlVJVEVNICImRGVzY29tcHJpbWlyLi4uIiwgICAgICAgICAgICAxMjAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRSZqZWN1dGFyLi4uIiwgICAgICAgICAgICAgICAgSURfRVhFQ1VURQogICAgICAgIE1FTlVJVEVNICJJJm1wcmltaXIuLi4iLCAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiQXNvYyZpYXIuLi4iLCAgICAgICAgICAgICAgICAgMTAzCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNyZWFyIGRpcmVjJnRvcmlvLi4uIiwgICAgICAgIDExMQogICAgICAgIE1FTlVJVEVNICImQnVzY2FyLi4uIiwgICAgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAiU2UmbGVjY2lvbmFyIGFyY2hpdm9zLi4uIiwgICAgMTE2CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiJlNhbGlyXHRBbHQrWCIsICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbHNlCiAgICAgICAgTUVOVUlURU0gIiZTYWxpciIsICAgICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZW5kaWYKICAgIH0KCiAgICBQT1BVUCAiJkRpc2NvIiAgewogICAgICAgIE1FTlVJVEVNICImQ29waWFyIGRpc2NvLi4uIiwgICAgICAgICAgICAyMDEKICAgICAgICBNRU5VSVRFTSAiRSZ0aXF1ZXRhciBkaXNjby4uLiIsICAgICAgICAgMjAyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGb3JtYXRlYXIgZGlzY28uLi4iLCAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiJkhhY2VyIGRpc2NvIGRlIHNpc3RlbWEuLi4iLCAtMSAgIC8qVE9ETyovCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDJm9uZWN0YXIgdW5pZGFkIGRlIHJlZCIsICAgICBJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSAiJkRlc2NvbmVjdGFyIHVuaWRhZCBkZSByZWQiLCAgSURfRElTQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNvJm1wYXJ0aXIgY29tby4uLiIsICAgICAgICAgIDI1NAogICAgICAgIE1FTlVJVEVNICImRWxpbWluYXIgY29tcGFydGlkby4uLiIsICAgICAyNTUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNlbGVjY2lvbmFyIHVuaWRhZC4uLiIsICAgICAgMjUxCiAgICB9CgogICAgUE9QVVAgIkRpJnJlY3RvcmlvcyIgIHsKICAgICAgICBNRU5VSVRFTSAiJlNpZ3VpZW50ZSBuaXZlbFx0KyIsICAgICAgICAgMzAxCiAgICAgICAgTUVOVUlURU0gIiZFeHBhbmRpciDhcmJvbFx0KiIsICAgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICJFeHBhbmRpciAmdG9kb1x0U3RyZysqIiwgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiJkNvbGFwc2FyIOFyYm9sXHQtIiwgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNYXJjYXIgaGlqb3MiLCAgICAgICAgICAgICAgIDUwNQogICAgfQoKICAgIFBPUFVQICImVmVyIiAgewogICAgICAgIE1FTlVJVEVNICLBJnJib2wgeSBkaXJlY3RvcmlvIiwgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiwXJib2wgJnPzbG8iLCAgICAgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIiZEaXJlY3RvcmlvIHPzbG8iLCAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJEaSZ2aWRpciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIk5vJm1icmUiLCAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICJUJm9kb3MgbG9zIGRldGFsbGVzIiwgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkRldGFsbGVzICZwYXJjaWFsZXMuLi4iLCAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJPcmRlbmFyIHBvciAmbm9tYnJlIiwgICAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJPcmRlbmFyIHBvciAmdGlwbyIsICAgICAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJPcmRlbmFyIHBvciB0JmFtYfFvIiwgICAgICAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJPcmRlbmFyIHBvciAmZmVjaGEiLCAgICAgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJPcmRlbmFyIHBvciAmLi4uIiwgICAgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3BjaW9uZXMiICB7CiAgICAgICAgTUVOVUlURU0gIiZDb25maXJtYWNp824uLi4iLCAgICAgICAgICAgIDUwMQogICAgICAgIE1FTlVJVEVNICImRnVlbnRlLi4uIiwgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICJQZXJzb25hbGl6YXIgYmFycmEgJmhlcnJhbWllbnRhcy4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQmFycmEgZGUgaGVycmFtaWVudGFzIiwgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGRlICZ1bmlkYWRlcyIsICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGRlICZlc3RhZG8iLCAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiJlBhbnRhbGxhIGNvbXBsZXRhXHRDdHJsK1NoaWZ0K1MiLCBJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNaW5pbWl6YXIgYWwgZWplY3V0YXJzZSIsICAgIDUwNAogICAgICAgIE1FTlVJVEVNICImR3VhcmRhciBvcGNpb25lcyBhbCBzYWxpciIsICBJRF9WSUVXX1NBVkVTRVRUSU5HUwogICAgfQoKCiAgICBQT1BVUCAiJlNlZ3VyaWRhZCIgIHsKICAgICAgICBNRU5VSVRFTSAiJkFjY2Vzby4uLiIsICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIiZMb2dnaW5nLi4uIiwgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImUHJvcGlldGFyaW8uLi4iLCAgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiJlZlbnRhbmEiICB7CiAgICAgICAgTUVOVUlURU0gIiZOdWV2YSB2ZW50YW5hIiwgICAgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAiJkNhc2NhZGFcdEN0cmwrRjUiLCAgICAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiTW9zYWljbyAmaG9yaXpvbnRhbCIsICAgICAgICAgSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJNb3NhaWNvICZ2ZXJ0aWNhbFx0Q3RybCtGNCIsICBJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiQSZsaW5lYXIgYXV0b23hdGljYW1lbnRlIiwgICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICJBbGluZWFyICZz7W1ib2xvcyIsICAgICAgICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICImQWN0dWFsaXphclx0RjUiLCAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIiY/IiAgewogICAgICAgIE1FTlVJVEVNICImVGVtYXMgZGUgYXl1ZGFcdEYxIiwgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZCdXNjYXIgZW4gbGEgYXl1ZGEuLi5cdEYxIiwgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiJlVzYW5kbyBsYSBheXVkYVx0RjEiLCAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQWNlcmNhIGRlIFdpbmVmaWxlLi4uIiwgICAgICBJRF9BQk9VVAogICAgfQp9CgoKSUREX0VYRUNVVEUgRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWplY3V0YXIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJkNvbWFuZG86IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBDT05UUk9MICAgICAgICAgIkNvbW8gJnPtbWJvbG8iLCAyMTQsICJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUCwzLCA0NSwgNzEsIDEyCiAgICBERUZQVVNIQlVUVE9OICAgIkFjZXB0YXIiLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImQXl1ZGEiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlNlbGVjY2lvbmUgZGVzdGlubyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImUnV0YToiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiQWNlcHRhciIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZFeGFtaW5hciIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCklERF9ESUFMT0dfVklFV19UWVBFIERJQUxPRyBESVNDQVJEQUJMRSAxNSwgMTMsIDE2MSwgOTcKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUG9yIHRpcG8gZGUgYXJjaGl2byIKRk9OVCA4LCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiJk5vbWJyZToiLC0xLDcsOCwyMiwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19WSUVXX1BBVFRFUk4sMzEsNyw2MywxMixFU19BVVRPSFNDUk9MTAogICAgR1JPVVBCT1ggICAgICAgICJUaXBvIGRlIGFyY2hpdm8iLC0xLDcsMjMsODcsNTYKICAgIENPTlRST0wgICAgICAgICAiJkRpcmVjdG9yaW9zIixJRENfVklFV19UWVBFX0RJUkVDVE9SSUVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsMzIsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJlByb2dyYW1hcyIsSURDX1ZJRVdfVFlQRV9QUk9HUkFNUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDQzLDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIkRvY3UmbWVudG9zIixJRENfVklFV19UWVBFX0RPQ1VNRU5UUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDU0LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZPdHJvcyBhcmNoaXZvcyIsSURDX1ZJRVdfVFlQRV9PVEhFUlMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw2NSw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJNb3N0cmFyIGFyY2hpdm9zIGRlICZzaXN0ZW1hL29jdWx0b3MiLElEQ19WSUVXX1RZUEVfSElEREVOLAogICAgICAgICAgICAgICAgICAgICJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNyw4MSwxMzAsOQogICAgREVGUFVTSEJVVFRPTiAgICJBY2VwdGFyIixJRE9LLDEwNCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIixJRENBTkNFTCwxMDQsMjQsNTAsMTQKRU5ECgpJRERfRElBTE9HX1BST1BFUlRJRVMgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNDgsIDIxNQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJQcm9waWVkYWRlcyBkZSAlcyIKRk9OVCA4LCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KICAgIERFRlBVU0hCVVRUT04gICAiQWNlcHRhciIsSURPSywxOTEsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsSURDQU5DRUwsMTkxLDI5LDUwLDE0CiAgICBMVEVYVCAgICAgICAgICAgIk5vbWJyZToiLC0xLDcsNyw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0ZJTEVOQU1FLDcxLDcsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImUnV0YSBjb21wbGV0YToiLC0xLDcsMTgsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9QQVRILDcxLDE4LDEyMCw5LCBFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgItpsdGltbyBjYW1iaW86IiwtMSw3LDI5LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfTEFTVENIQU5HRSw3MSwyOSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnNp8246IiwtMSw3LDQwLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfVkVSU0lPTiw3MSw0MCwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkNvcCZ5cmlnaHQ6IiwtMSw3LDUxLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfQ09QWVJJR0hULDcxLDUxLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVGFtYfFvOiIsLTEsNyw2Miw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1NJWkUsNzEsNjIsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJBdHJpYnV0b3MiLC0xLDcsNzksMTU4LDQ2CiAgICBDT05UUk9MICAgICAgICAgIlPzbG8gJmxlY3R1cmEiLElEQ19DSEVDS19SRUFET05MWSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJk9jdWx0byIsSURDX0NIRUNLX0hJRERFTiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiQSZyY2hpdmFyIixJRENfQ0hFQ0tfQVJDSElWRSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDEwMSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZTaXN0ZW1hIixJRENfQ0hFQ0tfU1lTVEVNLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOTIsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJkNvbXByaW1pZG8iLElEQ19DSEVDS19DT01QUkVTU0VELCJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDExMSw2OCw5CiAgICBHUk9VUEJPWCAgICAgICAgIkluZm9ybWFjafNuIGRlICZ2ZXJzafNuIiwtMSw3LDEyOSwyMzQsNzkKICAgIExJU1RCT1ggICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVFlQRVMsMTMsMTM5LDEwNyw2MyxMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIEVESVRURVhUICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVkFMVUVTLDEyMywxMzksMTExLDYzLEVTX01VTFRJTElORSB8IEVTX1JFQURPTkxZIHwgV1NfVlNDUk9MTApFTkQKCgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAiQXBsaWNhbmRvIGNvbmZpZ3VyYWNp824gZGUgZnVlbnRlIgogICAgSURTX0ZPTlRfU0VMX0VSUk9SICAgICAgIkVycm9yIGFsIHNlbGVjY2lvbmFyIGxhIG51ZXZhIGZ1ZW50ZS4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19XSU5FRklMRSAgICAgICAgICAgICJXaW5lZmlsZSIKICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJFcnJvciIKICAgIElEU19ST09UX0ZTICAgICAgICAgICAgICJTRiByYe16IgogICAgSURTX1VOSVhGUyAgICAgICAgICAgICAgInVuaXhmcyIKICAgIElEU19ERVNLVE9QICAgICAgICAgICAgICJFc2NyaXRvcmlvIgogICAgSURTX1NIRUxMICAgICAgICAgICAgICAgIlNoZWxsIgogICAgSURTX1RJVExFRk1UICAgICAgICAgICAgIiVzIC0gJXMiCiAgICBJRFNfTk9fSU1QTCAgICAgICAgICAgICAiQfpuIG5vIGltcGxlbWVudGFkbyIKICAgIElEU19XSU5FX0ZJTEUgICAgICAgICAgICJXaW5lIEZpbGUiCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19DT0xfTkFNRSAgICAgICAgICAgICJOb21icmUiCiAgICBJRFNfQ09MX1NJWkUgICAgICAgICAgICAiVGFtYfFvIgogICAgSURTX0NPTF9DREFURSAgICAgICAgICAgIkZlY2hhQyIKICAgIElEU19DT0xfQURBVEUgICAgICAgICAgICJGZWNoYUEiCiAgICBJRFNfQ09MX01EQVRFICAgICAgICAgICAiRmVjaGFNIgogICAgSURTX0NPTF9JRFggICAgICAgICAgICAgIs1uZGljZS9Ob2RvLWkiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiRW5sYWNlcyIKICAgIElEU19DT0xfQVRUUiAgICAgICAgICAgICJBdHJpYnV0b3MiCiAgICBJRFNfQ09MX1NFQyAgICAgICAgICAgICAiU2VndXJpZGFkIgoKICAgIElEU19GUkVFX1NQQUNFX0ZNVCAgICAgICIlcyBkZSAlcyBsaWJyZSIKfQo=