IC8qCiAqIENvcHlyaWdodCAyMDA0IGJ5IEtyenlzenRvZiBGb2x0bWFuCiAqIENvcHlyaWdodCAyMDA2LDIwMDcgYnkgWXVuU29uZyBId2FuZwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgoKTEFOR1VBR0UgTEFOR19LT1JFQU4sIFNVQkxBTkdfTkVVVFJBTAoKSURNX01BSU5NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICLGxMDPKCZGKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIrv1IMbEwM8oJk4pXHRDdHJsK04iLCAgICAgICAgICBJRF9GSUxFX05FVwogICAgICAgIE1FTlVJVEVNICK/rbHiKCZPKS4uLlx0Q3RybCtPIiwgICAgICBJRF9GSUxFX09QRU4KICAgICAgICBNRU5VSVRFTSAiwPrA5SgmUylcdEN0cmwrUyIsICAgICAgICAgSURfRklMRV9TQVZFCiAgICAgICAgTUVOVUlURU0gIrTZuKUgwMy4p8C4t84gwPrA5SgmQSkuLi4iLCBJRF9GSUxFX1NBVkVBUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLAzrziKCZQKSAuIC4gLlx0Q3RybCtQIiwgICAgSURfUFJJTlQKICAgICAgICBNRU5VSVRFTSAiwM684iC5zLiuurix4igmVykgLiAuIC4iLCAgICBJRF9QUkVWSUVXCiAgICAgICAgTUVOVUlURU0gIiDAzrziILyzwaQoJkUpIC4gLiAuIiwgICAgICAgSURfUFJJTlRTRVRVUAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKzqrChseIoJlgpIiwgICAgICAgICBJRF9GSUxFX0VYSVQKICAgIEVORAogICAgUE9QVVAgIsbtwf0oJkUpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAitce1ubiuseIoJlUpXHRDdHJsK1oiLCAgICAgICAgICAgICAgIElEX0VESVRfVU5ETwogICAgICAgIE1FTlVJVEVNICK02b3DIL3Hx+AoJkUpXHRDdHJsK1kiLCAgICAgICAgICAgICAgIElEX0VESVRfUkVETwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLA37bzs7ux4igmVClcdEN0cmwrWCIsICAgICAgICAgICAgICAgIElEX0VESVRfQ1VUCiAgICAgICAgTUVOVUlURU0gIrq5u+coJkMpXHRDdHJsK0MiLCAgICAgICAgICAgICAgIElEX0VESVRfQ09QWQogICAgICAgIE1FTlVJVEVNICK62b+ps9ax4igmUClcdEN0cmwrViIsICAgICAgICAgICAgICBJRF9FRElUX1BBU1RFCiAgICAgICAgTUVOVUlURU0gIsH2v+yx4igmQylcdERFTCIsICAgICAgICAgICAgICAgICBJRF9FRElUX0NMRUFSCiAgICAgICAgTUVOVUlURU0gIrjwtc4gvLHFwygmUylcdEN0cmwrQSIsICAgICAgICAgSURfRURJVF9TRUxFQ1RBTEwKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiw6Ox4igmRikuIC4gLlx0Q3J0bCtGIiwgICAgICAgICBJRF9GSU5ECiAgICAgICAgTUVOVUlURU0gIrTZwL0gw6Ox4igmTilcdEYzIiwgICAgICAgICAgICAgIElEX0ZJTkRfTkVYVAoJTUVOVUlURU0gIiC52bLZseIoJlIpIC4gLiAuXHRDdHJsK0giLCAgICAgIElEX1JFUExBQ0UKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiwNCx4iDA/L/rKCZPKSIsICAgICAgICAgICAgICAgICAgSURfRURJVF9SRUFET05MWQogICAgICAgIE1FTlVJVEVNICK89sGkILChtMkoJk0pIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRklFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICKx4sW4KCZYKSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAivLHFwyC/tb+qIMGkurgoJkkpIiwgICAgICAgICAgICAgSURfRURJVF9TRUxFQ1RJT05JTkZPCiAgICAgICAgICAgIE1FTlVJVEVNICK5rsDaIMf8vcQoJkYpIiwgICAgICAgICAgIElEX0VESVRfQ0hBUkZPUk1BVAogICAgICAgICAgICBNRU5VSVRFTSAiwaTAx7XIILmuwNq/rSDH/L3EKCZEKSIsICAgICAgICAgICBJRF9FRElUX0RFRkNIQVJGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gIrTctvQgx/y9xCgmSCkiLCAgICAgICAgICAgSURfRURJVF9QQVJBRk9STUFUCiAgICAgICAgICAgIE1FTlVJVEVNICLF2L26xq4gvvKx4igmRykiLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX0dFVFRFWFQKICAgICAgICBFTkQKICAgIEVORAogICAgUE9QVVAgIrq4seIoJlYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAitbWxuLnZKCZUKSIsICAgICAgICBJRF9UT0dHTEVfVE9PTEJBUgogICAgICAgIE1FTlVJVEVNICLH/L3EudkoJkYpIiwgICAgICBJRF9UT0dHTEVfRk9STUFUQkFSCiAgICAgICAgTUVOVUlURU0gIrvzxcK52SgmUykiLCAgICAgIElEX1RPR0dMRV9TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiIL/JvMcoJk8pIC4gLiAuIiwgIElEX1ZJRVdQUk9QRVJUSUVTCiAgICBFTkQKICAgIFBPUFVQICLB/b7us9ax4igmSSkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICKzr8Klv80gvcOwoygmRCkgLiAuIC4iLCAgSURfREFURVRJTUUKICAgIEVORAogICAgUE9QVVAgIsf8vcQoJk8pIgogICAgQkVHSU4KCU1FTlVJVEVNICKx27LDKCZGKSAuIC4gLiIsICAgICAgICAgICAgICAgICAgSURfRk9OVFNFVFRJTkdTCiAgICAgICAgTUVOVUlURU0gIrCtwbYgwaEoJlUpIiAgICAgICAgICAgICAgICBJRF9CVUxMRVQKICAgICAgICBNRU5VSVRFTSAitNy29CgmUCkgLiAuIC4iICAgICAgICAgICAgICBJRF9QQVJBRk9STUFUCiAgICAgICAgTUVOVUlURU0gIsXHKCZUKSAuIC4gLiIgICAgICAgICAgICAgICAgICAgSURfVEFCU1RPUFMKICAgICAgICBQT1BVUCAiueiw5igmQikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIr3DvbrF2ygmUylcdEN0cmwrMSIsICAgICAgICAgSURfQkFDS18xCiAgICAgICAgICAgIE1FTlVJVEVNICKz67b7u/bAuLfOKCZQKVx0Q3RybCsyIiwgICAgICAgICAgIElEX0JBQ0tfMgogICAgICAgIEVORAogICAgRU5ECiAgICBQT1BVUCAitbW/8ri7KCZIKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIr/2teXG0LXlIMGkurgoJkEpIiAgICAgICBJRF9BQk9VVAogICAgRU5ECkVORAoKSURNX1BPUFVQIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLA37bzs7ux4igmVCkiLCAgICAgICAgICBJRF9FRElUX0NVVAogICAgICAgIE1FTlVJVEVNICK6ubvnKCZDKSIsICAgICAgICAgICAgIElEX0VESVRfQ09QWQogICAgICAgIE1FTlVJVEVNICK62b+ps9ax4igmUCkiLCAgICAgICAgICBJRF9FRElUX1BBU1RFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrCtwbbBoSgmQikiICAgICAgICBJRF9CVUxMRVQKICAgICAgICBNRU5VSVRFTSAitNy29CgmUCkgLiAuIC4iICAgICAgSURfUEFSQUZPUk1BVAogICAgRU5ECkVORAoKSUREX0RBVEVUSU1FIERJQUxPRyBESVNDQVJEQUJMRSAzMCwgMjAsIDEzMCwgODAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIrOvwqW/zSC9w7CjIgpGT05UIDEwLCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICKwobTJx9Egx/y9xCIsMCwzLDIsMTAwLDE1CiAgICBMSVNUQk9YICAgICAgSURDX0RBVEVUSU1FLDMsMTIsODAsNjUsTEJTX05PSU5URUdSQUxIRUlHSFQKICAgIFBVU0hCVVRUT04gICAiyK7AzigmTykiLElET0ssODcsMTIsNDAsMTIKICAgIFBVU0hCVVRUT04gICAiw+u80igmQykiLElEQ0FOQ0VMLDg3LDI2LDQwLDEyCkVORAoKSUREX05FV0ZJTEUgRElBTE9HIERJU0NBUkRBQkxFIDMwLCAyMCwgMTQwLCA4MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiu/Ugua68rSIKRk9OVCAxMCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAiu/Ugua68rSDH/L3EIiwwLDMsMiwxMDAsMTUKICAgIExJU1RCT1ggICAgICBJRENfTkVXRklMRSwzLDEyLDkwLDY1LExCU19OT0lOVEVHUkFMSEVJR0hUCiAgICBQVVNIQlVUVE9OICAgIsiuwM4oJk8pIixJRE9LLDk3LDEyLDQwLDEyCiAgICBQVVNIQlVUVE9OICAgIsPrvNIoJkMpIixJRENBTkNFTCw5NywyNiw0MCwxMgpFTkQKCklERF9QQVJBRk9STUFUIERJQUxPRyBESVNDQVJEQUJMRSAzMCwgMjAsIDIwMCwgMTEwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDYXB0aW9uICK03Lb0IMf8vcQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICK16b+pvrKx4iIsIDAsIDEwLCAxMCwgMTIwLCA2OAogICAgTFRFWFQgIr/ewsoiLCAwLCAxNSwgMjIsIDQwLCAxMwogICAgRURJVFRFWFQgSURDX1BBUkFfTEVGVCwgNTUsIDIwLCA2MCwgMTMKICAgIExURVhUICK/wLilwsoiLCAwLCAxNSwgNDAsIDQwLCAxMwogICAgRURJVFRFWFQgSURDX1BBUkFfUklHSFQsIDU1LCAzOCwgNjAsIDEzCiAgICBMVEVYVCAiw7nCsCDB2SIsIDAsIDE1LCA1OCwgNDAsIDEzCiAgICBFRElUVEVYVCBJRENfUEFSQV9GSVJTVCwgNTUsIDU2LCA2MCwgMTMKICAgIExURVhUICLBpLfEIiwgMCwgMTUsIDg3LCA0MCwgMTMKICAgIENPTUJPQk9YIElEQ19QQVJBX0FMSUdOLCA1NSwgODUsIDYwLCAxMywgQ0JTX0RST1BET1dOTElTVAogICAgUFVTSEJVVFRPTiAiyK7AzigmTykiLCBJRE9LLCAxMzcsIDE1LCA1MCwgMTUKICAgIFBVU0hCVVRUT04gIsPrvNIoJkMpIiwgSURDQU5DRUwsIDEzNywgMzMsIDUwLCAxNQpFTkQKCklERF9UQUJTVE9QUyBESUFMT0cgRElTQ0FSREFCTEUgMzAsIDIwLCAyMDAsIDExMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ2FwdGlvbiAixcciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICLFxyDBpMH2IiwgMCwgMTAsIDEwLCAxMjAsIDkwCiAgICBDT01CT0JPWCBJRENfVEFCU1RPUFMsIDIwLCAyMCwgMTAwLCA2MCwgQ0JTX1NJTVBMRSB8IENCU19TT1JUCiAgICBERUZQVVNIQlVUVE9OICK09cfPseIoJkEpIiwgSURfVEFCX0FERCwgMjAsIDgwLCA0NSwgMTUKICAgIFBVU0hCVVRUT04gIsH2v+yx4igmUikiLCBJRF9UQUJfREVMLCA3MiwgODAsIDQ1LCAxNQogICAgUFVTSEJVVFRPTiAiyK7AzigmTykiLCBJRE9LLCAxMzcsIDE1LCA1MCwgMTUKICAgIFBVU0hCVVRUT04gIsPrvNIoJkMpIiwgSURDQU5DRUwsIDEzNywgMzMsIDUwLCAxNQogICAgUFVTSEJVVFRPTiAiuPC1ziDB9r/sseIoJkwpIiwgSURfVEFCX0VNUFRZLCAxMzcsIDUxLCA1MCwgMTUKRU5ECgpJRERfRk9STUFUT1BUUyBESUFMT0cgRElTQ0FSREFCTEUgMCwgMCwgMjgwLCAxMTAKU1RZTEUgRFNfU1lTTU9EQUwKQ2FwdGlvbiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiwdkgs9Gx4rHiIiwgMCwgMTAsIDEwLCAxMzAsIDg1CiAgICBSQURJT0JVVFRPTiAiw6IgsKHA5cDauK68rSAgsdsgs9Gx4rHiKCZXKSIsIElEQ19QQUdFRk1UX1dXLCAxOCwgMjUsIDExNywgMTUKICAgIFJBRElPQlVUVE9OICKwocDlwNq4rr+hvK0gwdkgs9Gx4rHiKCZNKSIsIElEQ19QQUdFRk1UX1dNLCAxOCwgNDUsIDExNywgMTUKICAgIEdST1VQQk9YICIgtbWxuLnZIiwgMCwgMTUwLCAxMCwgMTIwLCA4NQogICAgQ0hFQ0tCT1ggIrW1sbi52SgmVCkiLCBJRENfUEFHRUZNVF9UQiwgMTYwLCAyMCwgODAsIDE1CiAgICBDSEVDS0JPWCAix/y9xLnZKCZGKSIsIElEQ19QQUdFRk1UX0ZCLCAxNjAsIDM4LCA4MCwgMTUKICAgIENIRUNLQk9YICK788XCudkoJlMpIiwgSURDX1BBR0VGTVRfU0IsIDE2MCwgNTYsIDgwLCAxNQogICAgTFRFWFQgIiIsIElEQ19QQUdFRk1UX0lELCAwLDAsMCwwCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFNUUklOR19SSUNIVEVYVF9GSUxFU19SVEYsICAgICAiuK7EoSDF2L26xq4gxsTAz8f8vcQgKCoucnRmKSIKICAgIFNUUklOR19URVhUX0ZJTEVTX1RYVCwgICAgICAgICAixdi9usauIMbEwM8gKCoudHh0KSIKICAgIFNUUklOR19URVhUX0ZJTEVTX1VOSUNPREVfVFhULCAiwK+0z8TateUgxdi9usauILmuvK0oKi50eHQpIgogICAgU1RSSU5HX0FMTF9GSUxFUywgICAgICAgICAgICAgICK48LXnILmuvK0gKCouKikiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFNUUklOR19BTElHTl9MRUZULCAgICAgICAgICAgICK/3sLKIgogICAgU1RSSU5HX0FMSUdOX1JJR0hULCAgICAgICAgICAgIr/AuKXCyiIKICAgIFNUUklOR19BTElHTl9DRU5URVIsICAgICAgICAgICKwob/utaUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFNUUklOR19QUklOVEVSX0ZJTEVTX1BSTiwgICAgICAgICLHwbiwxc0gxsTAzyAoKi5QUk4pIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBTVFJJTkdfVklFV1BST1BTX1RJVExFLCAgICAgICAgICAiv8m8xyIKICAgIFNUUklOR19WSUVXUFJPUFNfVEVYVCwgICAgICAgICAgICLF2L26xq4iCiAgICBTVFJJTkdfVklFV1BST1BTX1JJQ0hURVhULCAgICAgICAiuK7EoSDF2L26xq4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFNUUklOR19QUkVWSUVXX1BSSU5ULCAgICAgICAgICAgICLAzrziIgogICAgU1RSSU5HX1BSRVZJRVdfTkVYVFBBR0UsICAgICAgICAgIrTZwL0gxuTAzMH2IgogICAgU1RSSU5HX1BSRVZJRVdfUFJFVlBBR0UsICAgICAgICAgIsDMwPwgxuTAzMH2IgogICAgU1RSSU5HX1BSRVZJRVdfQ0xPU0UsICAgICAgICAgICAgIrTdseIiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFNUUklOR19VTklUU19DTSwgICAgICAgICAgICAgImNtIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBTVFJJTkdfREVGQVVMVF9GSUxFTkFNRSwgICAgICK5rrytIgogICAgU1RSSU5HX1BST01QVF9TQVZFX0NIQU5HRVMsICAiJyVzJ8DHILnZsu8gsM3AuyDA+sDlx8+w2r3AtM+x7j8iCiAgICBTVFJJTkdfU0VBUkNIX0ZJTklTSEVELCAgICAgICK5rrytv6G8rSDDo7HiILOhLiIKICAgIFNUUklOR19MT0FEX1JJQ0hFRF9GQUlMRUQsICAgIriuxKHF2L26xq4gtvPAzLrqt6+4riC60revv8Cx4iC9x8bQLiIKICAgIFNUUklOR19TQVZFX0xPU0VGT1JNQVRUSU5HLCAgIrTnvcXAuiC6uMXrIMXYvbrGriDH/L3EwLi3ziDA+sDlx8+x4rimILyxxcPH373AtM+02SwgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICLAzLDNwLogxq+89sfRILLZudLAuyC++L+kILDNwNS0z7TZLiAiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIrTnvcXAuiDBpLi7t84gwPrA5cfPseK4piC/+MfVtM+x7j8iCiAgICBTVFJJTkdfSU5WQUxJRF9OVU1CRVIsICAgICAgICK/w7nZuKPB9iC+ysC6ILz2IMf8vcQiCiAgICBTVFJJTkdfT0xFX1NUT1JBR0VfTk9UX1NVUFBPUlRFRCwgIk9MRSDA+sDlILmuvK20wiDB9r/4tcfB9iC+yr3AtM+02SIKRU5ECg==