LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk2IFVscmljaCBTY2htaWQKICogQ29weXJpZ2h0IDIwMDIgU3lsdmFpbiBQZXRyZW9sbGUKICogQ29weXJpZ2h0IDIwMDQgSGVubmluZyBHZXJoYXJkdAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBNZW51ICovCgpNQUlOX01FTlUgTUVOVSBMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMCnsKIFBPUFVQICImRGF0ZWkiIHsKICAgTUVOVUlURU0gIiZOZXUuLi4iLCAgICAgICAgICAgICAgUE1fTkVXCiAgIE1FTlVJVEVNICLWJmZmbmVuXHRFaW5nYWJldGFzdGUiLCAgICAgICAgICAgICBQTV9PUEVOCiAgIE1FTlVJVEVNICImVmVyc2NoaWViZW4uLi5cdEY3IiwgICAgICAgICAgICAgUE1fTU9WRSwgICAgICBHUkFZRUQKICAgTUVOVUlURU0gIiZLb3BpZXJlbi4uLlx0RjgiLCAgICAgICAgICAgICBQTV9DT1BZLCAgICAgIEdSQVlFRAogICBNRU5VSVRFTSAiJkz2c2NoZW5cdEVudGYiLCAgICAgICAgICAgUE1fREVMRVRFCiAgIE1FTlVJVEVNICImRWlnZW5zY2hhZnRlbi4uLlx0QWx0K0VpbmdhYmV0YXN0ZSIsICAgICAgIFBNX0FUVFJJQlVURVMKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImQXVzZvxocmVuLi4uIiwgICAgICAgICAgUE1fRVhFQ1VURQogICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgTUVOVUlURU0gIiZQcm9ncmFtbS1NYW5hZ2VyIGJlZW5kZW4uLi4iLCAgICAgICAgICAgICBQTV9FWElUCiB9CiBQT1BVUCAiJk9wdGlvbmVuIiB7CiAgIE1FTlVJVEVNICImQXV0b21hdGlzY2ggYW5vcmRuZW4iLCAgUE1fQVVUT19BUlJBTkdFCiAgIE1FTlVJVEVNICImU3ltYm9sIG5hY2ggUHJvZ3JhbW1zdGFydCIsICAgIFBNX01JTl9PTl9SVU4KICAgTUVOVUlURU0gIiZFaW5zdGVsbHVuZ2VuIGJlaW0gQmVlbmRlbiBzcGVpY2hlcm4iLCBQTV9TQVZFX1NFVFRJTkdTCiB9CiBQT1BVUCAiJkZlbnN0ZXIiIHsKICAgTUVOVUlURU0gItxiZXImbGFwcGVuZFx0VW1zY2hhbHQrRjUiLCAgICAgICBQTV9PVkVSTEFQCiAgIE1FTlVJVEVNICImTmViZW5laW5hbmRlclx0VW1zY2hhbHQrRjQiLCAgUE1fU0lERV9CWV9TSURFCiAgIE1FTlVJVEVNICImU3ltYm9sZSBhbm9yZG5lbiIsICAgICAgIFBNX0FSUkFOR0UKIH0KIApQT1BVUCAiJkhpbGZlIiB7CiAgIE1FTlVJVEVNICImSW5oYWx0IiwgICAgICAgICBQTV9DT05URU5UUwogICBNRU5VSVRFTSAiJlN1Y2hlbi4uLiIsICAgICAgICAgICBQTV9TRUFSQ0gKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICJIaWxmZSAmYmVudXR6ZW4iLCAgICAgUE1fSEVMUE9OSEVMUAogICBNRU5VSVRFTSAiJkxlcm5wcm9ncmFtbSIsICAgICAgICAgUE1fVFVUT1JJQUwKICAgTUVOVUlURU0gU0VQQVJBVE9SCgogICBQT1BVUCAiJkluZm8uLi4iIHsKICAgICBNRU5VSVRFTSAiJkxpemVueiIsICAgICAgICBQTV9MSUNFTlNFCiAgICAgTUVOVUlURU0gIiZLRUlORSBHQVJBTlRJRSIsICAgIFBNX05PX1dBUlJBTlRZCiAgICAgTUVOVUlURU0gItwmYmVyIFdJTkUiLCAgICAgUE1fQUJPVVRfV0lORQogICB9CiB9Cn0KCi8qIERpYWxvZyBgTmV3JyAqLwoKRElBTE9HX05FVyBESUFMT0cgMCwgMCwgMTcwLCA2NQpMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk5ldWVzIFByb2dyYW1tb2JqZWt0Igp7ClJBRElPQlVUVE9OICAgIiIsICAgICAgICAgICAgICAgICBQTV9ORVdfR1JPVVAsICAgIDEwLCAxNSwgIDEwLCAxNQpMVEVYVCAgICAgICAgICJQcm9ncmFtbSZncnVwcGUiLCAgIFBNX05FV19HUk9VUCwgICAgMjAsIDE4LCAgODAsIDgKUkFESU9CVVRUT04gICAiIiwgICAgICAgICAgICAgICAgIFBNX05FV19QUk9HUkFNLCAgMTAsIDM1LCAgMTAsIDE1CkxURVhUICAgICAgICAgIiZQcm9ncmFtbSIsIFBNX05FV19QUk9HUkFNLCAgMjAsIDM4LCAgODAsIDgKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICBJRE9LLCAgICAgICAgICAgMTA1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBYmJyZWNoZW4iLCAgICAgIElEQ0FOQ0VMLCAgICAgICAxMDUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZIaWxmZSIsICAgICAgICBQTV9IRUxQLCAgICAgICAgMTA1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYE1vdmUnICovCgpESUFMT0dfTU9WRSBESUFMT0cgMCwgMCwgMjUwLCA2NQpMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlByb2dyYW1tIHZlcnNjaGllYmVuIgp7CkxURVhUICAgICAgICAgIlZlcnNjaGllYmUgUHJvZ3JhbW06IiwgICAgSURJR05PUkUsICAgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgIDk1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICJWb24gUHJvZ3JhbW1ncnVwcGU6IiwgSURJR05PUkUsICAgICAgICAgICAgNSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICAgIDk1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICImaW4gR3J1cHBlOiIsICAgUE1fVE9fR1JPVVBfVFhULCAgICAgNSwgMjgsIDE0MCwgMTUKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgICA1LCAzOCwgMTQwLCA1MCwgV1NfVEFCU1RPUCB8IENCU19EUk9QRE9XTkxJU1QKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICAgICAgSURPSywgICAgICAgICAgICAgIDE4NSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQWJicmVjaGVuIiwgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgIDE4NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkhpbGZlIiwgICAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTg1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYENvcHknICovCgpESUFMT0dfQ09QWSBESUFMT0cgMCwgMCwgMjUwLCA2NQpMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlByb2dyYW1tIGtvcGllcmVuIgp7CkxURVhUICAgICAgICAgIktvcGllcmUgUHJvZ3JhbW06IiwgICAgSURJR05PUkUsICAgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgIDk1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICJWb24gUHJvZ3JhbW1ncnVwcGU6IiwgSURJR05PUkUsICAgICAgICAgICAgNSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICAgIDk1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICImaW4gR3J1cHBlOiIsICAgUE1fVE9fR1JPVVBfVFhULCAgICAgNSwgMjgsIDE0MCwgMTUKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgICA1LCAzOCwgMTQwLCA1MCwgV1NfVEFCU1RPUCB8IENCU19EUk9QRE9XTkxJU1QKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICAgICAgSURPSywgICAgICAgICAgICAgIDE4NSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQWJicmVjaGVuIiwgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgIDE4NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkhpbGZlIiwgICAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTg1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYEdyb3VwIGF0dHJpYnV0ZXMnICovCgpESUFMT0dfR1JPVVAgRElBTE9HIDAsIDAsIDIzMCwgNjUKTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfTkVVVFJBTApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJQcm9ncmFtbWdydXBwZW5laWdlbnNjaGFmdGVuIgp7CkxURVhUICAgICAiJkJlc2NocmVpYnVuZzoiLCBQTV9ERVNDUklQVElPTl9UWFQsICAgMDUsIDE4LCAgNTAsIDgKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fREVTQ1JJUFRJT04sICAgICAgIDYwLCAxOCwgIDkwLCAxMiwgV1NfVEFCU1RPUApMVEVYVCAgICAgIiZHcnVwcGVuZGF0ZWk6IiwgICAgICAgIFBNX0ZJTEVfVFhULCAgICAgICAgICAwNSwgMzgsICA1MCwgOApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9GSUxFLCAgICAgICAgICAgICAgNjAsIDM4LCAgOTAsIDEyLCBXU19UQUJTVE9QCkRFRlBVU0hCVVRUT04gIk9LIiwgICAgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgICAxNTUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkFiYnJlY2hlbiIsICAgICAgICBJRENBTkNFTCwgICAgICAgICAgICAxNTUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZIaWxmZSIsICAgICAgICAgIFBNX0hFTFAsICAgICAgICAgICAgIDE1NSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKfQoKLyogRGlhbG9nIGBQcm9ncmFtIGF0dHJpYnV0ZXMnICovCgpESUFMT0dfUFJPR1JBTSBESUFMT0cgMCwgMCwgMjUwLCAxMDUKTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfTkVVVFJBTApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJQcm9ncmFtbWVpZ2Vuc2NoYWZ0ZW4iCnsKTFRFWFQgICAgICAgICAiJkJlc2NocmVpYnVuZzoiLCAgUE1fREVTQ1JJUFRJT05fVFhULCAgIDA1LCAxMCwgIDYwLCA4CkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9ERVNDUklQVElPTiwgICAgICAgODAsIDEwLCAgOTAsIDEyLCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZCZWZlaGxzJnplaWxlOiIsIFBNX0NPTU1BTkRfTElORV9UWFQsICAwNSwgMjUsICA2MCwgOApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fQ09NTUFORF9MSU5FLCAgICAgIDgwLCAyNSwgIDkwLCAxMiwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICImQXJiZWl0c3ZlcnplaWNobmlzOiIsICAgIFBNX0RJUkVDVE9SWV9UWFQsICAgICAwNSwgNDAsICA2MCwgOApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fRElSRUNUT1JZLCAgICAgICAgIDgwLCA0MCwgIDkwLCAxMiwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICImVGFzdGVua29tYmluYXRpb246IiwgICAgICBQTV9IT1RfS0VZX1RYVCwgICAgICAgMDUsIDU1LCAgNjAsIDgKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0hPVF9LRVksICAgICAgICAgICA4MCwgNTUsICA5MCwgMTIsIFdTX1RBQlNUT1AKSUNPTiAgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0lDT04sICAgICAgICAgICAgICAyMCwgNzAKQ0hFQ0tCT1ggICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1NZTUJPTCwgICAgICAgICAgICA4MCwgNzUsICAxMCwgMTAsIFdTX1RBQlNUT1AKTFRFWFQgICAgICAgICAiQWxzIFN5Jm1ib2wiLCAgICAgICBJRElHTk9SRSwgICAgICAgICAgICAgOTUsIDc1LCAgNzUsIDEwCkRFRlBVU0hCVVRUT04gIk9LIiwgICAgICAgICAgICAgICAgICAgSURPSywgICAgICAgICAgICAgICAgMTg1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBYmJyZWNoZW4iLCAgICAgICAgICAgICAgIElEQ0FOQ0VMLCAgICAgICAgICAgIDE4NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkR1cmNoc3VjaGVuLi4uIiwgICAgICAgICAgICAgICBQTV9CUk9XU0UsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkFuZGVyZXMgJlN5bWJvbC4uLiIsIFBNX09USEVSX1NZTUJPTCwgICAgIDE4NSwgNjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkhpbGZlIiwgICAgICAgICAgICAgICAgIFBNX0hFTFAsICAgICAgICAgICAgIDE4NSwgODUsICA2MCwgMTUsIFdTX1RBQlNUT1AKfQoKLyogRGlhbG9nIGBTeW1ib2wnICovCgpESUFMT0dfU1lNQk9MIERJQUxPRyAwLCAwLCAyMDAsIDg1CkxBTkdVQUdFIExBTkdfR0VSTUFOLCBTVUJMQU5HX05FVVRSQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU3ltYm9sIGF1c3fkaGxlbiIKewpMVEVYVCAgICAgIkRhdGVpJm5hbWU6IiwgICAgUE1fSUNPTl9GSUxFX1RYVCwgICAgNSwgMTUsICA0MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgUE1fSUNPTl9GSUxFLCAgICAgICA0NSwgMTUsICA4NSwgMTIsIFdTX1RBQlNUT1AKTFRFWFQgICAgICImQWt0dWVsbGVzIFN5bWJvbDoiLCBQTV9TWU1CT0xfTElTVF9UWFQsICA1LCAzMCwgMTI1LCAxMApDT01CT0JPWCAgICAgICAgICAgICAgICAgICAgICAgICBQTV9TWU1CT0xfTElTVCwgICAgICA1LCA0MCwgMTI1LCA1MCwKICAgQ0JTX0RST1BET1dOTElTVCB8IENCU19BVVRPSFNDUk9MTCB8IENCU19PV05FUkRSQVdGSVhFRCB8IFdTX1RBQlNUT1AKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgIElET0ssICAgICAgICAgICAgICAxMzUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkFiYnJlY2hlbiIsICAgICBJRENBTkNFTCwgICAgICAgICAgMTM1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImRHVyY2hzdWNoZW4uLi4iLCAgICBQTV9CUk9XU0UsICAgICAgICAgMTM1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImSGlsZmUiLCAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYEV4ZWN1dGUnICovCgpESUFMT0dfRVhFQ1VURSBESUFMT0cgMCwgMCwgMjAwLCA4NQpMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlByb2dyYW1tIGF1c2b8aHJlbiIKewpMVEVYVCAgICAgIiZCZWZlaGxzemVpbGU6IiwgSURJR05PUkUsICAgMDUsIDE1LCAxMjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0NPTU1BTkQsIDA1LCAyNSwgMTIwLCAxMiwgV1NfVEFCU1RPUApDSEVDS0JPWCAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICBQTV9TWU1CT0wsICAwNSwgNDUsICAxMCwgMTAsIFdTX1RBQlNUT1AKTFRFWFQgICAgICAgICAiQWxzIFN5Jm1ib2wiLCAgIElESUdOT1JFLCAgIDIwLCA0NSwgMTIwLCAxMApERUZQVVNIQlVUVE9OICJPSyIsICAgICAgICAgICAgICAgSURPSywgICAgICAxMzUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkFiYnJlY2hlbiIsICAgICAgICAgICBJRENBTkNFTCwgIDEzNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkR1cmNoc3VjaGVuLi4uIiwgICAgICAgICAgUE1fQlJPV1NFLCAxMzUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZIaWxmZSIsICAgICAgICAgICAgIFBNX0hFTFAsICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBTdHJpbmdzICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRSBMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMCnsKSURTX1BST0dSQU1fTUFOQUdFUiwJCSJQcm9ncmFtbS1NYW5hZ2VyIgpJRFNfRVJST1IsCQkJIkZFSExFUiIKSURTX1dBUk5JTkcsCQkJIkFDSFRVTkciCklEU19JTkZPLAkJCSJJbmZvcm1hdGlvbiIKSURTX0RFTEVURSwJCQkiTPZzY2hlbiIKSURTX0RFTEVURV9HUk9VUF9zLAkJIkz2c2NoZSBQcm9ncmFtbWdydXBwZSCEJXOTPyIKSURTX0RFTEVURV9QUk9HUkFNX3MsCQkiTPZzY2hlIFByb2dyYW1tIIQlc5M/IgpJRFNfTk9UX0lNUExFTUVOVEVELAkJIk5pY2h0IGltcGxlbWVudGllcnQiCklEU19GSUxFX1JFQURfRVJST1JfcywJCSJGZWhsZXIgYmVpbSBMZXNlbiB2b24ghCVzky4iCklEU19GSUxFX1dSSVRFX0VSUk9SX3MsCQkiRmVobGVyIGJlaW0gU2NocmVpYmVuIHZvbiCEJXOTLiIKSURTX0dSUEZJTEVfUkVBRF9FUlJPUl9zLAkiRGllIFByb2dyYW1tZ3J1cHBlbmRhdGVpIIQlc5Mga2FubiBuaWNodCBnZfZmZm5ldCB3ZXJkZW4uXG5cU29sbCB3ZWl0ZXJoaW4gdmVyc3VjaHQgd2VyZGVuLCBkaWVzZSBEYXRlaSB6dSBsYWRlbj8iCklEU19PVVRfT0ZfTUVNT1JZLAkJIlp1IHdlbmlnIEhhdXB0c3BlaWNoZXIuIgpJRFNfV0lOSEVMUF9FUlJPUiwJCSJLZWluZSBIaWxmZSB2ZXJm/GdiYXIuIgpJRFNfVU5LTk9XTl9GRUFUVVJFX3MsCQkiVW5iZWthbm50ZSBFaWdlbnNjaGFmdCBpbiAlcyIKSURTX0ZJTEVfTk9UX09WRVJXUklUVEVOX3MsCSJEYXRlaSCEJXOTIGV4aXN0aWVydC4gU2llIHdpcmQgbmljaHQg/GJlcnNjaHJpZWJlbi4iCklEU19TQVZFX0dST1VQX0FTX3MsCQkiRGllIFByb2dyYW1tZ3J1cHBlIHdpcmQgYWxzIIQlc5MgZ2VzaWNoZXJ0LCB1bSBkYXMg3GJlcnNjaHJlaWJlbiBkZXIgT3JpZ2luYWxkYXRlaSB6dSB2ZXJoaW5kZXJuLiIKSURTX05PX0hPVF9LRVksCQkJIktlaW5lIgpJRFNfQUxMX0ZJTEVTLAkJCSJBbGxlIERhdGVpZW4gKCouKikiCklEU19QUk9HUkFNUywJCQkiUHJvZ3JhbW1lIgpJRFNfTElCUkFSSUVTX0RMTCwJCSJCaWJsaW90aGVrZW4gKCouZGxsKSIKSURTX1NZTUJPTF9GSUxFUywJCSJTeW1ib2xkYXRlaWVuIgpJRFNfU1lNQk9MU19JQ08sCQkiU3ltYm9sZSAoKi5pY28pIgp9CgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRSBMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMCnsKSURTX0xJQ0VOU0VfQ0FQVElPTiwgICAgICAgICAgICAiTElaRU5aIgpJRFNfTElDRU5TRSwKIkRpZXNlIEJpYmxpb3RoZWsgaXN0IGZyZWllIFNvZnR3YXJlOyBTaWUgZPxyZmVuIHNpZSB1bnRlciBkZW4gXApCZWRpbmd1bmdlbiBkZXIgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aWUgdm9uIGRlciBcCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiB2ZXL2ZmZlbnRsaWNodCwgd2VpdGVydmVydGVpbGVuIHVuZC9vZGVyIFwKbW9kaWZpemllcmVuOyBlbnR3ZWRlciBnZW3k3yBWZXJzaW9uIDIuMSBkZXIgTGl6ZW56IG9kZXIgKG5hY2ggXApJaHJlciBPcHRpb24pIGplZGVyIHNw5HRlcmVuIFZlcnNpb24uXG5cCkRpZXNlIEJpYmxpb3RoZWsgd2lyZCBpbiBkZXIgSG9mZm51bmcgd2VpdGVydmVyYnJlaXRldCwgZGHfIHNpZSBcCm78dHpsaWNoIHNlaW4gd2lyZCwgamVkb2NoIE9ITkUgSVJHRU5ERUlORSBHQVJBTlRJRSwgYXVjaCBvaG5lIFwKZGllIGltcGxpemllcnRlIEdhcmFudGllIGRlciBNQVJLVFJFSUZFIG9kZXIgZGVyIFZFUldFTkRCQVJLRUlUIFwKRtxSIEVJTkVOIEJFU1RJTU1URU4gWldFQ0suIE1laHIgRGV0YWlscyBmaW5kZW4gU2llIGluIGRlciBcCkdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS5cblwKU2llIHNvbGx0ZW4gZWluZSBLb3BpZSBkZXIgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHp1c2FtbWVuIFwKbWl0IGRpZXNlciBCaWJsaW90aGVrIGVyaGFsdGVuIGhhYmVuOyBmYWxscyBuaWNodCwgc2NocmVpYmVuIFNpZSBhbiBcCmRpZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgXApCb3N0b24sIE1BIDAyMTEwLCBVU0EuIgoKSURTX1dBUlJBTlRZX0NBUFRJT04sICJLRUlORSBHQVJBTlRJRSIKSURTX1dBUlJBTlRZLAoiRGllc2UgQmlibGlvdGhlayB3aXJkIGluIGRlciBIb2ZmbnVuZyB3ZWl0ZXJ2ZXJicmVpdGV0LCBkYd8gc2llIG78dHpsaWNoIFwKc2VpbiB3aXJkLCBqZWRvY2ggT0hORSBJUkdFTkRFSU5FIEdBUkFOVElFLCBhdWNoIG9obmUgZGllIGltcGxpemllcnRlIEdhcmFudGllIFwKZGVyIE1BUktUUkVJRkUgb2RlciBkZXIgVkVSV0VOREJBUktFSVQgRtxSIEVJTkVOIEJFU1RJTU1URU4gWldFQ0suIE1laHIgRGV0YWlscyBcCmZpbmRlbiBTaWUgaW4gZGVyIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4iCn0K