LyoKICogUHJvZ3JhbSBNYW5hZ2VyIChTbG92ZW5pYW4gUmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgMjAwMiBSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKLyogTWVudSAqLwoKTUFJTl9NRU5VIE1FTlUgTEFOR1VBR0UgTEFOR19TTE9WRU5JQU4sIFNVQkxBTkdfREVGQVVMVAp7CiBQT1BVUCAiJkRhdG90ZWthIiB7CiAgIE1FTlVJVEVNICImTm92YSAuLi4iLCAgICAgICAgICAgICAgUE1fTkVXCiAgIE1FTlVJVEVNICImT2RwcmlcdEVudGVyIiwgICAgICAgICAgICAgUE1fT1BFTgogICBNRU5VSVRFTSAiUHJlJm1ha25pXHRGNyIsICAgICAgICAgICAgIFBNX01PVkUsICAgICAgR1JBWUVECiAgIE1FTlVJVEVNICImS29waXJhalx0RjgiLCAgICAgICAgICAgICBQTV9DT1BZLCAgICAgIEdSQVlFRAogICBNRU5VSVRFTSAiJkl6YnJpmmlcdEVudGYiLCAgICAgICAgICAgUE1fREVMRVRFCiAgIE1FTlVJVEVNICImTGFzdG5vc3RpIC4uLlx0QWx0K0VudGVyIiwgICAgICAgUE1fQVRUUklCVVRFUwogICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgTUVOVUlURU0gIiZaYZ5lbmkgLi4uIiwgICAgICAgICAgUE1fRVhFQ1VURQogICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgTUVOVUlURU0gIkl6JmhvZCBpeiBwcm9ncmFtYSBXaW5kb3dzIC4uLiIsICAgICAgICAgICAgIFBNX0VYSVQKIH0KIFBPUFVQICImTW+ebm9zdGkiIHsKICAgTUVOVUlURU0gIiZTYW1vZGVqbm8gcmF6cG9yZWRpIiwgIFBNX0FVVE9fQVJSQU5HRQogICBNRU5VSVRFTSAiJk9iIHJhYmkgbWluaW1pcmFqIiwgICAgUE1fTUlOX09OX1JVTgogICBNRU5VSVRFTSAiU2hyYW5pICZuYXN0YXZpdHZlIG9iIGl6aG9kdSIsIFBNX1NBVkVfU0VUVElOR1MKIH0KIFBPUFVQICImT2tubyIgewogICBNRU5VSVRFTSAiJlYga2Fza2Fkb1x0U2hpZnQrRjUiLCAgICAgICBQTV9PVkVSTEFQCiAgIE1FTlVJVEVNICImUmF6cG9zdGF2aVx0U2hpZnQrRjQiLCAgUE1fU0lERV9CWV9TSURFCiAgIE1FTlVJVEVNICJSYXpwb3JlZGkgJmlrb25lIiwgICAgICAgUE1fQVJSQU5HRQogfQoKUE9QVVAgIiZQb21v6CIgewogICBNRU5VSVRFTSAiJlRlbWUgcG9tb+hpIiwgICAgICAgICBQTV9DT05URU5UUwogICBNRU5VSVRFTSAiJk5hamRpIC4uLiIsICAgICAgICAgICBQTV9TRUFSQ0gKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImTyBwb21v6GkiLCAgICAgUE1fSEVMUE9OSEVMUAogICBNRU5VSVRFTSAiJlZhZG5pY2EiLCAgICAgICAgIFBNX1RVVE9SSUFMCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgoKICAgUE9QVVAgIkluZiZvcm1hY2lqZSAuLi4iIHsKICAgICBNRU5VSVRFTSAiJkxpY2Vu6G5hIHBvZ29kYmEiLCAgICAgICAgUE1fTElDRU5TRQogICAgIE1FTlVJVEVNICImQlJFWiBHQVJBTkNJSkUiLCAgICBQTV9OT19XQVJSQU5UWQogICAgIE1FTlVJVEVNICImTyBXSU5FIiwgICAgIFBNX0FCT1VUX1dJTkUKICAgfQogfQp9CgovKiBEaWFsb2cgYE5ldycgKi8KCkRJQUxPR19ORVdfIERJQUxPRyAwLCAwLCAxNzAsIDY1CkxBTkdVQUdFIExBTkdfU0xPVkVOSUFOLCBTVUJMQU5HX0RFRkFVTFQKU1RZTEUgRFNfTU9EQUxGUkFNRQpDQVBUSU9OICJOb3YgcHJvZ3JhbXNraSBwcmVkbWV0Igp7ClJBRElPQlVUVE9OICAgIiIsICAgICAgICAgICAgICAgICBQTV9ORVdfR1JPVVAsICAgIDEwLCAxNSwgIDEwLCAxNQpMVEVYVCAgICAgICAgICJQcm9ncmFtc2thICZza3VwaW5hIiwgICBQTV9ORVdfR1JPVVAsICAgIDIwLCAxOCwgIDgwLCAxNQpSQURJT0JVVFRPTiAgICIiLCAgICAgICAgICAgICAgICAgUE1fTkVXX1BST0dSQU0sICAxMCwgMzUsICAxMCwgMTUKTFRFWFQgICAgICAgICAiJlByb2dyYW0iLCBQTV9ORVdfUFJPR1JBTSwgIDIwLCAzOCwgIDgwLCAxNQpERUZQVVNIQlVUVE9OICJWIHJlZHUiLCAgICAgICAgICBJRE9LLCAgICAgICAgICAgMTA1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJQcmVrbGnoaSIsICAgICAgSURDQU5DRUwsICAgICAgIDEwNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJlBvbW/oIiwgICAgICAgIFBNX0hFTFAsICAgICAgICAxMDUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgTW92ZScgKi8KCkRJQUxPR19NT1ZFXyBESUFMT0cgMCwgMCwgMjUwLCA2NQpMQU5HVUFHRSBMQU5HX1NMT1ZFTklBTiwgU1VCTEFOR19ERUZBVUxUClNUWUxFIERTX01PREFMRlJBTUUKQ0FQVElPTiAiUHJlbWlrIHByb2dyYW1hIgp7CkxURVhUICAgICAgICAgIlByZW1ha25pIHByb2dyYW06IiwgICAgSURJR05PUkUsICAgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgIDk1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICJJeiBwcm9ncmFtc2tlIHNrdXBpbmU6IiwgSURJR05PUkUsICAgICAgICAgICAgNSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICAgIDk1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICImViBza3VwaW5vOiIsICAgUE1fVE9fR1JPVVBfVFhULCAgICAgNSwgMjgsIDE0MCwgMTUKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgICA1LCAzOCwgMTQwLCA1MCwgV1NfVEFCU1RPUCB8IENCU19EUk9QRE9XTkxJU1QKREVGUFVTSEJVVFRPTiAiViByZWR1IiwgICAgICAgICAgICAgIElET0ssICAgICAgICAgICAgICAxODUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIlByZWtsaehpIiwgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgIDE4NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJlBvbW/oIiwgICAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTg1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYENvcHknICovCgpESUFMT0dfQ09QWV8gRElBTE9HIDAsIDAsIDI1MCwgNjUKTEFOR1VBR0UgTEFOR19TTE9WRU5JQU4sIFNVQkxBTkdfREVGQVVMVApTVFlMRSBEU19NT0RBTEZSQU1FCkNBUFRJT04gIktvcGlyYW5qZSBwcm9ncmFtYSIKewpMVEVYVCAgICAgICAgICJLb3BpcmFqIHByb2dyYW06IiwgICAgSURJR05PUkUsICAgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgIDk1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICJJeiBwcm9ncmFtc2tlIHNrdXBpbmU6IiwgSURJR05PUkUsICAgICAgICAgICAgNSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICAgIDk1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICImViBza3VwaW5vOiIsICAgUE1fVE9fR1JPVVBfVFhULCAgICAgNSwgMjgsIDE0MCwgMTUKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgICA1LCAzOCwgMTQwLCA1MCwgV1NfVEFCU1RPUCB8IENCU19EUk9QRE9XTkxJU1QKREVGUFVTSEJVVFRPTiAiViByZWR1IiwgICAgICAgICAgICAgIElET0ssICAgICAgICAgICAgICAxODUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIlByZWtsaehpIiwgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgIDE4NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJlBvbW/oIiwgICAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTg1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYEdyb3VwIGF0dHJpYnV0ZXMnICovCgpESUFMT0dfR1JPVVBfIERJQUxPRyAwLCAwLCAyMzAsIDY1CkxBTkdVQUdFIExBTkdfU0xPVkVOSUFOLCBTVUJMQU5HX0RFRkFVTFQKU1RZTEUgRFNfTU9EQUxGUkFNRQpDQVBUSU9OICJMYXN0bm9zdGkgcHJvZ3JhbXNrZSBza3VwaW5lIgp7CkxURVhUICAgICAiJk9waXM6IiwgUE1fREVTQ1JJUFRJT05fVFhULCAgIDA1LCAxOCwgIDUwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9ERVNDUklQVElPTiwgICAgICAgNjAsIDE4LCAgOTAsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAiJkRhdG90ZWthIHNrdXBpbmU6IiwgICAgICAgIFBNX0ZJTEVfVFhULCAgICAgICAgICAwNSwgMzgsICA1MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fRklMRSwgICAgICAgICAgICAgIDYwLCAzOCwgIDkwLCAxNSwgV1NfVEFCU1RPUApERUZQVVNIQlVUVE9OICJWIHJlZHUiLCAgICAgICAgICAgIElET0ssICAgICAgICAgICAgICAgIDE1NSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiUHJla2xp6GkiLCAgICAgICAgSURDQU5DRUwsICAgICAgICAgICAgMTU1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImUG9tb+giLCAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgICAxNTUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgUHJvZ3JhbSBhdHRyaWJ1dGVzJyAqLwoKRElBTE9HX1BST0dSQU1fIERJQUxPRyAwLCAwLCAyNTAsIDEwNQpMQU5HVUFHRSBMQU5HX1NMT1ZFTklBTiwgU1VCTEFOR19ERUZBVUxUClNUWUxFIERTX01PREFMRlJBTUUKQ0FQVElPTiAiTGFzdG5vc3RpIHByb2dyYW1hIgp7CkxURVhUICAgICAgICAgIiZPcGlzOiIsICBQTV9ERVNDUklQVElPTl9UWFQsICAgMDUsIDEwLCAgNjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9ERVNDUklQVElPTiwgICAgICAgODAsIDEwLCAgOTAsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZVa2F6bmEgdnJzdGljYToiLCBQTV9DT01NQU5EX0xJTkVfVFhULCAgMDUsIDI1LCAgNjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9DT01NQU5EX0xJTkUsICAgICAgODAsIDI1LCAgOTAsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZEZWxvdm5hIG1hcGE6IiwgICAgUE1fRElSRUNUT1JZX1RYVCwgICAgIDA1LCA0MCwgIDYwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fRElSRUNUT1JZLCAgICAgICAgIDgwLCA0MCwgIDkwLCAxNSwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICImVGlwa2UgemEgYmxpnm5qaWNvOiIsICAgICAgUE1fSE9UX0tFWV9UWFQsICAgICAgIDA1LCA1NSwgIDYwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fSE9UX0tFWSwgICAgICAgICAgIDgwLCA1NSwgIDkwLCAxNSwgV1NfVEFCU1RPUApJQ09OICAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fSUNPTiwgICAgICAgICAgICAgIDIwLCA3MApDSEVDS0JPWCAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fU1lNQk9MLCAgICAgICAgICAgIDgwLCA3NSwgIDEwLCAxMCwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICImTWluaW1pcmFuIHphZ29uIiwgICAgICAgSURJR05PUkUsICAgICAgICAgICAgIDk1LCA3NSwgIDc1LCAxMApERUZQVVNIQlVUVE9OICJWIHJlZHUiLCAgICAgICAgICAgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgICAxODUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIlByZWtsaehpIiwgICAgICAgICAgICAgICBJRENBTkNFTCwgICAgICAgICAgICAxODUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIlByZSZicnNrYWogLi4uIiwgICAgICAgICAgICAgICBQTV9CUk9XU0UsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIlphbWVuamFqICZpa29ubyAuLi4iLCBQTV9PVEhFUl9TWU1CT0wsICAgICAxODUsIDY1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZQb21v6CIsICAgICAgICAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgICAxODUsIDg1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgU3ltYm9sJyAqLwoKRElBTE9HX1NZTUJPTF8gRElBTE9HIDAsIDAsIDIwMCwgODUKTEFOR1VBR0UgTEFOR19TTE9WRU5JQU4sIFNVQkxBTkdfREVGQVVMVApTVFlMRSBEU19NT0RBTEZSQU1FCkNBUFRJT04gIlphbWVuamF2YSBpa29uZSIKewpMVEVYVCAgICAgIkltZSAmZGF0b3Rla2U6IiwgICAgUE1fSUNPTl9GSUxFX1RYVCwgICAgNSwgMTUsICA0MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgUE1fSUNPTl9GSUxFLCAgICAgICA0NSwgMTUsICA4NSwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgICAgICImVHJlbnV0bmEgaWtvbmE6IiwgUE1fU1lNQk9MX0xJU1RfVFhULCAgNSwgMzAsIDEyNSwgMTAKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgUE1fU1lNQk9MX0xJU1QsICAgICAgNSwgNDAsIDEyNSwgNTAsCiAgIENCU19EUk9QRE9XTkxJU1QgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBXU19UQUJTVE9QCkRFRlBVU0hCVVRUT04gIlYgcmVkdSIsICAgICAgICAgSURPSywgICAgICAgICAgICAgIDEzNSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiUHJla2xp6GkiLCAgICAgSURDQU5DRUwsICAgICAgICAgIDEzNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiUHJlJmJyc2thaiAuLi4iLCAgICBQTV9CUk9XU0UsICAgICAgICAgMTM1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImUG9tb+giLCAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYEV4ZWN1dGUnICovCgpESUFMT0dfRVhFQ1VURV8gRElBTE9HIDAsIDAsIDIwMCwgODUKTEFOR1VBR0UgTEFOR19TTE9WRU5JQU4sIFNVQkxBTkdfREVGQVVMVApTVFlMRSBEU19NT0RBTEZSQU1FCkNBUFRJT04gIlphZ29uIHByb2dyYW1hIgp7CkxURVhUICAgICAiJlVrYXpuYSB2cnN0aWNhOiIsIElESUdOT1JFLCAgIDA1LCAxNSwgMTIwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9DT01NQU5ELCAwNSwgMjUsIDEyMCwgMTUsIFdTX1RBQlNUT1AKQ0hFQ0tCT1ggICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgUE1fU1lNQk9MLCAgMDUsIDQ1LCAgMTAsIDEwLCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZNaW5pbWlyYW4gemFnb24iLCAgIElESUdOT1JFLCAgIDIwLCA0NSwgMTIwLCAxMApERUZQVVNIQlVUVE9OICJWIHJlZHUiLCAgICAgICAgICAgICAgIElET0ssICAgICAgMTM1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJQcmVrbGnoaSIsICAgICAgICAgICBJRENBTkNFTCwgIDEzNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiUHJlJmJyc2thaiAuLi4iLCAgICAgICAgICBQTV9CUk9XU0UsIDEzNSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJlBvbW/oIiwgICAgICAgICAgICAgUE1fSEVMUCwgICAxMzUsIDY1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIFN0cmluZ3MgKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIExBTkdVQUdFIExBTkdfU0xPVkVOSUFOLCBTVUJMQU5HX0RFRkFVTFQKewpJRFNfUFJPR1JBTV9NQU5BR0VSLAkJIlVwcmF2aXRlbGogcHJvZ3JhbW92IgpJRFNfRVJST1IsCQkJIk5BUEFLQSIKSURTX1dBUk5JTkcsCQkJIk9QT1pPUklMTyIKSURTX0lORk8sCQkJIkluZm9ybWFjaWphIgpJRFNfREVMRVRFLAkJCSJCcmlzYW5qZSIKSURTX0RFTEVURV9HUk9VUF9zLAkJIkFsaSBzdGUgcHJlcHJp6GFuaSwgZGEgnmVsaXRlIGl6YnJpc2F0aSBza3VwaW5vICclcyc/IgpJRFNfREVMRVRFX1BST0dSQU1fcywJCSJBbGkgc3RlIHByZXByaehhbmksIGRhIJ5lbGl0ZSBpemJyaXNhdGkgcHJvZ3JhbSAnJXMnPyIKSURTX05PVF9JTVBMRU1FTlRFRCwJCSJOaSAommUpIG5hIHZvbGpvIgpJRFNfRklMRV9SRUFEX0VSUk9SX3MsCQkiTmFwYWthIHByaSBicmFuanUgaXogJyVzJy4iCklEU19GSUxFX1dSSVRFX0VSUk9SX3MsCQkiTmFwYWthIHByaSBwaXNhbmp1IHYgJyVzJy4iCklEU19HUlBGSUxFX1JFQURfRVJST1JfcywJIlwKRGF0b3Rla2UgcHJvZ3JhbXNrZSBza3VwaW5lICclcycgbmkgbW9nb+hlIG9kcHJldGkuXG5cCkFsaSCeZWxpdGUsIGRhIGpvIFVwcmF2aXRlbGogcHJvZ3JhbW92XG5cCnBvc2t1mmEgbmFsb55pdGkgdHVkaSB2IHByaWhvZG5qZT8iCklEU19PVVRfT0ZfTUVNT1JZLAkJIlptYW5qa2FsbyBqZSBwb21uaWxuaWthLiIKSURTX1dJTkhFTFBfRVJST1IsCQkiUG9tb+ggbmkgbmEgdm9sam8uIgpJRFNfVU5LTk9XTl9GRUFUVVJFX3MsCQkiTmV6bmFuYSBtb55ub3N0IHYgJXMiCklEU19GSUxFX05PVF9PVkVSV1JJVFRFTl9zLAkiRGF0b3Rla2EgYCVzJyCeZSBvYnN0YWphIGluIG5pIGJpbGEgcHJlcGlzYW5hLiIKSURTX1NBVkVfR1JPVVBfQVNfcywJCSJTaHJhbmp1amVtIGRhdG90ZWtvIHNrdXBpbmUga290IGAlcycsIGRhIGJpIHByZXByZehpbCBwcmVwaXNhbmplIG9yaWdpbmFsbmUgZGF0b3Rla2UuIgpJRFNfTk9fSE9UX0tFWSwJCQkiTm9iZW4iCklEU19BTExfRklMRVMsCQkJIlZzZSBkYXRvdGVrZSAoKi4qKSIKSURTX1BST0dSQU1TLAkJCSJQcm9ncmFtaSIKSURTX0xJQlJBUklFU19ETEwsCQkiS25qaZ5uaWNlICgqLmRsbCkiCklEU19TWU1CT0xfRklMRVMsCQkiSWtvbnNrZSBkYXRvdGVrZSIKSURTX1NZTUJPTFNfSUNPLAkJIklrb25lICgqLmljbykiCn0K