IC8qCiAqIFByb2dyYW0gTWFuYWdlcgogKgogKiBDb3B5cmlnaHQgMTk5NiBVbHJpY2ggU2NobWlkCiAqIENvcHlyaWdodCAyMDAyIFN5bHZhaW4gUGV0cmVvbGxlCiAqIENvcHlyaWdodCAyMDA2LDIwMDcgWXVuU29uZyBId2FuZwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBNZW51ICovCgpNQUlOX01FTlUgTUVOVSBMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ERUZBVUxUCnsKUE9QVVAgIsbEwM8oJkYpIiB7CiAgIE1FTlVJVEVNICK79SDA2773KCZOKS4uLiIsICAgICAgICAgICAgICBQTV9ORVcKICAgTUVOVUlURU0gIr+tseIoJlApXHRFbnRlciIsICAgICAgICAgICAgIFBNX09QRU4KICAgTUVOVUlURU0gIsDMtb8oJk0pLi4uXHRGNyIsICAgICAgICAgICAgIFBNX01PVkUsICAgICAgR1JBWUVECiAgIE1FTlVJVEVNICK6ubvnKCZDKS4uLlx0RjgiLCAgICAgICAgICAgICBQTV9DT1BZLCAgICAgIEdSQVlFRAogICBNRU5VSVRFTSAiwfa/7LHiKCZEKVx0RW50ZiIsICAgICAgICAgICBQTV9ERUxFVEUKICAgTUVOVUlURU0gIrzTvLooJkEpLi4uXHRBbHQrRW50ZXIiLCAgICAgICBQTV9BVFRSSUJVVEVTCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAivcfH4CgmRSkuLi4iLCAgICAgICAgICBQTV9FWEVDVVRFCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiw6Igwb634SgmWCkuLi4iLCAgICAgICAgICAgICBQTV9FWElUCiB9CiBQT1BVUCAiv8m8xygmTykiIHsKICAgTUVOVUlURU0gIsDatb8gwaS3xCgmQSkiLCAgUE1fQVVUT19BUlJBTkdFCiAgIE1FTlVJVEVNICK9x8fgvcMgvsbAzMTcILvzxcK3zigmTSkiLCAgICBQTV9NSU5fT05fUlVOCiAgIE1FTlVJVEVNICLBvrfhvcMgvLPBpCCzu7/rIMD6wOUoJlMpIiwgUE1fU0FWRV9TRVRUSU5HUwogfQogUE9QVVAgIsOiKCZXKSIgewogICBNRU5VSVRFTSAisOPEobHiKCZPKVx0U2hpZnQrRjUiLCAgICAgICBQTV9PVkVSTEFQCiAgIE1FTlVJVEVNICKzqrSpseIoJlMpXHRTaGlmdCtGNCIsICBQTV9TSURFX0JZX1NJREUKICAgTUVOVUlURU0gIr7GwMzE3CDBpLfEKCZBKSIsICAgICAgIFBNX0FSUkFOR0UKIH0KIApQT1BVUCAitbW/8ri7KCZIKSIgewogICBNRU5VSVRFTSAiuPHC9ygmQykiLCAgICAgICAgIFBNX0NPTlRFTlRTCiAgIE1FTlVJVEVNICLDo7HiKCZTKS4uLiIsICAgICAgICAgICBQTV9TRUFSQ0gKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICK1tb/yuLsgu+e/67n9KCZIKSIsICAgICBQTV9IRUxQT05IRUxQCiAgIE1FTlVJVEVNICLA2r3AvK0oJlQpIiwgICAgICAgICBQTV9UVVRPUklBTAogICBNRU5VSVRFTSBTRVBBUkFUT1IKCiAgIFBPUFVQICLBpLq4KCZJKS4uLiIgewogICAgIE1FTlVJVEVNICK288DMvL69uigmTCkiLCAgICAgICAgUE1fTElDRU5TRQogICAgIE1FTlVJVEVNICLB9r/4IL74wL0oJk4pIiwgICAgUE1fTk9fV0FSUkFOVFkKICAgICBNRU5VSVRFTSAiV0lORSDBpLq4KCZBKSIsICAgICBQTV9BQk9VVF9XSU5FCiAgIH0KIH0KfQoKLyogRGlhbG9nIGBOZXcnICovCgpESUFMT0dfTkVXIERJQUxPRyAwLCAwLCAxNzAsIDY1CkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX05FVVRSQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiu/UgwNu+9yIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgp7ClJBRElPQlVUVE9OICAgIiIsICAgICAgICAgICAgICAgICBQTV9ORVdfR1JPVVAsICAgIDEwLCAxNSwgIDEwLCAxNQpMVEVYVCAgICAgICAgICLHrrHXuLIgsde37CgmRykiLCAgIFBNX05FV19HUk9VUCwgICAgMjAsIDE4LCAgODAsIDE1ClJBRElPQlVUVE9OICAgIiIsICAgICAgICAgICAgICAgICBQTV9ORVdfUFJPR1JBTSwgIDEwLCAzNSwgIDEwLCAxNQpMVEVYVCAgICAgICAgICLHrrHXuLIoJlApIiwgUE1fTkVXX1BST0dSQU0sICAyMCwgMzgsICA4MCwgMTUKREVGUFVTSEJVVFRPTiAiyK7AziIsICAgICAgICAgIElET0ssICAgICAgICAgICAxMDUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIsPrvNIiLCAgICAgIElEQ0FOQ0VMLCAgICAgICAxMDUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIrW1v/K4uygmSCkiLCAgICAgICAgUE1fSEVMUCwgICAgICAgIDEwNSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKfQoKLyogRGlhbG9nIGBNb3ZlJyAqLwoKIERJQUxPR19NT1ZFIERJQUxPRyAwLCAwLCAyNTAsIDY1CkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX05FVVRSQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAix66x17iyIMDMtb8iCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKewpMVEVYVCAgICAgICAgICLHrrHXuLIgwMy1vzoiLCAgICBJRElHTk9SRSwgICAgICAgICAgICA1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgIFBNX1BST0dSQU0sICAgICAgICAgOTUsICA1LCAgOTAsIDE1CkxURVhUICAgICAgICAgIrTru/Mgsde37DoiLCBJRElHTk9SRSwgICAgICAgICAgICA1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgIFBNX0ZST01fR1JPVVAsICAgICAgOTUsIDEzLCAgOTAsIDE1CkxURVhUICAgICAgICAgIrjxwPsgsde37CgmVCk6IiwgICBQTV9UT19HUk9VUF9UWFQsICAgICA1LCAyOCwgMTQwLCAxNQpDT01CT0JPWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1RPX0dST1VQLCAgICAgICAgIDUsIDM4LCAxNDAsIDUwLCBXU19UQUJTVE9QIHwgQ0JTX0RST1BET1dOTElTVApERUZQVVNIQlVUVE9OICLIrsDOIiwgICAgICAgICAgICAgIElET0ssICAgICAgICAgICAgICAxODUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIsPrvNIiLCAgICAgICAgICBJRENBTkNFTCwgICAgICAgICAgMTg1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICK1tb/yuLsoJkgpIiwgICAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTg1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYENvcHknICovCgpESUFMT0dfQ09QWSBESUFMT0cgMCwgMCwgMjUwLCA2NQpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ORVVUUkFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIseusde4siC6ubvnIgpGT05UIDksICJNUyBTaGVsbCBEbGciCnsKTFRFWFQgICAgICAgICAix66x17iyILq5u+c6IiwgICAgSURJR05PUkUsICAgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgIDk1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICK067vzILHXt+w6IiwgSURJR05PUkUsICAgICAgICAgICAgNSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICAgIDk1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICK48cD7ILHXt+woJlQpOiIsICAgUE1fVE9fR1JPVVBfVFhULCAgICAgNSwgMjgsIDE0MCwgMTUKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgICA1LCAzOCwgMTQwLCA1MCwgV1NfVEFCU1RPUCB8IENCU19EUk9QRE9XTkxJU1QKREVGUFVTSEJVVFRPTiAiyK7AziIsICAgICAgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgMTg1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICLD67zSIiwgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgIDE4NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAitbW/8ri7KCZIKSIsICAgICAgICAgICAgUE1fSEVMUCwgICAgICAgICAgIDE4NSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKfQoKLyogRGlhbG9nIGBHcm91cCBhdHRyaWJ1dGVzJyAqLwoKRElBTE9HX0dST1VQIERJQUxPRyAwLCAwLCAyMzAsIDY1CkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX05FVVRSQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAix66x17iyILHXt+wgvNO8uiIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgp7CkxURVhUICAgICAivLO47SgmRCk6IiwgUE1fREVTQ1JJUFRJT05fVFhULCAgIDA1LCAxOCwgIDUwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9ERVNDUklQVElPTiwgICAgICAgNjAsIDE4LCAgOTAsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAisde37CDGxMDPKCZHKToiLCAgICAgICAgUE1fRklMRV9UWFQsICAgICAgICAgIDA1LCAzOCwgIDUwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9GSUxFLCAgICAgICAgICAgICAgNjAsIDM4LCAgOTAsIDE1LCBXU19UQUJTVE9QCkRFRlBVU0hCVVRUT04gIsiuwM4iLCAgICAgICAgICAgIElET0ssICAgICAgICAgICAgICAgIDE1NSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiw+u80iIsICAgICAgICBJRENBTkNFTCwgICAgICAgICAgICAxNTUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIrW1v/K4uygmSCkiLCAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgICAxNTUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgUHJvZ3JhbSBhdHRyaWJ1dGVzJyAqLwoKRElBTE9HX1BST0dSQU0gRElBTE9HIDAsIDAsIDI1MCwgMTA1CkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX05FVVRSQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAix66x17iyILzTvLoiCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKewpMVEVYVCAgICAgICAgICK8s7jtKCZEKToiLCAgUE1fREVTQ1JJUFRJT05fVFhULCAgIDA1LCAxMCwgIDYwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fREVTQ1JJUFRJT04sICAgICAgIDgwLCAxMCwgIDkwLCAxNSwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICK47bfJILbzwM4oJkMpOiIsIFBNX0NPTU1BTkRfTElORV9UWFQsICAwNSwgMjUsICA2MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0NPTU1BTkRfTElORSwgICAgICA4MCwgMjUsICA5MCwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgICAgICAgICAiwNu+9yC18Le6xeS4rigmVyk6IiwgICAgUE1fRElSRUNUT1JZX1RYVCwgICAgIDA1LCA0MCwgIDYwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fRElSRUNUT1JZLCAgICAgICAgIDgwLCA0MCwgIDkwLCAxNSwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICK03MPgxbAgwfbBpCgmSyk6IiwgICAgICBQTV9IT1RfS0VZX1RYVCwgICAgICAgMDUsIDU1LCAgNjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9IT1RfS0VZLCAgICAgICAgICAgODAsIDU1LCAgOTAsIDE1LCBXU19UQUJTVE9QCklDT04gICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9JQ09OLCAgICAgICAgICAgICAgMjAsIDcwCkNIRUNLQk9YICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9TWU1CT0wsICAgICAgICAgICAgODAsIDc1LCAgMTAsIDEwLCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIr3Hx+C9wyDD1rzSyK0oJk0pIiwgICAgICAgSURJR05PUkUsICAgICAgICAgICAgIDk1LCA3NSwgIDc1LCAxMApERUZQVVNIQlVUVE9OICLIrsDOIiwgICAgICAgICAgICAgICAgICAgSURPSywgICAgICAgICAgICAgICAgMTg1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICLD67zSIiwgICAgICAgICAgICAgICBJRENBTkNFTCwgICAgICAgICAgICAxODUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIsOjseIoJkIpLi4uIiwgICAgICAgICAgICAgICBQTV9CUk9XU0UsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIr7GwMzE3CC52bLZseIoJkkpLi4uIiwgUE1fT1RIRVJfU1lNQk9MLCAgICAgMTg1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICK1tb/yuLsoJkgpIiwgICAgICAgICAgICAgICAgIFBNX0hFTFAsICAgICAgICAgICAgIDE4NSwgODUsICA2MCwgMTUsIFdTX1RBQlNUT1AKfQoKLyogRGlhbG9nIGBTeW1ib2wnICovCgpESUFMT0dfU1lNQk9MIERJQUxPRyAwLCAwLCAyMDAsIDg1CkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX05FVVRSQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAivsbAzMTcILnZstmx4iIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgp7CkxURVhUICAgICAixsTAz8DMuKcoJkYpOiIsICAgIFBNX0lDT05fRklMRV9UWFQsICAgIDUsIDE1LCAgNDAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0lDT05fRklMRSwgICAgICAgNDUsIDE1LCAgODUsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAix/bA5yC+xsDMxNwoJkkpOiIsIFBNX1NZTUJPTF9MSVNUX1RYVCwgIDUsIDMwLCAxMjUsIDEwCkNPTUJPQk9YICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1NZTUJPTF9MSVNULCAgICAgIDUsIDQwLCAxMjUsIDUwLAogICBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgV1NfVEFCU1RPUApERUZQVVNIQlVUVE9OICLIrsDOIiwgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgMTM1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICLD67zSIiwgICAgIElEQ0FOQ0VMLCAgICAgICAgICAxMzUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIsOjseIoJkIpLi4uIiwgICAgUE1fQlJPV1NFLCAgICAgICAgIDEzNSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAitbW/8ri7KCZIKSIsICAgICAgIFBNX0hFTFAsICAgICAgICAgICAxMzUsIDY1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgRXhlY3V0ZScgKi8KCkRJQUxPR19FWEVDVVRFIERJQUxPRyAwLCAwLCAyMDAsIDg1CkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX05FVVRSQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAix66x17iyIL3Hx+AiCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKewpMVEVYVCAgICAgIrjtt8kgtvPAzigmQyk6IiwgSURJR05PUkUsICAgMDUsIDE1LCAxMjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0NPTU1BTkQsIDA1LCAyNSwgMTIwLCAxNSwgV1NfVEFCU1RPUApDSEVDS0JPWCAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICBQTV9TWU1CT0wsICAwNSwgNDUsICAxMCwgMTAsIFdTX1RBQlNUT1AKTFRFWFQgICAgICAgICAivcfH4L3DIMPWvNLIrSgmTSkiLCAgIElESUdOT1JFLCAgIDIwLCA0NSwgMTIwLCAxMApERUZQVVNIQlVUVE9OICLIrsDOIiwgICAgICAgICAgICAgICBJRE9LLCAgICAgIDEzNSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiw+u80iIsICAgICAgICAgICBJRENBTkNFTCwgIDEzNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiw6Ox4igmQikuLi4iLCAgICAgICAgICBQTV9CUk9XU0UsIDEzNSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAitbW/8ri7KCZIKSIsICAgICAgICAgICAgIFBNX0hFTFAsICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBTdHJpbmdzICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRSBMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ORVVUUkFMCnsKSURTX1BST0dSQU1fTUFOQUdFUiwJCSLHrrHXuLIgsPy4rsDaIgpJRFNfRVJST1IsCQkJIr+ht68iCklEU19XQVJOSU5HLAkJCSKw5rDtIgpJRFNfSU5GTywJCQkiwaS6uCIKSURTX0RFTEVURSwJCQkiwfa/7LHiIgpJRFNfREVMRVRFX0dST1VQX3MsCQkisde37CBgJXMnwLsgwfa/7LDavcC0z7HuID8iCklEU19ERUxFVEVfUFJPR1JBTV9zLAkJIseusde4siBgJXMnwLsgwfa/7LDavcC0z7HuID8iCklEU19OT1RfSU1QTEVNRU5URUQsCQkivsbB9yCxuMf2tcfB9iC+yr7SvcC0z7TZLiIKSURTX0ZJTEVfUkVBRF9FUlJPUl9zLAkJImAlcycgwNCx4iC/obevLiIKSURTX0ZJTEVfV1JJVEVfRVJST1JfcywJCSJgJXMnIL6yseIgv6G3ry4iCklEU19HUlBGSUxFX1JFQURfRVJST1JfcywJIlyx17fsIMbEwM8gYCVzJ8C7IL+tILz2IL74vcC0z7TZLlxuXLTZvcMgvcO1tcfPsNq9wLTPse4/IgpJRFNfT1VUX09GX01FTU9SWSwJCSK43rjwuK4gus7Bty4iCklEU19XSU5IRUxQX0VSUk9SLAkJIrW1v/K4u8C6ILChtMnHz8H2vsq9wLTPtNkuIgpJRFNfVU5LTk9XTl9GRUFUVVJFX3MsCQkiJXPAxyC+y7z2IL74tMIgxq/CoSIKSURTX0ZJTEVfTk9UX09WRVJXUklUVEVOX3MsCSLGxMDPICVzJyC0wiDBuMDnx8+5x7fOLCC1pL7uIL61ILz2IL74vcC0z7TZLiIKSURTX1NBVkVfR1JPVVBfQVNfcywJCSJgJXO4piC02bilIMDMuKfAuLfOIMD6wOXH2L7fIL/4t6EgxsTAz8C7ILWkvu4gvrK0wiCwySC4t8C7ILz2IMDWvcC0z7TZLiIKSURTX05PX0hPVF9LRVksCQkJIr74wL0iCklEU19BTExfRklMRVMsCQkJIrjwtecgxsTAzyAoKi4qKSIKSURTX1BST0dSQU1TLAkJCSLHrrHXuLIiCklEU19MSUJSQVJJRVNfRExMLAkJIrbzwMy66revuK4gxsTAzygqLmRsbCkiCklEU19TWU1CT0xfRklMRVMsCQkivsbAzMTcIMbEwM8iCklEU19TWU1CT0xTX0lDTywJCSK+xsDMxNwgKCouaWNvKSIKfQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUgTEFOR1VBR0UgTEFOR19LT1JFQU4sIFNVQkxBTkdfTkVVVFJBTAp7CklEU19MSUNFTlNFX0NBUFRJT04sICAgICAgICAgICAgIrbzwMy8vr26IgpJRFNfTElDRU5TRSwKIlRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgXAptb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIFwKdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cClRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBcCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIFwKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgXApMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXApZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBcCkZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EiCgpJRFNfV0FSUkFOVFlfQ0FQVElPTiwgIrq4wfUgvvjAvSIKSURTX1dBUlJBTlRZLAoiVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIFwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgXApNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBcCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuIgp9Cg==