LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDA2LCAyMDA3IFl1blNvbmcgSHdhbmcKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInNocmVzZGVmLmgiCgpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ERUZBVUxUCgpNRU5VXzAwMSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCk1FTlVJVEVNICLFqyC+xsDMxNwoJkcpIiwJRkNJRE1fU0hWSUVXX0JJR0lDT04KTUVOVUlURU0gIsDbwLogvsbAzMTcKCZNKSIsCUZDSURNX1NIVklFV19TTUFMTElDT04KTUVOVUlURU0gIrjxt88oJkwpIiwJCUZDSURNX1NIVklFV19MSVNUVklFVwpNRU5VSVRFTSAiwNq8vMj3KCZEKSIsCQlGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwpFTkQKCi8qCnNoZWxsdmlldyBiYWNrZ3JvdW5kIG1lbnUKKi8KTUVOVV8wMDIgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgpQT1BVUCAiIgpCRUdJTgpQT1BVUCAiurix4igmVikiCkJFR0lOCk1FTlVJVEVNICLFqyC+xsDMxNwoJkcpIiwJRkNJRE1fU0hWSUVXX0JJR0lDT04KTUVOVUlURU0gIsDbwLogvsbAzMTcKCZNKSIsCUZDSURNX1NIVklFV19TTUFMTElDT04KTUVOVUlURU0gIrjxt88oJkwpIiwJCUZDSURNX1NIVklFV19MSVNUVklFVwpNRU5VSVRFTSAiwNq8vMj3KCZEKSIsCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCkVORApNRU5VSVRFTSBTRVBBUkFUT1IKUE9QVVAgIr7GwMzE3CDBpLfEKCZJKSIKQkVHSU4KTUVOVUlURU0gIsDMuKfAuLfOKCZOKSIsCTB4MzAJLyogY29sdW1uIDAgKi8KTUVOVUlURU0gIsf8vcTAuLfOKCZUKSIsCTB4MzIJLyogY29sdW1uIDIgKi8KTUVOVUlURU0gIsWpseK3zigmUykiLAkweDMxCS8qIC4uLiAqLwpNRU5VSVRFTSAis6/CpbfOKCZEKSIsCTB4MzMKTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICLA2rW/IMGkt8QoJkEpIiwJRkNJRE1fU0hWSUVXX0FVVE9BUlJBTkdFCkVORApNRU5VSVRFTSAivsbAzMTcIMGkt8QiLAlGQ0lETV9TSFZJRVdfU05BUFRPR1JJRApNRU5VSVRFTSBTRVBBUkFUT1IKTUVOVUlURU0gIrv1t84gsO3EpyIsCQlGQ0lETV9TSFZJRVdfUkVGUkVTSApNRU5VSVRFTSBTRVBBUkFUT1IKTUVOVUlURU0gIrrZv6mz1rHiIiwJCUZDSURNX1NIVklFV19JTlNFUlQKTUVOVUlURU0gIri1xam3ziC62b+ps9ax4iIsCUZDSURNX1NIVklFV19JTlNFUlRMSU5LCk1FTlVJVEVNIFNFUEFSQVRPUgpQT1BVUCAiu/UgwNu+9yIKQkVHSU4KTUVOVUlURU0gIrv1IMb6tPUoJkYpIiwJRkNJRE1fU0hWSUVXX05FV0ZPTERFUgpNRU5VSVRFTSAiu/UguLXFqSgmTCkiLAlGQ0lETV9TSFZJRVdfTkVXTElOSwpNRU5VSVRFTSBTRVBBUkFUT1IKRU5ECk1FTlVJVEVNIFNFUEFSQVRPUgpNRU5VSVRFTSAivNO8uiIsCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCkVORApFTkQKCi8qCnNoZWxsdmlldyBpdGVtIG1lbnUKKi8KTUVOVV9TSFZfRklMRSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOClBPUFVQICIiCkJFR0lOCk1FTlVJVEVNICImU2VsZWN0IgkJRkNJRE1fU0hWSUVXX09QRU4KTUVOVUlURU0gIsW9u/YoJlgpIiwJCUZDSURNX1NIVklFV19FWFBMT1JFCk1FTlVJVEVNICK/rbHiKCZPKSIsCQlGQ0lETV9TSFZJRVdfT1BFTgpNRU5VSVRFTSBTRVBBUkFUT1IKTUVOVUlURU0gIsDftvOzu7HiKCZVKSIsCQlGQ0lETV9TSFZJRVdfQ1VUCk1FTlVJVEVNICK6ubvnKCZDKSIsCQlGQ0lETV9TSFZJRVdfQ09QWQpNRU5VSVRFTSBTRVBBUkFUT1IKTUVOVUlURU0gIri1xakguLi16bHiKCZMKSIsCUZDSURNX1NIVklFV19DUkVBVEVMSU5LCk1FTlVJVEVNICLB9r/sseIoJkQpIiwJCUZDSURNX1NIVklFV19ERUxFVEUKTUVOVUlURU0gIsDMuKcgudmy2bHiKCZSKSIsCQlGQ0lETV9TSFZJRVdfUkVOQU1FCk1FTlVJVEVNIFNFUEFSQVRPUgpNRU5VSVRFTSAivNO8uigmUCkiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwpFTkQKRU5ECgpNRU5VX0NQQU5FTCBNRU5VCkJFR0lOCiAgICBQT1BVUCAixsTAzygmRikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKzqrHiseIoJlgpIiwgSURNX0NQQU5FTF9FWElUCiAgICBFTkQKCiAgICBQT1BVUCAiurix4igmVikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLFqyC+xsDMxNwoJkcpIiwgRkNJRE1fU0hWSUVXX0JJR0lDT04KICAgICAgICBNRU5VSVRFTSAiwNvAuiC+xsDMxNwoJk0pIiwgRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgogICAgICAgIE1FTlVJVEVNICK48bfPKCZMKSIsIEZDSURNX1NIVklFV19MSVNUVklFVwogICAgICAgIE1FTlVJVEVNICLA2ry8yPcoJkQpIiwgRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKICAgIEVORAoKICAgIFBPUFVQICK1tb/yuLsoJkgpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiwaa+7sbHIMGkurgoJkEpLi4uIiwgSURNX0NQQU5FTF9BQk9VVAogICAgRU5ECkVORAoKClNIQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDE4OCwgMTkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIsb6tPUgxb279iIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgp7CkRFRlBVU0hCVVRUT04gIsiuwM4iLCAxLCA4MCwgMTc2LCA1MCwgMTIsIEJTX0RFRlBVU0hCVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAiw+u80iIsIDIsIDEzNCwgMTc2LCA1MCwgMTIsIFdTX0dST1VQIHwgV1NfVEFCU1RPUApMVEVYVCAiIiwgSUREX1RJVExFLCA0LCA0LCAxODAsIDEyCkxURVhUICIiLCBJRERfU1RBVFVTLCA0LCAyNSwgMTgwLCAxMgpDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfApXU19CT1JERVIgfCBXU19UQUJTVE9QLAo0LCA0MCwgMTgwLCAxMjAKfQoKClNITkVXQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIxOCwgMTk2ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IFdTX1NJWkVCT1ggfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICLG+rT1IMW9u/YiCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKewpMVEVYVCAiIiwgSUREX1RJVExFLCAxMCwgOCwgMTk4LCAyNApMVEVYVCAiIiwgSUREX1NUQVRVUywgMTAsIDI1LCAxOTgsIDEyCkxURVhUICLG+rT1OiIsIElERF9GT0xERVIsIDEwLCAxNTYsIDQwLCAxMgpDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfApXU19CT1JERVIgfCBXU19UQUJTVE9QLAoxMiwgMzgsIDE5NCwgMTA1CkVESVRURVhUIElERF9GT0xERVJURVhULCA0NiwgMTUwLCAxNjAsIDE0LCBXU19CT1JERVIgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAiu/Ugxvq09SC4uLXpseIoJk0pIiwgSUREX01BS0VORVdGT0xERVIsIDEyLCAxNzQsIDcwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCkRFRlBVU0hCVVRUT04gIsiuwM4iLCBJRE9LLCAxMDIsIDE3NCwgNTAsIDE0LCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QClBVU0hCVVRUT04gIsPrvNIiLCBJRENBTkNFTCwgMTU2LCAxNzQsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KClNIRUxMX1lFU1RPQUxMX01TR0JPWCBESUFMT0cgMjAwLCAxMDAsIDI4MCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIrjevcPB9iIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgp7CkRFRlBVU0hCVVRUT04gIr+5KCZZKSIsIElEWUVTLCAzNCwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QClBVU0hCVVRUT04gIrjwtc4gv7koJkEpIiwgSUREX1lFU1RPQUxMLCA5MiwgNjksIDY1LCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QClBVU0hCVVRUT04gIiC+xrTPv8AoJk4pIiwgSUROTywgMTYyLCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAiw+u80igmQykiLCBJRENBTkNFTCwgMjIwLCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKSUNPTiAiIiwgSUREX0lDT04sIDEwLCAxMCwgMTYsIDE2CkxURVhUICIiLCBJRERfTUVTU0FHRSwgNDAsIDEwLCAyMzgsIDUyLCAwCn0KClNIRUxMX0FCT1VUX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIyMCwgMTUyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICIgJXMgwaS6uCIKRk9OVCAxMCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiyK7AziIsIElET0ssIDE1MywgMTMzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIldpbmUgtvPAzLy+vbooJmwpLi4uIiwgSURDX0FCT1VUX0xJQ0VOU0UsIDE1MywgMTEzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggSURDX0FCT1VUX0xJU1RCT1gsIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgc3RjMSwgMTAsIDEwLCAzMCwgMzAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQxLCA0MiwgMTAsIDE3MCwgMTAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQyLCA0MiwgMjIsIDE3MCwgMTAKIExURVhUICIlcyC9x8fgwd8iLCBJRENfQUJPVVRfU1RBVElDX1RFWFQzLCA0MiwgMzQsIDE3MCwgMTAKIExURVhUICJXaW5lIL+hILW1v/LB1r3FILrQOiIsIElEQ19BQk9VVF9XSU5FX1RFWFQsIDgsIDU0LCAyMDQsIDEwCn0KCgpTSEVMTF9SVU5fRExHIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDAsIDAsIDIyNywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIiIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgp7CiBJQ09OICIiLCBJRENfUlVORExHX0lDT04sIDcsIDExLCAxOCwgMjAsIFdTX1ZJU0lCTEUKIExURVhUICLHrrHXuLIsxvq09Sy5rryts6ogwM7FzbPdIMDav/gsILHXuK6w7SBXaW5lwMwgv60gILDNwMcgwMy4p8C7IMD7vu7B1ry8v+QuIiwgSURDX1JVTkRMR19ERVNDUklQVElPTiwgMzYsIDExLCAxODIsIDE4CiBMVEVYVCAiv62x4igmTyk6IiwgSURDX1JVTkRMR19MQUJFTCwgNywgMzksIDI0LCAxMAogQ09OVFJPTCAiIiwgSURDX1JVTkRMR19FRElUUEFUSCwgIkNPTUJPQk9YIiwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgV1NfVlNDUk9MTCB8IFdTX1ZJU0lCTEUgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX0RST1BET1dOLCAzNiwgMzcsIDE4MywgMTAwCiBERUZQVVNIQlVUVE9OICLIrsDOIiwgSURPSywgNjIsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIsPrvNIiLCBJRENBTkNFTCwgMTE2LCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICLDo7HiKCZCKS4uLiIsIElEQ19SVU5ETEdfQlJPV1NFLCAxNzAsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKfQoKClNUUklOR1RBQkxFCnsKLyogY29sdW1ucyBpbiB0aGUgc2hlbGx2aWV3ICovCklEU19TSFZfQ09MVU1OMQkJIsbEwM8iCklEU19TSFZfQ09MVU1OMgkJIsWpseIiCklEU19TSFZfQ09MVU1OMwkJIsf8vcQiCklEU19TSFZfQ09MVU1ONAkJIrz2waSzr8KlIgpJRFNfU0hWX0NPTFVNTjUJCSK807y6IgpJRFNfU0hWX0NPTFVNTjYJCSLFqbHiIgpJRFNfU0hWX0NPTFVNTjcJCSKwobTJx9Egxamx4iIKSURTX1NIVl9DT0xVTU44CQkiwMy4pyIKSURTX1NIVl9DT0xVTU45CQkiwda8riIKSURTX1NIVl9DT0xVTU4xMAkivNLAr8DaIgpJRFNfU0hWX0NPTFVNTjExCSKx17fsIgpJRFNfU0hWX0NPTFVNTl9ERUxGUk9NCSK/+LehIMCnxKEiCklEU19TSFZfQ09MVU1OX0RFTERBVEUJIsH2v/bB+CCzr8KlIgoKLyogc3BlY2lhbCBmb2xkZXJzICovCklEU19ERVNLVE9QCQkitaW9usWpxb4iCklEU19NWUNPTVBVVEVSCQkis7sgxMTHu8XNIgpJRFNfUkVDWUNMRUJJTl9GT0xERVJfTkFNRSAgICAgICLI3sH2xesiCklEU19DT05UUk9MUEFORUwJIsGmvu7GxyIKCi8qIGNvbnRleHQgbWVudXMgKi8KSURTX1ZJRVdfTEFSR0UJCSLFqyC+xsDMxNwoJkcpIgpJRFNfVklFV19TTUFMTAkJIsDbwLogvsbAzMTcKCZNKSIKSURTX1ZJRVdfTElTVAkJIrjxt88oJkwpIgpJRFNfVklFV19ERVRBSUxTCSLA2ry8yPcoJkQpIgpJRFNfU0VMRUNUCQkivLHFwyIKSURTX09QRU4JCSK/rbHiIgoKSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIrv1IMb6tPW4piC4uLXpILz2IL74vcC0z7TZOiC4uLXpILHHx9HAzCC++L3AtM+02S4iCklEU19DUkVBVEVGT0xERVJfQ0FQVElPTiAiu/Ugxvq09bimILi4teW0wiCw+sGkv6G8rSC/obevud+7/SIKSURTX0RFTEVURUlURU1fQ0FQVElPTiAixsTAzyDB9r/sseIgyK7AziIKSURTX0RFTEVURUZPTERFUl9DQVBUSU9OICLG+rT1IMH2v+yx4iDIrsDOIgpJRFNfREVMRVRFSVRFTV9URVhUICK0573FwLogICclMSfAuyDB9r/sseK4piC52bb4tM+x7j8iCklEU19ERUxFVEVNVUxUSVBMRV9URVhUICK0573FwLogJTEgvsbAzMXbKLXpKcC7IMH2v+yx4rimILnZtvi0z7HuPyIKSURTX0RFTEVURVNFTEVDVEVEX1RFWFQgIrTnvcXAuiC8scXDtcggvsbAzMXbKLXpKcC7IMH2v+yx4rimILnZtvi0z7HuPyIKSURTX1RSQVNISVRFTV9URVhUICK0573FwLogJyUxJyDAuyi4pikgyN7B9sXrwLi3ziC6uLO7seK4piC52bb4tM+x7j8iCklEU19UUkFTSEZPTERFUl9URVhUICK0573FwLogJyUxJyCw+iCx1yC+yMDHILO7v+vAuyDI3sH2xevAuLfOILq4s7ux4rimILnZtvi0z7HuPyIKSURTX1RSQVNITVVMVElQTEVfVEVYVCAitOe9xcC6ICclMScgtenAuyi4pikgyN7B9sXrwLi3ziC6uLO7seK4piC52bb4tM+x7j8iCklEU19DQU5UVFJBU0hfVEVYVCAiwMwgvsbAzMXbJyUxJ8C7IMjewfbF68C4t84gurizviC89iC++L3AtM+02S4gtOu9xSDB9r/ssNq9wLTPse4/IgpJRFNfT1ZFUldSSVRFRklMRV9URVhUICLAzCDG+rT1tMIgwMy5zCAnJTEnIMbEwM/AuyCwocH2sO0gwNa9wLTPtNkuXG5cbrnZstmw2r3AtM+x7j8iCklEU19PVkVSV1JJVEVGSUxFX0NBUFRJT04gIsbEwM8gtaS+7r6yseIgyK7AziIKSURTX09WRVJXUklURUZPTERFUl9URVhUICIgIMDMIMb6tPW0wiDAzLnMICclMSfAzLb1IMDMuKfAuyCwocH4IMb6tPW4piDG98fUx8+w7SDA1r3AtM+02S5cblxuIlwKICAgICAiuLi+4CC0573FwMwgsLDAuiDAzLinwLi3ziC067vzIMb6tPW4piDB9sGkx9G02bjpILyxxcO1yCDG+rT1tMIgtOvDvLXJILDNwNS0z7TZXG4iXAogICAgICIgtOvDvLXJILDNwNS0z7TZLiC0573FwLogwMwgxvq09bimIMDMtb+9w8WwsMWzqiC6ubvnx8+w2r3AtM+x7j8iCgoKLyogbWVzc2FnZSBib3ggc3RyaW5ncyAqLwpJRFNfUkVTVEFSVF9USVRMRSAgICAgICAitNm9wyC9w8DbIiAKSURTX1JFU1RBUlRfUFJPTVBUICAgICAgIrTnvcXAuiDAqbW1v+zB7iDA57rOxsPAuyAgwOfH9sfPsNq9wLTPse4/IgpJRFNfU0hVVERPV05fVElUTEUgICAgICAisvSx4iIKSURTX1NIVVRET1dOX1BST01QVCAgICAgIrTnvcXAuiAgV2luZSC8vLzHwLsgsvSw2r3AtM+x7j8iCgovKiBSdW4gRmlsZSBkaWFsb2cgKi8KSURTX1JVTkRMR19FUlJPUiAgICAgICAgICAgIsbEwM8gvcfH4CC068itILvzwNq4piC6uL+pwdm89iC++L3AtM+02Sizu7rOIL+ht68pIgpJRFNfUlVORExHX0JST1dTRV9FUlJPUiAgICAiw6Ox4iC068itILvzwNq4piC6uL+pIMHZILz2IL74vcC0z7TZKLO7us4gv6G3rykiCklEU19SVU5ETEdfQlJPV1NFX0NBUFRJT04gICLDo7HiIgpJRFNfUlVORExHX0JST1dTRV9GSUxURVIgICAivcfH4CDGxMDPXDAqLmV4ZVwwQbjwtecgxsTAz1wwKi4qXDBcMCIKCi8qIHNoZWxsIGZvbGRlciBwYXRoIGRlZmF1bHQgdmFsdWVzICovCklEU19QUk9HUkFNUyAgICAgICAgICAgICAgICAivcPA2yC43rS6XFzHwbfOsde3pSIKSURTX1BFUlNPTkFMICAgICAgICAgICAgICAgICKzuyC5rrytIgpJRFNfRkFWT1JJVEVTICAgICAgICAgICAgICAgIsHxsNzDo7HiIgpJRFNfU1RBUlRVUCAgICAgICAgICAgICAgICAgIr3DwNsguN60ulxcx8G3zrHXt6VcXL3DwNsgx8G3zrHXt6UiCklEU19SRUNFTlQgICAgICAgICAgICAgICAgICAiw9ax2SDGxMDPIgpJRFNfU0VORFRPICAgICAgICAgICAgICAgICAgIrq4s7ux4iIKSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICK9w8DbILjetLoiCklEU19NWU1VU0lDICAgICAgICAgICAgICAgICAis7sgwL2+xyIKSURTX01ZVklERU8gICAgICAgICAgICAgICAgICKzuyC68bXwv8AiCklEU19ERVNLVE9QRElSRUNUT1JZICAgICAgICAitaW9usWpxb4iCklEU19ORVRIT09EICAgICAgICAgICAgICAgICAis9fGrr/2xakgyK+w5iIKSURTX1RFTVBMQVRFUyAgICAgICAgICAgICAgICJUZW1wbGF0ZXMiCklEU19BUFBEQVRBICAgICAgICAgICAgICAgICAiQXBwbGljYXRpb24gRGF0YSIKSURTX1BSSU5USE9PRCAgICAgICAgICAgICAgICKz18auv/bFqSDIr7DmIgpJRFNfTE9DQUxfQVBQREFUQSAgICAgICAgICAgIkxvY2FsIFNldHRpbmdzXFxBcHBsaWNhdGlvbiBEYXRhIgpJRFNfSU5URVJORVRfQ0FDSEUgICAgICAgICAgIkxvY2FsIFNldHRpbmdzXFxUZW1wb3JhcnkgSW50ZXJuZXQgRmlsZXMiCklEU19DT09LSUVTICAgICAgICAgICAgICAgICAiQ29va2llcyIKSURTX0hJU1RPUlkgICAgICAgICAgICAgICAgICJMb2NhbCBTZXR0aW5nc1xcSGlzdG9yeSIKSURTX1BST0dSQU1fRklMRVMgICAgICAgICAgICJQcm9ncmFtIEZpbGVzIgpJRFNfTVlQSUNUVVJFUyAgICAgICAgICAgICAgIrO7ILHXuLIiCklEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTiAgICAiUHJvZ3JhbSBGaWxlc1xcQ29tbW9uIEZpbGVzIgpJRFNfQ09NTU9OX0RPQ1VNRU5UUyAgICAgICAgIrmuvK0iCklEU19BRE1JTlRPT0xTICAgICAgICAgICAgICAivcPA27jetLpcXMfBt86x17elXFyw/LiuILW1sbgiCklEU19DT01NT05fTVVTSUMgICAgICAgICAgICAis7sgwL2+xyIKSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICKzuyCx17iyIgpJRFNfQ09NTU9OX1ZJREVPICAgICAgICAgICAgIrO7ILrxtfC/wCIKSURTX0NEQlVSTl9BUkVBICAgICAgICAgICAgICJMb2NhbCBTZXR0aW5nc1xcQXBwbGljYXRpb24gRGF0YVxcTWljcm9zb2Z0XFxDRCBCdXJuaW5nIgoKSURTX05FV0ZPTERFUgkJIrv1IMb6tPUiCgpJRFNfQ1BBTkVMX1RJVExFICAgICAgICAgICAgIldpbmUgwaa+7sbHIgpJRFNfQ1BBTkVMX05BTUUgICAgICAgICAgICAgIsDMuKciCklEU19DUEFORUxfREVTQ1JJUFRJT04gICAgICAivLO47SIKSURTX1NITEVYRUNfTk9BU1NPQyAgICAgICAgICLAzCDH/L3EwMcgxsTAz8C7ILW1t88gsbi8urXIIMCptbW/7CDHwbfOsde3pcDMIL74vcC0z7TZLiIKCn0KClNUUklOR1RBQkxFCnsKSURTX0xJQ0VOU0VfQ0FQVElPTiwgICAgICAgICAgICAiV2luZSC288DMvL69uiIKSURTX0xJQ0VOU0UsCiJXaW5lIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBcCm1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgXAp2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuXApXaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIFwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgXApNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBcCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cblwKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBcCkxpY2Vuc2UgYWxvbmcgd2l0aCBXaW5lOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIFwKRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4iCn0K