LyoKICogQ29weXJpZ2h0IDIwMDUtMjAwOCBBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19OT1JXRUdJQU4sIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTAoKTUVOVV8wMDEgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJTUVOVUlURU0gIiZTdG9yZSBpa29uZXIiLAlGQ0lETV9TSFZJRVdfQklHSUNPTgoJTUVOVUlURU0gIiZTbeUgaWtvbmVyIiwJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJTUVOVUlURU0gIiZMaXN0ZSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKCU1FTlVJVEVNICImRGV0YWxqZXIiLAkJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKRU5ECgovKgogc2hlbGx2aWV3IGJhY2tncm91bmQgbWVudQoqLwpNRU5VXzAwMiBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCglQT1BVUCAiIgoJQkVHSU4KCSAgUE9QVVAgIiZWaXMiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIiZTdG9yZSBpa29uZXIiLAlGQ0lETV9TSFZJRVdfQklHSUNPTgoJICAgIE1FTlVJVEVNICJTJm3lIGlrb25lciIsCUZDSURNX1NIVklFV19TTUFMTElDT04KCSAgICBNRU5VSVRFTSAiJkxpc3RlIiwJCUZDSURNX1NIVklFV19MSVNUVklFVwoJICAgIE1FTlVJVEVNICImRGV0YWxqZXIiLAlGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwoJICBFTkQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIFBPUFVQICJPcmRuZSAmaWtvbmVyIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICJFdHRlciAmbmF2biIsCTB4MzAJLyogY29sdW1uIDAgKi8KCSAgICBNRU5VSVRFTSAiRXR0ZXIgJnR5cGUiLAkweDMyCS8qIGNvbHVtbiAyICovCgkgICAgTUVOVUlURU0gIkV0dGVyICZzdPhycmVsc2UiLAkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICJFdHRlciAmZGF0byIsCTB4MzMKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgICBNRU5VSVRFTSAiT3JkbmUgJmF1dG9tYXRpc2siLAlGQ0lETV9TSFZJRVdfQVVUT0FSUkFOR0UKCSAgRU5ECgkgIE1FTlVJVEVNICJTdGlsbCBvcHAgaWtvbmVyIiwJRkNJRE1fU0hWSUVXX1NOQVBUT0dSSUQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJPcHBkYXRlciIsCQlGQ0lETV9TSFZJRVdfUkVGUkVTSAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkxpbSBpbm4iLAkJRkNJRE1fU0hWSUVXX0lOU0VSVAoJICBNRU5VSVRFTSAiTGltIGlubiBzb20gc25hcnZlaSIsCUZDSURNX1NIVklFV19JTlNFUlRMSU5LCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTnkiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIk55ICZtYXBwZSIsCUZDSURNX1NIVklFV19ORVdGT0xERVIKCSAgICBNRU5VSVRFTSAiTnkgJnNuYXJ2ZWkiLAlGQ0lETV9TSFZJRVdfTkVXTElOSwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBFTkQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJFZ2Vuc2thcGVyIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCi8qCiBzaGVsbHZpZXcgaXRlbSBtZW51CiovCk1FTlVfU0hWX0ZJTEUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIE1FTlVJVEVNICImVmVsZyIJCUZDSURNX1NIVklFV19PUEVOCgkgIE1FTlVJVEVNICImVXRmb3JzayIsCQlGQ0lETV9TSFZJRVdfRVhQTE9SRQoJICBNRU5VSVRFTSAiJsVwbmUiLAkJRkNJRE1fU0hWSUVXX09QRU4KCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJLbGlwcCAmdXQiLAkJRkNJRE1fU0hWSUVXX0NVVAoJICBNRU5VSVRFTSAiJktvcGllciIsCQlGQ0lETV9TSFZJRVdfQ09QWQoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIiZPcHByZXR0IHNuYXJ2ZWkiLAlGQ0lETV9TSFZJRVdfQ1JFQVRFTElOSwoJICBNRU5VSVRFTSAiJlNsZXR0IiwJCUZDSURNX1NIVklFV19ERUxFVEUKCSAgTUVOVUlURU0gIiZHaSBueXR0IG5hdm4iCUZDSURNX1NIVklFV19SRU5BTUUKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJFZ2Vuc2thJnBlciIsCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgpNRU5VX0NQQU5FTCBNRU5VCkJFR0lOCiAgICBQT1BVUCAiJkZpbCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBdnNsdXR0IiwgSURNX0NQQU5FTF9FWElUCiAgICBFTkQKCiAgICBQT1BVUCAiJlZpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTdG9yZSBpa29uZXIiLCBGQ0lETV9TSFZJRVdfQklHSUNPTgogICAgICAgIE1FTlVJVEVNICImU23lIGlrb25lciIsIEZDSURNX1NIVklFV19TTUFMTElDT04KICAgICAgICBNRU5VSVRFTSAiJkxpc3RlIiwgRkNJRE1fU0hWSUVXX0xJU1RWSUVXCiAgICAgICAgTUVOVUlURU0gIiZEZXRhbGplciIsIEZDSURNX1NIVklFV19SRVBPUlRWSUVXCiAgICBFTkQKCiAgICBQT1BVUCAiJkhqZWxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk9tIEtvbnRyb2xscGFuZWwuLi4iLCBJRE1fQ1BBTkVMX0FCT1VUCiAgICBFTkQKRU5ECgpTSEJSU0ZPUkZPTERFUl9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAxODgsIDE5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUgfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICJCbGEgZXR0ZXIgbWFwcGUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiT0siLCAxLCA4MCwgMTc2LCA1MCwgMTIsIEJTX0RFRlBVU0hCVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIkF2YnJ5dCIsIDIsIDEzNCwgMTc2LCA1MCwgMTIsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogTFRFWFQgIiIsIElERF9USVRMRSwgNCwgNCwgMTgwLCAxMgogTFRFWFQgIiIsIElERF9TVEFUVVMsIDQsIDI1LCAxODAsIDEyCiBDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKIAlUVlNfSEFTQlVUVE9OUyB8IFRWU19IQVNMSU5FUyB8IFRWU19MSU5FU0FUUk9PVCB8CglXU19CT1JERVIgfCBXU19UQUJTVE9QLAoJNCwgNDAsIDE4MCwgMTIwCn0KClNITkVXQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIxOCwgMTk2ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IFdTX1NJWkVCT1ggfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICJCbGEgZXR0ZXIgbWFwcGUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogTFRFWFQgIiIsIElERF9USVRMRSwgMTAsIDgsIDE5OCwgMjQKIExURVhUICIiLCBJRERfU1RBVFVTLCAxMCwgMjUsIDE5OCwgMTIKIExURVhUICJNYXBwZToiLCBJRERfRk9MREVSLCAxMCwgMTU2LCA0MCwgMTIKIENPTlRST0wgIiIsIElERF9UUkVFVklFVywgIlN5c1RyZWVWaWV3MzIiLAoJVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfAoJV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKCTEyLCAzOCwgMTk0LCAxMDUKIEVESVRURVhUIElERF9GT0xERVJURVhULCA0NiwgMTUwLCAxNjAsIDE0LCBXU19CT1JERVIgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIk55ICZtYXBwZSIsIElERF9NQUtFTkVXRk9MREVSLCAxMiwgMTc0LCA3MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCAxMDIsIDE3NCwgNTAsIDE0LCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJBdmJyeXQiLCBJRENBTkNFTCwgMTU2LCAxNzQsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KClNIRUxMX1lFU1RPQUxMX01TR0JPWCBESUFMT0cgMjAwLCAxMDAsIDI4MCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1lbGRpbmdzIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIERFRlBVU0hCVVRUT04gIiZKYSIsIElEWUVTLCAzNCwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICJKYSB0aWwgJmFsdCIsIElERF9ZRVNUT0FMTCwgOTIsIDY5LCA2NSwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiJk5laSIsIElETk8sIDE2MiwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICImQXZicnkmdCIsIElEQ0FOQ0VMLCAyMjAsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgSUNPTiAiIiwgSUREX0lDT04sIDEwLCAxMCwgMTYsIDE2CiAgICBMVEVYVCAiIiwgSUREX01FU1NBR0UsIDQwLCAxMCwgMjM4LCA1MiwgMAp9CgpTSEVMTF9BQk9VVF9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAyMjAsIDE1MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiT20gJXMiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgMTUzLCAxMzMsIDYwLCAxMiwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiTGlzZW5zLi4uIiwgSURDX0FCT1VUX0xJQ0VOU0UsIDE1MywgMTEzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggSURDX0FCT1VUX0xJU1RCT1gsIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgc3RjMSwgMTAsIDEwLCAzMCwgMzAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQxLCA0MiwgMTAsIDE3MCwgMTAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQyLCA0MiwgMjIsIDE3MCwgMTAKIExURVhUICJLavhyZXIgcOUgJXMiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQzLCA0MiwgMzQsIDE3MCwgMTAKIExURVhUICJXaW5lIGVyIGxhZ2V0IGF2IiwgSURDX0FCT1VUX1dJTkVfVEVYVCwgOCwgNTQsIDIwNCwgMTAKfQoKU0hFTExfUlVOX0RMRyBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAwLCAwLCAyMjcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogSUNPTiAiIiwgMTIyOTcsIDcsIDExLCAxOCwgMjAsIFdTX1ZJU0lCTEUKIExURVhUICJTa3JpdiBpbm4gbmF2bmV0IHDlIHByb2dyYW1tZXQsIG1hcHBlbiwgZG9rdW1lbnRldCBldHRlciBJbnRlcm5ldHQtcmVzc3Vyc2VuIGR1IPhuc2tlciDlIOVwbmUuIiwgMTIyODksIDM2LCAxMSwgMTgyLCAxOAogTFRFWFQgIibFcG5lOiIsIDEyMzA1LCA3LCAzOSwgMjQsIDEwCiBDT05UUk9MICIiLCAxMjI5OCwgIkNPTUJPQk9YIiwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgV1NfVlNDUk9MTCB8IFdTX1ZJU0lCTEUgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX0RST1BET1dOLCAzNiwgMzcsIDE4MywgMTAwCiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDYyLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJBdmJyeXQiLCBJRENBTkNFTCwgMTE2LCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImQmxhLi4uIiwgMTIyODgsIDE3MCwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAp9CgpTVFJJTkdUQUJMRQp7CiAgICAgICAgLyogY29sdW1ucyBpbiB0aGUgc2hlbGx2aWV3ICovCglJRFNfU0hWX0NPTFVNTjEJCSJGaWwiCglJRFNfU0hWX0NPTFVNTjIJCSJTdPhycmVsc2UiCglJRFNfU0hWX0NPTFVNTjMJCSJUeXBlIgoJSURTX1NIVl9DT0xVTU40CQkiRW5kcmV0IgoJSURTX1NIVl9DT0xVTU41CQkiRWdlbnNrYXBlciIKCUlEU19TSFZfQ09MVU1ONgkJIlN0+HJyZWxzZSIKCUlEU19TSFZfQ09MVU1ONwkJIkxlZGlnIHBsYXNzIgoJSURTX1NIVl9DT0xVTU44CQkiTmF2biIKCUlEU19TSFZfQ09MVU1OOQkJIktvbW1lbnRhcmVyIgoJSURTX1NIVl9DT0xVTU4xMAkiRWllciIKCUlEU19TSFZfQ09MVU1OMTEJIkdydXBwZSIKCUlEU19TSFZfQ09MVU1OX0RFTEZST00JIk9wcHJpbm5lbGlnIHBsYXNzZXJpbmciCglJRFNfU0hWX0NPTFVNTl9ERUxEQVRFCSJEYXRvIHNsZXR0ZXQiCgogICAgICAgIC8qIHNwZWNpYWwgZm9sZGVycyAqLwoJSURTX0RFU0tUT1AJCSJTa3JpdmVib3JkIgoJSURTX01ZQ09NUFVURVIJCSJNaW4gZGF0YW1hc2tpbiIKCUlEU19SRUNZQ0xFQklOX0ZPTERFUl9OQU1FICAgICAgIlBhcGlya3VydiIKCUlEU19DT05UUk9MUEFORUwJIkNvbnRyb2wgUGFuZWwiCgogICAgICAgIC8qIGNvbnRleHQgbWVudXMgKi8KCUlEU19WSUVXX0xBUkdFCQkiJlN0b3JlIGlrb25lciIKCUlEU19WSUVXX1NNQUxMCQkiUyZt5SBpa29uZXIiCglJRFNfVklFV19MSVNUCQkiJkxpc3RlIgoJSURTX1ZJRVdfREVUQUlMUwkiJkRldGFsamVyIgoJSURTX1NFTEVDVAkJIlZlbGciCglJRFNfT1BFTgkJIsVwbmUiCgoJSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIkt1bm5lIGlra2Ugb3BwcmV0dGUgbnkgbWFwcGU6IHRpbGdhbmcgbmVrdGV0LiIKCUlEU19DUkVBVEVGT0xERVJfQ0FQVElPTiAiS2xhcnRlIGlra2Ugb3BwcmV0dGUgbnkgbWFwcGUiCglJRFNfREVMRVRFSVRFTV9DQVBUSU9OICJCZWtyZWZ0IGZpbHNsZXR0aW5nIgoJSURTX0RFTEVURUZPTERFUl9DQVBUSU9OICJCZWtyZWZ0IHNsZXR0aW5nIGF2IG1hcHBlIgoJSURTX0RFTEVURUlURU1fVEVYVCAiVmlya2VsaWcgc2xldHRlIKslMbs/IgoJSURTX0RFTEVURU1VTFRJUExFX1RFWFQgIlZpcmtlbGlnIHNsZXR0ZSBkaXNzZSAlMSBlbGVtZW50ZW5lPyIKCUlEU19ERUxFVEVTRUxFQ1RFRF9URVhUICJWaXJrZWxpZyBzbGV0dGUgdmFsZ3RlIGVsZW1lbnQoZXIpPz8iCglJRFNfVFJBU0hJVEVNX1RFWFQgIlZpcmtlbGlnIGxlZ2dlIKslMbsgaSBwYXBpcmt1cnZlbj8iCglJRFNfVFJBU0hGT0xERVJfVEVYVCAiVmlya2VsaWcgbGVnZ2UgqyUxuyBvZyBhbHQgaW5uaG9sZGV0IGkgcGFwaXJrdXJ2ZW4/IgoJSURTX1RSQVNITVVMVElQTEVfVEVYVCAiVmlya2VsaWcgbGVnZ2UgZGlzc2UgJTEgdmFsZ3RlIGVsZW1lbnRlbmUgaSBwYXBpcmt1cnZlbj8iCglJRFNfQ0FOVFRSQVNIX1RFWFQgIkVsZW1lbnRldCCrJTG7IGthbiBpa2tlIGxlZ2dlcyBpIHBhcGlya3VydmVuLiBWaWwgZHUgc2xldHRlIGRldCBpIHN0ZWRldD8iCglJRFNfT1ZFUldSSVRFRklMRV9URVhUICJUaGlzIGZvbGRlciBhbHJlYWR5IGNvbnRhaW5zIGEgZmlsZSBjYWxsZWQgJyUxJy5cblxuRG8geW91IHdhbnQgdG8gcmVwbGFjZSBpdD8iCglJRFNfT1ZFUldSSVRFRklMRV9DQVBUSU9OICJCZWtyZWZ0IG92ZXJza3JpdmluZyBhdiBmaWwiCglJRFNfT1ZFUldSSVRFRk9MREVSX1RFWFQgIlRoaXMgZm9sZGVyIGFscmVhZHkgY29udGFpbnMgYSBmb2xkZXIgbmFtZWQgJyUxJy5cblxuIlwKCSAgICAiSWYgdGhlIGZpbGVzIGluIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXIgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyBmaWxlcyBpbiB0aGVcbiJcCgkgICAgInNlbGVjdGVkIGZvbGRlciB0aGV5IHdpbGwgYmUgcmVwbGFjZWQuIERvIHlvdSBzdGlsbCB3YW50IHRvIG1vdmUgb3IgY29weVxuIlwKCSAgICAidGhlIGZvbGRlcj8iCgogICAgICAgIC8qIG1lc3NhZ2UgYm94IHN0cmluZ3MgKi8KICAgICAgICBJRFNfUkVTVEFSVF9USVRMRSAgICAgICAiU3RhcnRlIHDlIG55dHQiCiAgICAgICAgSURTX1JFU1RBUlRfUFJPTVBUICAgICAgIlZpbCBkdSBzaW11bGVyZSBlbiBvbXN0YXJ0IGF2IFdpbmRvd3M/IgogICAgICAgIElEU19TSFVURE9XTl9USVRMRSAgICAgICJBdnNsdXR0IgogICAgICAgIElEU19TSFVURE9XTl9QUk9NUFQgICAgICJWaWwgZHUgYXZzbHV0dGUgV2luZS34a3Rlbj8iCgogICAgICAgIC8qIFJ1biBGaWxlIGRpYWxvZyAqLwogICAgICAgIElEU19SVU5ETEdfRVJST1IgICAgICAgICAgICJLbGFydGUgaWtrZSB2aXNlIEtq+HItdmluZHVldCAoaW50ZXJuIGZlaWwpIgogICAgICAgIElEU19SVU5ETEdfQlJPV1NFX0VSUk9SICAgICJLbGFydGUgaWtrZSB2aXNlIEJsYS12aW5kdWV0IChpbnRlcm4gZmVpbCkiCiAgICAgICAgSURTX1JVTkRMR19CUk9XU0VfQ0FQVElPTiAgIkJsYSIKICAgICAgICBJRFNfUlVORExHX0JST1dTRV9GSUxURVIgICAiUHJvZ3JhbWZpbGVyXDAqLmV4ZVwwQWxsZSBmaWxlclwwKi4qXDBcMCIKCiAgICAgICAgLyogc2hlbGwgZm9sZGVyIHBhdGggZGVmYXVsdCB2YWx1ZXMgKi8KCUlEU19QUk9HUkFNUyAgICAgICAgICAgICAgICAiU3RhcnQtbWVueVxcUHJvZ3JhbW1lciIKCUlEU19QRVJTT05BTCAgICAgICAgICAgICAgICAiTWluZSBkb2t1bWVudGVyIgoJSURTX0ZBVk9SSVRFUyAgICAgICAgICAgICAgICJGYXZvcml0dGVyIgoJSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICJTdGFydC1tZW55XFxQcm9ncmFtbWVyXFxPcHBzdGFydCIKCUlEU19SRUNFTlQgICAgICAgICAgICAgICAgICAiU2lzdGUiCglJRFNfU0VORFRPICAgICAgICAgICAgICAgICAgIlNlbmRUbyIKCUlEU19TVEFSVE1FTlUgICAgICAgICAgICAgICAiU3RhcnQtbWVueSIKCUlEU19NWU1VU0lDICAgICAgICAgICAgICAgICAiTWluIG11c2lrayIKCUlEU19NWVZJREVPICAgICAgICAgICAgICAgICAiTWluZSB2aWRlb2tsaXBwIgoJSURTX0RFU0tUT1BESVJFQ1RPUlkgICAgICAgICJTa3JpdmVib3JkIgoJSURTX05FVEhPT0QgICAgICAgICAgICAgICAgICJOZXRIb29kIgoJSURTX1RFTVBMQVRFUyAgICAgICAgICAgICAgICJNYWxlciIKCUlEU19BUFBEQVRBICAgICAgICAgICAgICAgICAiUHJvZ3JhbWRhdGEiCglJRFNfUFJJTlRIT09EICAgICAgICAgICAgICAgIlNrcml2ZXJlIgoJSURTX0xPQ0FMX0FQUERBVEEgICAgICAgICAgICJMb2thbGUgaW5uc3RpbGxpbmdlclxcUHJvZ3JhbWRhdGEiCglJRFNfSU5URVJORVRfQ0FDSEUgICAgICAgICAgIkxva2FsZSBpbm5zdGlsbGluZ2VyXFxUZW1wb3JhcnkgSW50ZXJuZXQgRmlsZXMiCglJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkNvb2tpZXMiCglJRFNfSElTVE9SWSAgICAgICAgICAgICAgICAgIkxva2FsZSBpbm5zdGlsbGluZ2VyXFxMb2dnIgoJSURTX1BST0dSQU1fRklMRVMgICAgICAgICAgICJQcm9ncmFtZmlsZXIiCglJRFNfTVlQSUNUVVJFUyAgICAgICAgICAgICAgIk1pbmUgYmlsZGVyIgoJSURTX1BST0dSQU1fRklMRVNfQ09NTU9OICAgICJQcm9ncmFtZmlsZXJcXEZlbGxlc2ZpbGVyIgoJSURTX0NPTU1PTl9ET0NVTUVOVFMgICAgICAgICJEb2t1bWVudGVyIgoJSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJTdGFydC1tZW55XFxQcm9ncmFtbWVyXFxBZG1pbmlzdHJhdGl2ZSB2ZXJrdPh5IgoJSURTX0NPTU1PTl9NVVNJQyAgICAgICAgICAgICJEb2t1bWVudGVyXFxNaW4gbXVzaWtrIgoJSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICJEb2t1bWVudGVyXFxNaW5lIGJpbGRlciIKCUlEU19DT01NT05fVklERU8gICAgICAgICAgICAiRG9rdW1lbnRlclxcTWluZSB2aWRlb2tsaXBwIgoJSURTX0NEQlVSTl9BUkVBICAgICAgICAgICAgICJMb2thbGUgaW5uc3RpbGxpbmdlclxcUHJvZ3JhbWRhdGFcXE1pY3Jvc29mdFxcQ0QgQnVybmluZyIKCglJRFNfTkVXRk9MREVSCQkiTnkgbWFwcGUiCgoJSURTX0NQQU5FTF9USVRMRSAgICAgICAgICAgICJXaW5lIEtvbnRyb2xscGFuZWwiCglJRFNfQ1BBTkVMX05BTUUgICAgICAgICAgICAgIk5hdm4iCglJRFNfQ1BBTkVMX0RFU0NSSVBUSU9OICAgICAgIkJlc2tyaXZlbHNlIgp9CgpTVFJJTkdUQUJMRQp7CklEU19MSUNFTlNFX0NBUFRJT04sICAgICAgICAgICAgIkxpc2Vuc2JldGluZ2Vsc2VyIgpJRFNfTElDRU5TRSwKIldpbmUgZXIgZnJpIHByb2dyYW12YXJlOyBkdSBrYW4gZGlzdHJpYnVlcmUgZGV0IG9nL2VsbGVyIFwKZW5kcmUgZGV0IGkgaGVuaG9sZCB0aWwgdmlsa+VyZW5lIGkgq0dOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNluywgdXRnaXR0IGF2IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVudGVuIFwKdmVyc2pvbiAyLjEgYXYgTGlzZW5zZW4sIGVsbGVyIChodmlzIGR1IPhuc2tlciBkZXQpIGVuIG55ZXJlIHZlcnNqb24uXG5cblwKV2luZSB1dGdpcyBpIGjlcCBvbSBhdCBkZXQgZXIgbnl0dGlnLCBcCm1lbiBVVEVOIEVOSFZFUiBHQVJBTlRJOyB1dGVuIGVuZ2FuZyBkZW4gYW50eWRlZGUgZ2FyYW50aWVuIG9tIFwKSEFOREVMU0VHTkVUSEVUIGVsbGVyIEVHTkVUSEVUIEZPUiBFVCBTUEVTSUVMVCBGT1JNxUwuICBTZSCrR05VIFwKTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2W7IGZvciBmbGVyZSBkZXRhbGplci5cblxuXApEdSBza2FsIGhhIG1vdHRhdHQgZXQgZWtzZW1wbGFyIGF2IKtHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZbsgc2FtbWVuIG1lZCBkZXR0ZSBwcm9ncmFtbWV0OyBodmlzIGlra2UsIHNrcml2IHRpbDogdGhlIEZyZWUgU29mdHdhcmUgXApGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiIKfQo=