LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDAzLDIwMDQsMjAwNywyMDA4IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpegogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1NQQU5JU0gsIFNVQkxBTkdfTkVVVFJBTAoKTUVOVV8wMDEgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJTUVOVUlURU0gIkljb25vcyAmZ3JhbmRlcyIsCUZDSURNX1NIVklFV19CSUdJQ09OCglNRU5VSVRFTSAiSWNvbm9zICZwZXF1ZfFvcyIsCUZDSURNX1NIVklFV19TTUFMTElDT04KCU1FTlVJVEVNICImTGlzdGEiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCglNRU5VSVRFTSAiJkRldGFsbGVzIiwJCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCkVORAoKLyoKIHNoZWxsdmlldyBiYWNrZ3JvdW5kIG1lbnUKKi8KTUVOVV8wMDIgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIFBPUFVQICImVmVyIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICJJY29ub3MgJmdyYW5kZXMiLCAgICAgRkNJRE1fU0hWSUVXX0JJR0lDT04KCSAgICBNRU5VSVRFTSAiSWNvbm9zICZwZXF1ZfFvcyIsICAgIEZDSURNX1NIVklFV19TTUFMTElDT04KCSAgICBNRU5VSVRFTSAiJkxpc3RhIiwgICAgICAgICAgICAgIEZDSURNX1NIVklFV19MSVNUVklFVwoJICAgIE1FTlVJVEVNICImRGV0YWxsZXMiLCAgICAgICAgICAgRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiT3JkZW5hciAmaWNvbm9zIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICJQb3IgJm5vbWJyZSIsCTB4MzAJLyogY29sdW1uIDAgKi8KCSAgICBNRU5VSVRFTSAiUG9yICZ0aXBvIiwJMHgzMgkvKiBjb2x1bW4gMiAqLwoJICAgIE1FTlVJVEVNICJQb3IgdCZhbWHxbyIsCTB4MzEJLyogLi4uICovCgkgICAgTUVOVUlURU0gIlBvciAmZmVjaGEiLAkweDMzCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgICAgTUVOVUlURU0gIiZPcmRlbmFyIGF1dG9t4XRpY2FtZW50ZSIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQoJICBFTkQKCSAgTUVOVUlURU0gIkFsaW5lYXIgaWNvbm9zIiwJCUZDSURNX1NIVklFV19TTkFQVE9HUklECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiQWN0dWFsaXphciIsCQlGQ0lETV9TSFZJRVdfUkVGUkVTSAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIlBlZ2FyIiwJCQlGQ0lETV9TSFZJRVdfSU5TRVJUCgkgIE1FTlVJVEVNICJQZWdhciBhY2Nlc28gZGlyZWN0byIsCUZDSURNX1NIVklFV19JTlNFUlRMSU5LCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTnVldm8iCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIk51ZXZhICZjYXJwZXRhIiwJCUZDSURNX1NIVklFV19ORVdGT0xERVIKCSAgICBNRU5VSVRFTSAiTnVldm8gJmFjY2VzbyBkaXJlY3RvIiwJRkNJRE1fU0hWSUVXX05FV0xJTksKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiUHJvcGllZGFkZXMiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwoJRU5ECkVORAoKLyoKIHNoZWxsdmlldyBpdGVtIG1lbnUKKi8KTUVOVV9TSFZfRklMRSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCglQT1BVUCAiIgoJQkVHSU4KCSAgTUVOVUlURU0gIiZTZWxlY2Npb25hciIJCUZDSURNX1NIVklFV19PUEVOCgkgIE1FTlVJVEVNICJFJnhwbG9yYXIiLAkJCUZDSURNX1NIVklFV19FWFBMT1JFCgkgIE1FTlVJVEVNICImQWJyaXIiLAkJCUZDSURNX1NIVklFV19PUEVOCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiQyZvcnRhciIsCQkJRkNJRE1fU0hWSUVXX0NVVAoJICBNRU5VSVRFTSAiJkNvcGlhciIsCQkJRkNJRE1fU0hWSUVXX0NPUFkKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJDJnJlYXIgYWNjZXNvIGRpcmVjdG8iLAlGQ0lETV9TSFZJRVdfQ1JFQVRFTElOSwoJICBNRU5VSVRFTSAiJkVsaW1pbmFyIiwJCQlGQ0lETV9TSFZJRVdfREVMRVRFCgkgIE1FTlVJVEVNICJSZSZub21icmFyIiwJCUZDSURNX1NIVklFV19SRU5BTUUKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICImUHJvcGllZGFkZXMiLAkJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCk1FTlVfQ1BBTkVMIE1FTlUKQkVHSU4KICAgIFBPUFVQICImRmlsZSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkUmeGl0IiwgSURNX0NQQU5FTF9FWElUCiAgICBFTkQKCiAgICBQT1BVUCAiJlZpZXciCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJJY29ub3MgJmdyYW5kZXMiLCBGQ0lETV9TSFZJRVdfQklHSUNPTgogICAgICAgIE1FTlVJVEVNICJJY29ub3MgJnBlcXVl8W9zIiwgRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgogICAgICAgIE1FTlVJVEVNICImTGlzdGEiLCBGQ0lETV9TSFZJRVdfTElTVFZJRVcKICAgICAgICBNRU5VSVRFTSAiJkRldGFsbGVzIiwgRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKICAgIEVORAoKICAgIFBPUFVQICImSGVscCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBYm91dCBDb250cm9sIFBhbmVsLi4uIiwgSURNX0NQQU5FTF9BQk9VVAogICAgRU5ECkVORAoKU0hCUlNGT1JGT0xERVJfTVNHQk9YIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDE1LCA0MCwgMTg4LCAxOTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VIHwgRFNfTU9EQUxGUkFNRSB8IERTX1NFVEZPTlQgfCBEU18zRExPT0sKQ0FQVElPTiAiRXhwbG9yYXIgY2FycGV0YSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJBY2VwdGFyIiwgMSwgODAsIDE3NiwgNTAsIDEyLCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJDYW5jZWxhciIsIDIsIDEzNCwgMTc2LCA1MCwgMTIsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogTFRFWFQgIiIsIElERF9USVRMRSwgNCwgNCwgMTgwLCAxMgogTFRFWFQgIiIsIElERF9TVEFUVVMsIDQsIDI1LCAxODAsIDEyCiBDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKIAlUVlNfSEFTQlVUVE9OUyB8IFRWU19IQVNMSU5FUyB8IFRWU19MSU5FU0FUUk9PVCB8CglXU19CT1JERVIgfCBXU19UQUJTVE9QLAoJNCwgNDAsIDE4MCwgMTIwCn0KClNITkVXQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIxOCwgMTk2ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IFdTX1NJWkVCT1ggfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICJFeHBsb3JhciBjYXJwZXRhIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIExURVhUICIiLCBJRERfVElUTEUsIDEwLCA4LCAxOTgsIDI0CiBMVEVYVCAiIiwgSUREX1NUQVRVUywgMTAsIDI1LCAxOTgsIDEyCiBMVEVYVCAiQ2FycGV0YToiLCBJRERfRk9MREVSLCAxMCwgMTU2LCA0MCwgMTIKIENPTlRST0wgIiIsIElERF9UUkVFVklFVywgIlN5c1RyZWVWaWV3MzIiLAogICAgICAgVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfAogICAgICAgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKICAgICAgIDEyLCAzOCwgMTk0LCAxMDUKIEVESVRURVhUIElERF9GT0xERVJURVhULCA0NiwgMTUwLCAxNjAsIDE0LCBXU19CT1JERVIgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZIYWNlciBudWV2YSBjYXJwZXRhIiwgSUREX01BS0VORVdGT0xERVIsIDEyLCAxNzQsIDcwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBERUZQVVNIQlVUVE9OICJBY2VwdGFyIiwgSURPSywgMTAyLCAxNzQsIDUwLCAxNCwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQ2FuY2VsYXIiLCBJRENBTkNFTCwgMTU2LCAxNzQsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KClNIRUxMX1lFU1RPQUxMX01TR0JPWCBESUFMT0cgMjAwLCAxMDAsIDI4MCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1lbnNhamUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgREVGUFVTSEJVVFRPTiAiJlPtIiwgSURZRVMsIDM0LCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gIlPtIGEgJnRvZG8iLCBJRERfWUVTVE9BTEwsIDkyLCA2OSwgNjUsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gIiZObyIsIElETk8sIDE2MiwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICImQ2FuY2VsYXIiLCBJRENBTkNFTCwgMjIwLCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIElDT04gIiIsIElERF9JQ09OLCAxMCwgMTAsIDE2LCAxNgogICAgTFRFWFQgIiIsIElERF9NRVNTQUdFLCA0MCwgMTAsIDIzOCwgNTIsIDAKfQoKU0hFTExfQUJPVVRfTVNHQk9YIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDE1LCA0MCwgMjIwLCAxNTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkFjZXJjYSBkZSAlcyIKRk9OVCAxMCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiQWNlcHRhciIsIElET0ssIDE1MywgMTMzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZMaWNlbmNpYSBkZSBXaW5lLi4uIiwgSURDX0FCT1VUX0xJQ0VOU0UsIDE1MywgMTEzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggSURDX0FCT1VUX0xJU1RCT1gsIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgc3RjMSwgMTAsIDEwLCAzMCwgMzAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQxLCA0MiwgMTAsIDE3MCwgMTAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQyLCA0MiwgMjIsIDE3MCwgMTAKIExURVhUICJFamVjdXThbmRvc2UgZW4gJXMiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQzLCA0MiwgMzQsIDE3MCwgMTAKIExURVhUICJXaW5lIGxlIGhhIHNpZG8gcHJvcG9yY2lvbmFkbyBwb3I6IiwgSURDX0FCT1VUX1dJTkVfVEVYVCwgOCwgNTQsIDIwNCwgMTAKfQoKU0hFTExfUlVOX0RMRyBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAwLCAwLCAyMjcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogSUNPTiAiIiwgMTIyOTcsIDcsIDExLCAxOCwgMjAsIFdTX1ZJU0lCTEUKIExURVhUICJJbnRyb2R1emNhIGVsIG5vbWJyZSBkZSB1biBwcm9ncmFtYSwgY2FycGV0YSwgZG9jdW1lbnRvIG8gcmVjdXJzbyBkZSBJbnRlcm5ldDsgeSBXaW5lIGxvIGFicmly4SBwYXJhIHVzdGVkLiIsIDEyMjg5LCAzNiwgMTEsIDE4MiwgMTgKIExURVhUICImQWJyaXI6IiwgMTIzMDUsIDcsIDM5LCAyNCwgMTAKIENPTlRST0wgIiIsIDEyMjk4LCAiQ09NQk9CT1giLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBXU19WU0NST0xMIHwgV1NfVklTSUJMRSB8IENCU19ESVNBQkxFTk9TQ1JPTEwgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfRFJPUERPV04sIDM2LCAzNywgMTgzLCAxMDAKIERFRlBVU0hCVVRUT04gIkFjZXB0YXIiLCBJRE9LLCA2MiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQ2FuY2VsYXIiLCBJRENBTkNFTCwgMTE2LCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImRXhhbWluYXIuLi4iLCAxMjI4OCwgMTcwLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCn0KClNUUklOR1RBQkxFCnsKICAgICAgICAvKiBjb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcgKi8KCUlEU19TSFZfQ09MVU1OMSAgICAgICAgICJBcmNoaXZvIgoJSURTX1NIVl9DT0xVTU4yICAgICAgICAgIlRhbWHxbyIKCUlEU19TSFZfQ09MVU1OMyAgICAgICAgICJUaXBvIgoJSURTX1NIVl9DT0xVTU40ICAgICAgICAgIk1vZGlmaWNhZG8iCglJRFNfU0hWX0NPTFVNTjUgICAgICAgICAiQXRyaWJ1dG9zIgoJSURTX1NIVl9DT0xVTU42ICAgICAgICAgIlRhbWHxbyIKCUlEU19TSFZfQ09MVU1ONyAgICAgICAgICJUYW1h8W8gZGlzcG9uaWJsZSIKCUlEU19TSFZfQ09MVU1OOCAgICAgICAgICJOb21icmUiCglJRFNfU0hWX0NPTFVNTjkgICAgICAgICAiQ29tZW50YXJpb3MiCglJRFNfU0hWX0NPTFVNTjEwICAgICAgICAiUHJvcGlldGFybyIKCUlEU19TSFZfQ09MVU1OMTEgICAgICAgICJHcnVwbyIKCUlEU19TSFZfQ09MVU1OX0RFTEZST00gICJMdWdhciBvcmlnaW5hbCIKCUlEU19TSFZfQ09MVU1OX0RFTERBVEUgICJGZWNoYSBkZSBib3JyYWRvIgoKICAgICAgICAvKiBzcGVjaWFsIGZvbGRlcnMgKi8KCUlEU19ERVNLVE9QCQkiRXNjcml0b3JpbyIKCUlEU19NWUNPTVBVVEVSCQkiTWkgUEMiCiAgICAgICAgSURTX1JFQ1lDTEVCSU5fRk9MREVSX05BTUUgIlBhcGVsZXJhIGRlIHJlY2ljbGFqZSIKCUlEU19DT05UUk9MUEFORUwJIkNvbnRyb2wgUGFuZWwiCgogICAgICAgIC8qIGNvbnRleHQgbWVudXMgKi8KCUlEU19WSUVXX0xBUkdFCQkiSWNvbm9zICZncmFuZGVzIgoJSURTX1ZJRVdfU01BTEwJCSJJY29ub3MgJnBlcXVl8W9zIgoJSURTX1ZJRVdfTElTVAkJIiZMaXN0YSIKCUlEU19WSUVXX0RFVEFJTFMJIiZEZXRhbGxlcyIKCUlEU19TRUxFQ1QJCSJTZWxlY2Npb25hciIKCUlEU19PUEVOCQkiQWJyaXIiCgoJSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIk5vIHNlIHB1ZWRlIGNyZWFyIG51ZXZhIGNhcnBldGE6IFBlcm1pc28gZGVuZWdhZG8uIgoJSURTX0NSRUFURUZPTERFUl9DQVBUSU9OICJFcnJvciBkdXJhbnRlIGxhIGNyZWFjafNuIGRlIHVuYSBudWV2YSBjYXJwZXRhIgoJSURTX0RFTEVURUlURU1fQ0FQVElPTiAiQ29uZmlybWFyIGVsaW1pbmFjafNuIGRlIGFyY2hpdm8iCglJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIkNvbmZpcm1hciBlbGltaW5hY2nzbiBkZSBjYXJwZXRhIgoJSURTX0RFTEVURUlURU1fVEVYVCAiv1NlZ3VybyBxdWUgZGVzZWEgZWxpbWluYXIgJyUxJz8iCglJRFNfREVMRVRFTVVMVElQTEVfVEVYVCAiv1NlZ3VybyBxdWUgZGVzZWEgZWxpbWluYXIgZXN0b3MgJTEgZWxlbWVudG9zPyIKCUlEU19ERUxFVEVTRUxFQ1RFRF9URVhUICK/U2VndXJvIHF1ZSBkZXNlYSBlbGltaW5hciBlbCAobG9zKSBlbGVtZW50byhzKSBzZWxlY2Npb25hZG8ocyk/IgoJSURTX1RSQVNISVRFTV9URVhUICK/U2VndXJvIHF1ZSBkZXNlYSBlbnZpYXIgJyUxJyBhIGxhIHBhcGVsZXJhIGRlIHJlY2ljbGFqZT8iCglJRFNfVFJBU0hGT0xERVJfVEVYVCAiv1NlZ3VybyBxdWUgZGVzZWEgZW52aWFyICclMScgeSB0b2RvIHN1IGNvbnRlbmlkbyBhIGxhIHBhcGVsZXJhIGRlIHJlY2ljbGFqZT8iCglJRFNfVFJBU0hNVUxUSVBMRV9URVhUICK/U2VndXJvIHF1ZSBkZXNlYSBlbnZpYXIgZXN0b3MgJTEgZWxlbWVudG9zIGEgbGEgcGFwZWxlcmEgZGUgcmVjaWNsYWplPyIKCUlEU19DQU5UVFJBU0hfVEVYVCAiRWwgZWxlbWVudG8gJyUxJyBubyBwdWVkZSBlbnZpYXJzZSBhIGxhIHBhcGVsZXJhIGRlIHJlY2ljbGFqZS4gv0Rlc2VhIGVsaW1pbmFybG8gZW4gc3UgbHVnYXI/IgoJSURTX09WRVJXUklURUZJTEVfVEVYVCAiRXN0YSBjYXJwZXRhIHlhIGNvbnRpZW5lIHVuIGFyY2hpdm8gbGxhbWFkbyAnJTEnLlxuXG6/RGVzZWEgcmVlbXBsYXphcmxvPyIKCUlEU19PVkVSV1JJVEVGSUxFX0NBUFRJT04gIkNvbmZpcm1hciBzb2JyZWVzY3JpdHVyYSBkZSBhcmNoaXZvIgoJSURTX09WRVJXUklURUZPTERFUl9URVhUICJFc3RhIGNhcnBldGEgeWEgY29udGllbmUgdW5hIGNhcnBldGEgbGxhbWFkYSAnJTEnLlxuXG4iXAoJICAgICJTaSBsb3MgYXJjaGl2b3MgZGUgbGEgY2FycGV0YSBkZSBkZXN0aW5vIHRpZW5lbiBsb3MgbWlzbW9zIG5vbWJyZXMgcXVlIGxvc1xuIlwKCSAgICAiZGUgbGEgY2FycGV0YSBzZWxlY2Npb25hZGEsIOlzdG9zIHNlcuFuIHJlZW1wbGF6YWRvcy4gv1RvZGF27WEgZGVzZWEgbW92ZXJcbiJcCgkgICAgIm8gY29waWFyIGxhIGNhcnBldGE/IgoKICAgICAgICAvKiBtZXNzYWdlIGJveCBzdHJpbmdzICovCiAgICAgICAgSURTX1JFU1RBUlRfVElUTEUJIlJlaW5pY2lhciIKICAgICAgICBJRFNfUkVTVEFSVF9QUk9NUFQJIr9EZXNlYSBzaW11bGFyIHVuIHJlaW5pY2lvIGRlIFdpbmRvd3M/IgogICAgICAgIElEU19TSFVURE9XTl9USVRMRQkiQXBhZ2FyIgogICAgICAgIElEU19TSFVURE9XTl9QUk9NUFQJIr9EZXNlYSB0ZXJtaW5hciBzdSBzZXNp824gZGUgV2luZT8iCgogICAgICAgIC8qIHNoZWxsIGZvbGRlciBwYXRoIGRlZmF1bHQgdmFsdWVzICovCglJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIk1lbvogSW5pY2lvXFxQcm9ncmFtYXMiCglJRFNfUEVSU09OQUwgICAgICAgICAgICAgICAgIk1pcyBkb2N1bWVudG9zIgoJSURTX0ZBVk9SSVRFUyAgICAgICAgICAgICAgICJGYXZvcml0b3MiCglJRFNfU1RBUlRVUCAgICAgICAgICAgICAgICAgIk1lbvogSW5pY2lvXFxQcm9ncmFtYXNcXEluaWNpbyIKCUlEU19SRUNFTlQgICAgICAgICAgICAgICAgICAiUmVjaWVudGVzIgoJSURTX1NFTkRUTyAgICAgICAgICAgICAgICAgICJFbnZpYXIgYSIKCUlEU19TVEFSVE1FTlUgICAgICAgICAgICAgICAiTWVu+iBJbmljaW8iCglJRFNfTVlNVVNJQyAgICAgICAgICAgICAgICAgIk1pIG36c2ljYSIKCUlEU19NWVZJREVPICAgICAgICAgICAgICAgICAiTWlzIHbtZGVvcyIKCUlEU19ERVNLVE9QRElSRUNUT1JZICAgICAgICAiRXNjcml0b3JpbyIKCUlEU19ORVRIT09EICAgICAgICAgICAgICAgICAiRW50b3JubyBkZSByZWQiCglJRFNfVEVNUExBVEVTICAgICAgICAgICAgICAgIlBsYW50aWxsYXMiCglJRFNfQVBQREFUQSAgICAgICAgICAgICAgICAgIkRhdG9zIGRlIHByb2dyYW1hIgoJSURTX1BSSU5USE9PRCAgICAgICAgICAgICAgICJWZWNpbmRhcmlvIGRlIGltcHJlc2nzbiIKCUlEU19MT0NBTF9BUFBEQVRBICAgICAgICAgICAiQ29uZmlndXJhY2nzbiBsb2NhbFxcRGF0b3MgZGUgcHJvZ3JhbWEiCglJRFNfSU5URVJORVRfQ0FDSEUgICAgICAgICAgIkNvbmZpZ3VyYWNp824gbG9jYWxcXEFyY2hpdm9zIHRlbXBvcmFsZXMgZGUgSW50ZXJuZXQiCglJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkNvb2tpZXMiCglJRFNfSElTVE9SWSAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYWNp824gbG9jYWxcXEhpc3RvcmlhbCIKCUlEU19QUk9HUkFNX0ZJTEVTICAgICAgICAgICAiQXJjaGl2b3MgZGUgcHJvZ3JhbWEiCglJRFNfTVlQSUNUVVJFUyAgICAgICAgICAgICAgIk1pcyBpbeFnZW5lcyIKCUlEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTiAgICAiQXJjaGl2b3MgZGUgcHJvZ3JhbWFcXEFyY2hpdm9zIGNvbXVuZXMiCglJRFNfQ09NTU9OX0RPQ1VNRU5UUyAgICAgICAgIkRvY3VtZW50b3MiCglJRFNfQURNSU5UT09MUyAgICAgICAgICAgICAgIk1lbvogSW5pY2lvXFxQcm9ncmFtYXNcXEFjY2Vzb3Jpb3NcXEhlcnJhbWllbnRhcyBkZWwgc2lzdGVtYSIKCUlEU19DT01NT05fTVVTSUMgICAgICAgICAgICAiRG9jdW1lbnRvc1xcTWkgbfpzaWNhIgoJSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICJEb2N1bWVudG9zXFxNaXMgaW3hZ2VuZXMiCglJRFNfQ09NTU9OX1ZJREVPICAgICAgICAgICAgIkRvY3VtZW50b3NcXE1pcyB27WRlb3MiCglJRFNfQ0RCVVJOX0FSRUEgICAgICAgICAgICAgIkNvbmZpZ3VyYWNp824gbG9jYWxcXERhdG9zIGRlIHByb2dyYW1hXFxNaWNyb3NvZnRcXENEIEJ1cm5pbmciCgoJSURTX05FV0ZPTERFUgkJIk51ZXZhIGNhcnBldGEiCgoJSURTX0NQQU5FTF9USVRMRSAgICAgICAgICAgICJXaW5lIENvbnRyb2wgUGFuZWwiCglJRFNfQ1BBTkVMX05BTUUgICAgICAgICAgICAgIk5hbWUiCglJRFNfQ1BBTkVMX0RFU0NSSVBUSU9OICAgICAgIkRlc2NyaXB0aW9uIgp9CgpTVFJJTkdUQUJMRQp7CklEU19MSUNFTlNFX0NBUFRJT04sICAgICAgICAgICAgIkxpY2VuY2lhIGRlIFdpbmUiCklEU19MSUNFTlNFLAoiV2luZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgXAptb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIFwKdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cblwKV2luZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBcCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIFwKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgXApMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG5cCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIGFsb25nIHdpdGggV2luZTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBcCkZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuIgp9Cg==