LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0LDIwMDcgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKCi8qIE1lbnUgKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSURNX1dJTkVGSUxFIE1FTlUgRklYRUQgSU1QVVJFCnsKICAgIFBPUFVQICImQXJxdWl2byIgIHsKICAgICAgICBNRU5VSVRFTSAiQSZicmlyXHRFbnRlciIsICAgICAgICAgICAgICAgSURfQUNUSVZBVEUKICAgICAgICBNRU5VSVRFTSAiJk1vdmVyLi4uXHRGNyIsICAgICAgICAgICAgICAgSURfRklMRV9NT1ZFCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIuLi5cdEY4IiwgICAgICAgICAgICAgIElEX0ZJTEVfQ09QWQogICAgICAgIE1FTlVJVEVNICImSW4gQ2xpcGJvYXJkLi4uXHRGOSIsICAgICAgICAxMTgKICAgICAgICBNRU5VSVRFTSAiRSZ4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgSURfRklMRV9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiUmUmbm9tZWFyLi4uIiwgICAgICAgICAgICAgICAgMTA5CiAgICAgICAgTUVOVUlURU0gIiZQcm9wcmllZGFkZXMuLi5cdEFsdCtFbnRlciIsIElEX0VESVRfUFJPUEVSVElFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDJm9tcHJpbWlyLi4uIiwgICAgICAgICAgICAgICAxMTkKICAgICAgICBNRU5VSVRFTSAiRGVzY29tcHJpbWlyLi4uIiwgICAgICAgICAgICAgMTIwCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkV4ZWN1JnRhci4uLiIsICAgICAgICAgICAgICAgIElEX0VYRUNVVEUKICAgICAgICBNRU5VSVRFTSAiJkltcHJpbWlyLi4uIiwgICAgICAgICAgICAgICAgMTAyCiAgICAgICAgTUVOVUlURU0gIkEmc3NvY2lhci4uLiIsICAgICAgICAgICAgICAgIDEwMwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDcmkmYXIgcGFzdGEuLi4iLCAgICAgICAgICAgICAxMTEKICAgICAgICBNRU5VSVRFTSAiUCZlc3F1aXNhci4uLiIsICAgICAgICAgICAgICAgMTA0CiAgICAgICAgTUVOVUlURU0gIlNlbGVjaW9uYXIgYXJxdWkmdm9zLi4uIiwgICAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIsICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZEaXNjbyIgIHsKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciBkaXNjby4uLiIsICAgICAgICAgICAgMjAxCiAgICAgICAgTUVOVUlURU0gIiZOb21lYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iLCAgICAgICAgICBJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CiAgICAgICAgTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEgICAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ29uZWN0YSZyIHVuaWRhZGUgZGUgcmVkZSIsICAgSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gIiZEZXNjb25lY3RhciB1bmlkYWRlIGRlIHJlZGUiLElEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDJm9tcGFydGlsaGFyIGNvbW8uLi4iLCAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiJlJlbW92ZXIgY29tcGFydGlsaGFtZW50by4uLiIsMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNlbGVjaW9uYXIgJnVuaWRhZGUuLi4iLCAgICAgIDI1MQogICAgfQoKICAgIFBPUFVQICLBJnJ2b3JlIiAgewogICAgICAgIE1FTlVJVEVNICImUHLzeGltbyBu7XZlbFx0KyIsICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiRXhwYW5kaSZyIHBhc3RhXHQqIiwgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiLCAgICAgIDMwMwogICAgICAgIE1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iLCAgICAgICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiwgICAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZFeGliaXIiICB7CiAgICAgICAgTUVOVUlURU0gIsEmcnZvcmUgZSBwYXN0YSIsICAgICAgICAgICAgIDQxMwogICAgICAgIE1FTlVJVEVNICJTJm9tZW50ZSDhcnZvcmUiLCAgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiU28mbWVudGUgcGFzdGEiLCAgICAgICAgICAgICAgNDEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZEaXZpZGlyIiwgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk5vbWUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19OQU1FCiAgICAgICAgTUVOVUlURU0gIiZUb2RvcyBvcyBkZWxhbGhlcyIsICAgICAgICAgIElEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiRCZldGFsaGVzIHBhcmNpYWlzLi4uIiwgICAgICAgSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDbGFzc2lmaWNhciBwb3Igbm9tZSIsICAgICAgIElEX1ZJRVdfU09SVF9OQU1FCiAgICAgICAgTUVOVUlURU0gIkMmbGFzc2lmaWNhciBwb3IgdGlwbyIsICAgICAgIElEX1ZJRVdfU09SVF9UWVBFCiAgICAgICAgTUVOVUlURU0gIkNsJmFzc2lmaWNhciBwb3IgdGFtYW5obyIsICAgIElEX1ZJRVdfU09SVF9TSVpFCiAgICAgICAgTUVOVUlURU0gIkNsYSZzc2lmaWNhciBwb3IgJmRhdGEiLCAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNsYXNzaWZpY2FyICZwb3IuLi4iLCAgICAgICAgIElEX1ZJRVdfRklMVEVSCiAgICB9CgogICAgUE9QVVAgIiZPcOf1ZXMiICB7CiAgICAgICAgTUVOVUlURU0gIiZDb25maXJtYefjby4uLiIsICAgICAgICAgICAgIDUwMQogICAgICAgIE1FTlVJVEVNICImRm9udGUuLi4iLCAgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICImUGVyc29uYWxpemFyIGJhcnJhIGRlIGZlcnJhbWVudGFzLi4uIiwgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGQmZSBmZXJyYW1lbnRhcyIsICAgICAgIElEX1ZJRVdfVE9PTF9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIHVuaWRhZGVzIiwgICAgICAgICAgSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiQiZhcnJhIGRlICZzdGF0dXMiLCAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJUZWxhIENoZWlhXHRDdHJsK1NoaWZ0K1MiLCAgICBJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNaW5pbWl6YXIgZHVyYW50ZSBvIHVzbyIsICAgIDUwNAogICAgICAgIE1FTlVJVEVNICImU2FsdmFyIGNvbmZpZ3VyYef1ZXMgYW8gc2FpciIsNTExCiAgICB9CgoKICAgIFBPUFVQICImU2VndXJhbudhIiAgewogICAgICAgIE1FTlVJVEVNICImQWNlc3NvLi4uIiwgICAgICAgICAgICAgICAgICA2MDUKICAgICAgICBNRU5VSVRFTSAiJkxvZ2dpbmcuLi4iLCAgICAgICAgICAgICAgICAgNjA2CiAgICAgICAgTUVOVUlURU0gIiZPd25lci4uLiIsICAgICAgICAgICAgICAgICAgIDYwNwogICAgfQoKICAgIFBPUFVQICImSmFuZWxhIiAgewogICAgICAgIE1FTlVJVEVNICImTm92YSBqYW5lbGEiLCAgICAgICAgICAgICAgICBJRF9XSU5ET1dfTkVXCiAgICAgICAgTUVOVUlURU0gIiZFbSBjYXNjYXRhXHRDdHJsK0Y1IiwgICAgICAgIElEX1dJTkRPV19DQVNDQURFCiAgICAgICAgTUVOVUlURU0gIkxhZG8gYSBsYWRvICZob3Jpem9udGFsbWVudGUiLElEX1dJTkRPV19USUxFX0hPUloKICAgICAgICBNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJnZlcnRpY2FsbWVudGVcdEN0cmwrRjQiLElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJPcmdhbml6YXIgYXV0b21hdGljYW1lbnRlIiwgICBJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCiAgICAgICAgTUVOVUlURU0gIiZPcmdhbml6YXIg7WNvbmVzIiwgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIiZBdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgIElEX1JFRlJFU0gKICAgIH0KCiAgICBQT1BVUCAiQWomdWRhIiAgewogICAgICAgIE1FTlVJVEVNICImVPNwaWNvcyBkYSBhanVkYVx0RjEiLCAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIlBlc3F1aXNhci4uLiIsICAgICAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiJlVzYW5kbyBhIGFqdWRhIiwgICAgICAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29icmUgbyBXaW5lZmlsZS4uLiIsICAgICAgICBJRF9BQk9VVAojaWZkZWYgX19XSU5FX18KICAgICAgICBNRU5VSVRFTSAiU29icmUgbyAmV2luZS4uLiIsICAgICAgICAgICAgSURfQUJPVVRfV0lORQojZW5kaWYKICAgIH0KfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkZpY2hlaXJvIiAgewogICAgICAgIE1FTlVJVEVNICJBJmJyaXJcdEVudGVyIiwgICAgICAgICAgICAgICBJRF9BQ1RJVkFURQogICAgICAgIE1FTlVJVEVNICImTW92ZXIuLi5cdEY3IiwgICAgICAgICAgICAgICBJRF9GSUxFX01PVkUKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhci4uLlx0RjgiLCAgICAgICAgICAgICAgSURfRklMRV9DT1BZCiAgICAgICAgTUVOVUlURU0gIiZOYSBBcmVhIGRlIFRyYW5zZmVy6m5jaWEuLi5cdEY5IiwgICAgICAgIDExOAogICAgICAgIE1FTlVJVEVNICJFJnhjbHVpclx0RGVsIiwgICAgICAgICAgICAgICBJRF9GSUxFX0RFTEVURQogICAgICAgIE1FTlVJVEVNICJSZSZub21lYXIuLi4iLCAgICAgICAgICAgICAgICAxMDkKICAgICAgICBNRU5VSVRFTSAiJlByb3ByaWVkYWRlcy4uLlx0QWx0K0VudGVyIiwgSURfRURJVF9QUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkMmb21wcmltaXIuLi4iLCAgICAgICAgICAgICAgIDExOQogICAgICAgIE1FTlVJVEVNICImRGVzY29tcHJpbWlyLi4uIiwgICAgICAgICAgICAxMjAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRXhlY3UmdGFyLi4uIiwgICAgICAgICAgICAgICAgSURfRVhFQ1VURQogICAgICAgIE1FTlVJVEVNICImSW1wcmltaXIuLi4iLCAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiQSZzc29jaWFyLi4uIiwgICAgICAgICAgICAgICAgMTAzCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNyaSZhciBwYXN0YS4uLiIsICAgICAgICAgICAgIDExMQogICAgICAgIE1FTlVJVEVNICJQJmVzcXVpc2FyLi4uIiwgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAiU2VsZWNjaW9uYXIgZmljaGVpJnJvcy4uLiIsICAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIsICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZEaXNjbyIgIHsKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciBkaXNjby4uLiIsICAgICAgICAgICAgMjAxCiAgICAgICAgTUVOVUlURU0gIiZOb21lYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iLCAgICAgICAgICBJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CiAgICAgICAgTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEgICAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTGlnYSZyIHVuaWRhZGUgZGUgcmVkZSIsICAgSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gIiZEZXNsaWdhciB1bmlkYWRlIGRlIHJlZGUiLElEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUGFydGlsaGFyIGNvbW8uLi4iLCAgICAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiJlJlbW92ZXIgcGFydGlsaGEuLi4iLCAgICAgICAgMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNlbGVjY2lvbmFyICZ1bmlkYWRlLi4uIiwgICAgIDI1MQogICAgfQoKICAgIFBPUFVQICLBJnJ2b3JlIiAgewogICAgICAgIE1FTlVJVEVNICImUHLzeGltbyBu7XZlbFx0KyIsICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiRXhwYW5kaSZyIHBhc3RhXHQqIiwgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiLCAgICAgIDMwMwogICAgICAgIE1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iLCAgICAgICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiwgICAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZFeGliaXIiICB7CiAgICAgICAgTUVOVUlURU0gIsEmcnZvcmUgZSBwYXN0YSIsICAgICAgICAgICAgIDQxMwogICAgICAgIE1FTlVJVEVNICJBJnBlbmFzIOFydm9yZSIsICAgICAgICAgICAgIDQxMQogICAgICAgIE1FTlVJVEVNICJBcCZlbmFzIHBhc3RhIiwgICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOb21lIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiLCAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIsICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiLCAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iLCAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iLCAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiwgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiwgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3Dn9WVzIiAgewogICAgICAgIE1FTlVJVEVNICImQ29uZmlybWHn428uLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJlRpcG8gZGUgTGV0cmEuLi4iLCAgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICImUGVyc29uYWxpemFyIGJhcnJhIGRlIGZlcnJhbWVudGFzLi4uIiwgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGQmZSBmZXJyYW1lbnRhcyIsICAgICAgIElEX1ZJRVdfVE9PTF9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIHVuaWRhZGVzIiwgICAgICAgICAgSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiQiZhcnJhIGRlIGUmc3RhZG8iLCAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJFY3LjIENvbXBsZXRvXHRDdHJsK1NoaWZ0K1MiLCAgICBJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNaW5pbWl6YXIgZHVyYW50ZSBvIHVzbyIsICAgIDUwNAogICAgICAgIE1FTlVJVEVNICImR3JhdmFyIGNvbmZpZ3VyYef1ZXMgYW8gc2FpciIsNTExCiAgICB9CgoKICAgIFBPUFVQICImU2VndXJhbudhIiAgewogICAgICAgIE1FTlVJVEVNICImQWNlc3NvLi4uIiwgICAgICAgICAgICAgICAgICA2MDUKICAgICAgICBNRU5VSVRFTSAiJkF1dGVudGljYefjby4uLiIsICAgICAgICAgICAgICAgICA2MDYKICAgICAgICBNRU5VSVRFTSAiJkRvbm8uLi4iLCAgICAgICAgICAgICAgICAgICAgNjA3CiAgICB9CgogICAgUE9QVVAgIiZKYW5lbGEiICB7CiAgICAgICAgTUVOVUlURU0gIiZOb3ZhIGphbmVsYSIsICAgICAgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAiJkVtIGNhc2NhdGFcdEN0cmwrRjUiLCAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJmhvcml6b250YWxtZW50ZSIsSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJMYWRvIGEgbGFkbyAmdmVydGljYWxtZW50ZVx0Q3RybCtGNCIsSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIk9yZ2FuaXphciBhdXRvbWF0aWNhbWVudGUiLCAgIElEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKICAgICAgICBNRU5VSVRFTSAiJk9yZ2FuaXphciDtY29uZXMiLCAgICAgICAgICAgSURfV0lORE9XX0FSUkFOR0UKICAgICAgICBNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgSURfUkVGUkVTSAogICAgfQoKICAgIFBPUFVQICJBaiZ1ZGEiICB7CiAgICAgICAgTUVOVUlURU0gIiZU83BpY29zIGRhIGFqdWRhXHRGMSIsICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiUGVzcXVpc2FyLi4uIiwgICAgICAgICAgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImVXNhciBhIGFqdWRhIiwgICAgICAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZkZWYgX19XSU5FX18KICAgICAgICBNRU5VSVRFTSAiQWNlcmNhIGRvICZXaW5lLi4uIiwgICAgICAgICAgSURfQUJPVVRfV0lORQojZW5kaWYKICAgIH0KfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpJRERfRVhFQ1VURSBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFeGVjdXRhciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImQ29tYW5kbzoiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIENPTlRST0wgICAgICAgICAiJk1pbmltaXphZG8iLCAyMTQsICJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUCwzLCA0NSwgNzEsIDEyCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsYXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkFqdWRhIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTZWxlY2lvbmFyIGRlc3Rpbm8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJkNhbWluaG86IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsYXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlByb2N1cmFyIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklERF9TRUxFQ1RfREVTVElOQVRJT04gRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU2VsZWNpb25hciBkZXN0aW5vIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZMb2NhbGl6YefjbzoiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImUHJvY3VyYXIiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAiQXBsaWNhbmRvIGNvbmZpZ3VyYef1ZXMgZGUgZm9udGUiCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiRXJybyBlbnF1YW50byBzZWxlY2lvbmEgbm92YSBmb250ZS4iCn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAiQSBhcGxpY2FyIGNvbmZpZ3VyYef1ZXMgZG8gdGlwbyBkZSBsZXRyYSIKICAgIElEU19GT05UX1NFTF9FUlJPUiAgICAgICJFcnJvIGFvIHNlbGVjY2lvbmFyIG5vdm8gdGlwbyBkZSBsZXRyYS4iCn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNUUklOR1RBQkxFCnsKIElEU19XSU5FRklMRSAgICAgICAgICAgICAgICJXaW5lZmlsZSIKIElEU19FUlJPUiAgICAgICAgICAgICAgICAgICJFcnJvIgogSURTX1JPT1RfRlMgICAgICAgICAgICAgICAgInJvb3QgZnMiCiBJRFNfVU5JWEZTICAgICAgICAgICAgICAgICAidW5peGZzIgogSURTX0RFU0tUT1AgICAgICAgICAgICAgICAgIsFyZWEgZGUgdHJhYmFsaG8iCiBJRFNfU0hFTEwgICAgICAgICAgICAgICAgICAiU2hlbGwiCiBJRFNfVElUTEVGTVQgICAgICAgICAgICAgICAiJXMgLSAlcyIKIElEU19OT19JTVBMICAgICAgICAgICAgICAgICJBaW5kYSBu428gaW1wbGVtZW50YWRvIgogSURTX1dJTkUgICAgICAgICAgICAgICAgICAgIldJTkUiCiBJRFNfV0lORV9GSUxFICAgICAgICAgICAgICAiV2luZSBGaWxlIgp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUKewogSURTX1dJTkVGSUxFICAgICAgICAgICAgICAgIldpbmVmaWxlIgogSURTX0VSUk9SICAgICAgICAgICAgICAgICAgIkVycm8iCiBJRFNfUk9PVF9GUyAgICAgICAgICAgICAgICAicm9vdCBmcyIKIElEU19VTklYRlMgICAgICAgICAgICAgICAgICJ1bml4ZnMiCiBJRFNfREVTS1RPUCAgICAgICAgICAgICAgICAiRWNy4yIKIElEU19TSEVMTCAgICAgICAgICAgICAgICAgICJMaW5oYSBkZSBDb21hbmRvcyIKIElEU19USVRMRUZNVCAgICAgICAgICAgICAgICIlcyAtICVzIgogSURTX05PX0lNUEwgICAgICAgICAgICAgICAgIkFpbmRhIG7jbyBpbXBsZW1lbnRhZG8iCiBJRFNfV0lORSAgICAgICAgICAgICAgICAgICAiV0lORSIKIElEU19XSU5FX0ZJTEUgICAgICAgICAgICAgICJGaWNoZWlybyBXaW5lIgp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUKewogSURTX0NPTF9OQU1FICAgICAgICAgICAgICAgIk5vbWUiCiBJRFNfQ09MX1NJWkUgICAgICAgICAgICAgICAiVGFtYW5obyIKIElEU19DT0xfQ0RBVEUgICAgICAgICAgICAgICJDRGF0YSIKIElEU19DT0xfQURBVEUgICAgICAgICAgICAgICJBRGF0YSIKIElEU19DT0xfTURBVEUgICAgICAgICAgICAgICJNRGF0YSIKIElEU19DT0xfSURYICAgICAgICAgICAgICAgICLNbmRpY2UvSW5vZGUiCiBJRFNfQ09MX0xJTktTICAgICAgICAgICAgICAiTGlnYef1ZXMiCiBJRFNfQ09MX0FUVFIgICAgICAgICAgICAgICAiQXRyaWJ1dG9zIgogSURTX0NPTF9TRUMgICAgICAgICAgICAgICAgIlNlZ3VyYW7nYSIKfQo=