LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMyBWaW5jZW50IELpcm9uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKCi8qCiAqIE1lbnUKICovCgpJRENfUkVHRURJVCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJkZpY2hpZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImUXVpdHRlciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImQWlkZSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBIHByb3Bvcy4uLiIsICAgICAgICAgICAgICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdHJlcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRlciB1biBmaWNoaWVyIGRlIHJlZ2lzdHJlcy4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRXhwb3J0ZXIgdW4gZmljaGllciBkZSByZWdpc3RyZXMuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbm5lY3RlciDgIGRlcyByZWdpc3RyZXMgdmlhIGxlIHLpc2VhdS4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImROljb25uZWN0ZXIgZGUgcmVnaXN0cmVzIHLpc2VhdS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJJbSZwcmltZXJcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZRdWl0dGVyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZFZGl0aW9uIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk1vZGlmaWVyIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTm91dmVsbGUiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDbOkiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciBjJmhh7m5lIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyICZiaW5haXJlIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyICZtb3QgZG91YmxlIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3VwcHJpbWVyXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICJSZW4mb21tZXJcdEYyIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWVyIGxlIG5vbSBkZSBsYSBjbOkiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUmVjaGVyY2hlclx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJTdWkmdmFudFx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImQWZmaWNoYWdlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkJhcnJlIGQn6XRhdCIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU+lwYXJhdGV1ciIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlJhZnJh7mNoaXJcdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBam91dGVyIGF1eCBGYXZvcmlzIiwgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJlJldGlyZXIgZGVzIEZhdm9yaXMiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICAgICAgLCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBaWRlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlN1amV0cyBkZSBsJ2FpZGUiLCAgICAgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkEgcHJvcG9zIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZNb2RpZmllciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmllciBkb25u6WVzIGJpbmFpcmVzIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImU3VwcHJpbWVyXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIlJlbiZvbW1lciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOb3V2ZWxsZSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkNs6SIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyIGMmaGHubmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJmJpbmFpcmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJm1vdCBkb3VibGUiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTdXBwcmltZXJcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlbiZvbW1lclx0RjIiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpZXIgbGUgbm9tIGRlIGxhIGNs6SIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZSZWNoZXJjaGVyXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLAIHByb3BvcyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVnZWRpdCBSZWFjdE9TIFZlcnNpb24gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBwYXIgbCfpcXVpcGUgZGUgUmVhY3RPUyIsSURDX1NUQVRJQyw0OSwyMCwxMTksOAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTUsNiwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiyWRpdGV6IGMmaGHubmUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tIGRlIHZhbGV1cjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEb25u6WVzIGRlIHZhbGV1cjoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIslkaXRleiBEV09SRCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb20gZGUgdmFsZXVyOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRvbm7pZXMgZGUgdmFsZXVyOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc3NlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWTpY2ltYWxlIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkTpY2ltYWxlIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5vbSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUeXBlIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIlZhbGV1ciIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIslkaXRldXIgZGUgcmVnaXN0cmVzIgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciB0cmF2YWlsbGVyIHN1ciBsZXMgcmVnaXN0cmVzIGRlIG1hbmnocmUgZ2xvYmFsZSIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIg6WRpdGVyIGRlcyB2YWxldXJzIG91IGRlcyBjbOlzIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciBwZXJzb25uYWxpc2VyIGxhIGZlbup0cmUgZGVzIHJlZ2lzdHJlcyIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIgYWNj6WRlciBhdXggY2zpcyBmculxdWVtbWVudCB1dGlsaXPpZXMiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIGFmZmljaGVyIGRlIGwnYWlkZSBldCBkZSBsJ2luZm9ybWF0aW9uIOAgcHJvcG9zIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIGNy6WVyIGRlIG5vdXZlbGxlcyBjbOlzIG91IHZhbGV1cnMiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJNb2RpZmllIGxlcyBkb25u6WVzIGQndW5lIHZhbGV1ciIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJBam91dGUgdW5lIG5vdXZlbGxlIGNs6SIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJBam91dGUgdW5lIG5vdXZlbGxlIHZhbGV1ciBjaGHubmUiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiQWpvdXRlIHVuZSBub3V2ZWxsZSB2YWxldXIgYmluYWlyZSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJBam91dGUgdW5lIG5vdXZlbGxlIHZhbGV1ciBtb3QgZG91YmxlIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRlIHVuIGZpY2hpZXIgdGV4dGUgZGFucyBsZXMgcmVnaXN0cmVzIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwb3J0ZSB0b3V0IG91IHVuZSBwYXJ0aWUgZGVzIHJlZ2lzdHJlcyBkYW5zIHVuIGZpY2hpZXIgdGV4dGUiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGUgYXV4IHJlZ2lzdHJlcyBkJ3VuIG9yZGluYXRldXIgZGlzdGFudCIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE6WNvbm5lY3RlIGRlcyByZWdpc3RyZXMgZCd1biBvcmRpbmF0ZXVyIGRpc3RhbnQiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSW1wcmltZSB0b3V0IG91IHVuZSBwYXJ0aWUgZGVzIHJlZ2lzdHJlcyIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk91dnJlIGwnYWlkZSBkZSBsJ+lkaXRldXIgZGUgcmVnaXN0cmVzIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkFmZmljaGUgZGUgbCdpbmZvcm1hdGlvbiBzdXIgbGUgcHJvZ3JhbW1lLCBsZSBudW3pcm8gZGUgdmVyc2lvbiBldCBsZSBjb3B5cmlnaHQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJRdWl0dGUgbCfpZGl0ZXVyIGRlIHJlZ2lzdHJlcyIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiQWpvdXRlIGRlcyBjbOlzIOAgbGEgbGlzdGUgZGVzIEZhdm9yaXMiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIlJldGlyZSBkZXMgY2zpcyBkZSBsYSBsaXN0ZSBkZXMgRmF2b3JpcyIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJNb250cmUgb3UgY2FjaGUgbGEgYmFycmUgZCfpdGF0IgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkNoYW5nZSBsYSBwb3NpdGlvbiBkZSBsYSBz6XBhcmF0aW9uIGVudHJlIGxlcyBkZXV4IHBhbm5lYXV4IgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIlJhZnJh7mNoaXQgbGEgZmVu6nRyZSIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJTdXBwcmltZSBsYSBz6WxlY3Rpb24iCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiUmVub21tZSBsYSBz6WxlY3Rpb24iCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQ29waWUgbGUgbm9tIGRlIGxhIGNs6SBz6WxlY3Rpb25u6WUgdmVycyBsZSBwcmVzc2UtcGFwaWVyIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIlJlY2hlcmNoZSBkdSB0ZXh0ZSBkYW5zIHVuZSBjbOksIHVuZSB2YWxldXIgb3UgZGVzIGRvbm7pZXMiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiUmVjaGVyY2hlIGwnb2NjdXJlbmNlIHN1aXZhbnRlIGR1IHRleHRlIGRlIGxhIGRlcm5p6HJlIHJlY2hlcmNoZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkVycmV1ciIKICAgIElEU19CQURfS0VZCQkgICAgIk5lIHBldXQgcGFzIHF1ZXN0aW9ubmVyIGxhIGNs6SAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk5lIHBldXQgcGFzIHF1ZXN0aW9ubmVyIGxhIHZhbGV1ciAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk5lIHBldXQgcGFzIOlkaXRlciBkZXMgY2zpcyBkZSBjZSB0eXBlICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIkxhIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQ29uZmlybWV6IGwnZWZmYWNlbWVudCBkZSB2YWxldXIiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiynRlcyB2b3VzIHP7ciB2b3VzIHZvdWxleiBzdXBwcmltZXIgbGEgdmFsZXVyICclcyc/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk5vdXZlbGxlIENs6SAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTm91dmVsbGUgVmFsZXVyICMlZCIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0RJQUxPRzEgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI2OCwgOTgKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpFTkQKCklERF9ESUFMT0cyIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMTg3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJCb+50ZSBkZSBkaWFsb2d1ZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMzAsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyIixJRENBTkNFTCwxMzAsMjQsNTAsMTQKRU5ECgoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJPdXZyZSBsJ2FpZGUgZGUgbCfpZGl0ZXVyIGRlIHJlZ2lzdHJlcy4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJBZmZpY2hlIGRlIGwnaW5mb3JtYXRpb24gc3VyIGxlIHByb2dyYW1tZSwgbGUgbnVt6XJvIGRlIHZlcnNpb24gZXQgbGUgY29weXJpZ2h0LiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==