LyoKICogV2luZUZpbGUKICogRnJlbmNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDAgTWFydGluIEZ1Y2hzCiAqIENvcHlyaWdodCAyMDAyIFN0ZXZlbiBFZHdhcmRzCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZAogKiBDb3B5cmlnaHQgMjAwMyBTeWx2YWluIFBldHJlb2xsZQogKiBDb3B5cmlnaHQgMjAwNSBKb25hdGhhbiBFcm5zdAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0ZSRU5DSCwgU1VCTEFOR19ORVVUUkFMCgovKiBNZW51ICovCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewogICAgUE9QVVAgIiZGaWNoaWVyIiAgewogICAgICAgIE1FTlVJVEVNICImT3V2cmlyXHRFbnRy6WUiLCAgICAgICAgICAgICBJRF9BQ1RJVkFURQogICAgICAgIE1FTlVJVEVNICImROlwbGFjZXIuLi5cdEY3IiwgICAgICAgICAgICBJRF9GSUxFX01PVkUKICAgICAgICBNRU5VSVRFTSAiJkNvcGllci4uLlx0RjgiLCAgICAgICAgICAgICAgSURfRklMRV9DT1BZCiAgICAgICAgTUVOVUlURU0gIlAmcmVzc2UtUGFwaWVycy4uLlx0RjkiLCAgICAgIDExOAogICAgICAgIE1FTlVJVEVNICImRWZmYWNlclx0RGVsIiwgICAgICAgICAgICAgICBJRF9GSUxFX0RFTEVURQogICAgICAgIE1FTlVJVEVNICJSZSZub21tZXIuLi4iLCAgICAgICAgICAgICAgICAxMDkKICAgICAgICBNRU5VSVRFTSAiJlByb3Byael06XMuLi5cdEFsdCtFbnRyZWUiLCBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ28mbXByZXNzZXIuLi4iLCAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIkTpY29tcHJlJnNzZXIuLi4iLCAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFJnjpY3V0ZXIuLi4iLCAgICAgICAgICAgICAgICBJRF9FWEVDVVRFCiAgICAgICAgTUVOVUlURU0gIiZJbXByaW1lci4uLiIsICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICImQXNzb2NpZXIuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ3LpZXIgUulwZXImdG9pcmUuLi4iLCAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIlJlYyZoZXJjaGVyLi4uIiwgICAgICAgICAgICAgIDEwNAogICAgICAgIE1FTlVJVEVNICJT6WxlY3Rpb25uZXIgJkZpY2hpZXJzLi4uIiwgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICImUXVpdHRlclx0QWx0K1giLCAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiJlF1aXR0ZXIiLCAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICImRGlzcXVlIiAgewogICAgICAgIE1FTlVJVEVNICImQ29waWVyIERpc3F1ZS4uLiIsICAgICAgICAgICAyMDEKICAgICAgICBNRU5VSVRFTSAiJk5vbW1lciBEaXNxdWUuLi4iLCAgICAgICAgICAgMjAyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGb3JtYXRlciBEaXNxdWUuLi4iLCAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiQ3LpZXIgdW4gZGlzcXVlICpzeXN06G1lLi4uIiwgLTEgIC8qVE9ETyovCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDb25uZWN0ZXIgdW4gbGVjdGV1ciAmculzZWF1IixJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSAiJkTpY29ubmVjdGVyIHVuIGxlY3RldXIgculzZWF1IixJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlBhcnRhZ2VyLi4uIiwgICAgICAgICAgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIkNlc3NlciBkZSBwYXJ0YSZnZXIiLCAgICAgICAgIDI1NQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDaG9pc2lyIGxlICZsZWN0ZXVyIiwgICAgICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiJlLpcGVydG9pcmVzIiAgewogICAgICAgIE1FTlVJVEVNICImROl2ZWxvcHBlciB1biBuaXZlYXVcdCsiLCAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiROl2ZWxvcHBlciB1bmUgJmJyYW5jaGVcdCoiLCAgMzAyCiAgICAgICAgTUVOVUlURU0gIiZUb3V0IGTpdmVsb3BwZXJcdEN0cmwrKiIsICAgIDMwMwogICAgICAgIE1FTlVJVEVNICImUulkdWlyZSB1bmUgYnJhbmNoZVx0LSIsICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkluZGlxdWVyIGwnYXJib3Jlc2NlbmNlIiwgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZWdWUiICB7CiAgICAgICAgTUVOVUlURU0gIkFyYnJlIGV0IHLpJnBlcnRvaXJlIiwgICAgICAgIDQxMwogICAgICAgIE1FTlVJVEVNICImQXJicmUgc2V1bGVtZW50IiwgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiJlLpcGVydG9pcmUgc2V1bGVtZW50IiwgICAgICAgNDEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZT6XBhcmVyIiwgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk5vbSIsICAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19OQU1FCiAgICAgICAgTUVOVUlURU0gIlRvdXMgJmxlcyBE6XRhaWxzIiwgICAgICAgICAgIElEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJkTpdGFpbHMuLi4iLCAgICAgICAgICAgICAgICAgSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlRyaWVyIHBhciBOJm9tIiwgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9OQU1FCiAgICAgICAgTUVOVUlURU0gIlRyaWVyIHBhciAmVHlwZSIsICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9UWVBFCiAgICAgICAgTUVOVUlURU0gIlRyaWVyIHBhciBUYSZpbGxlIiwgICAgICAgICAgIElEX1ZJRVdfU09SVF9TSVpFCiAgICAgICAgTUVOVUlURU0gIlRyaWVyIHBhciBEYXQmZSIsICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlRyaWVyIHBhciAmLi4uIiwgICAgICAgICAgICAgIElEX1ZJRVdfRklMVEVSCiAgICB9CgogICAgUE9QVVAgIiZPcHRpb25zIiAgewogICAgICAgIE1FTlVJVEVNICImQ29uZmlybWF0aW9uLi4uIiwgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJlBvbGljZS4uLiIsICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiUGVyc29ubmFsaXNlciBsYSAmYmFycmUgZCdPdXRpbHMuLi4iLCA1MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQmFycmUgZCcmT3V0aWxzIiwgICAgICAgICAgICAgSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJCYXJyZSBkZSAmTGVjdGV1ciIsICAgICAgICAgICBJRF9WSUVXX0RSSVZFX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJCYXJyZSBkJybJdGF0IiwgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIlAmbGVpbiDJY3Jhblx0Q3RybCtTaGlmdCtTIiwgIElEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlLpZHVpcmUgYSBsJ3V0aWxpc2F0aW9uIiwgICAgNTA0CiAgICAgICAgTUVOVUlURU0gIiZFbnJlZ2lzdHJlciBsYSBjb25maWd1cmF0aW9uIGVuIHF1aXR0YW50Iiw1MTEKICAgIH0KCgogICAgUE9QVVAgIiZT6WN1cml06SIgIHsKICAgICAgICBNRU5VSVRFTSAiJkFjY+hzLi4uIiwgICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIiZTdXJ2ZWlsbGFuY2UuLi4iLCAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImUHJvcHJp6XRhaXJlLi4uIiwgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiJkZlbup0cmUiICB7CiAgICAgICAgTUVOVUlURU0gIk5vdXZlbGxlICZmZW7qdHJlIiwgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAiJkVuIGNhc2NhZGVcdEN0cmwrRjUiLCAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiTW9zYe9xdWUgJmhvcml6b250YWxlIiwgICAgICAgSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJNb3Nh73F1ZSAmdmVydGljYWxlXHRDdHJsK0Y0IixJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiUulvcmdhbmlzYXRpb24gJkF1dG9tYXRpcXVlIiwgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICJS6W9yZ2FuaXNlciBsZXMgJmlj9G5lcyIsICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICImQWN0dWFsaXNlclx0RjUiLCAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIiZBaWRlIiAgewogICAgICAgIE1FTlVJVEVNICImU29tbWFpcmUgZGUgbCdhaWRlXHRGMSIsICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZSZWNoZXJjaGVyIGRhbnMgbCdhaWRlXHRGMSIsIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiJlV0aWxpc2VyIGwnYWlkZVx0RjEiLCAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQSBwcm9wb3MgZGUgV2luZWZpbGUuLi4iLCAgICBJRF9BQk9VVAojaWZkZWYgX19XSU5FX18KICAgICAgICBNRU5VSVRFTSAiQSBwcm9wb3MgZGUgJldpbmUuLi4iLCAgICAgICAgSURfQUJPVVRfV0lORQojZW5kaWYKICAgIH0KfQoKCklERF9FWEVDVVRFIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkV46WN1dGVyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZDb21tYW5kZSA6IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBDT05UUk9MICAgICAgICAgIlNvdXMgZm9ybWUgZCdpY/RuZSIsIDIxNCwgIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QLDMsIDQ1LCA3MSwgMTIKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZBaWRlIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJT6WxlY3Rpb25uZXIgbGEgZGVzdGluYXRpb24iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJkRvc3NpZXI6IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJQYSZyY291cmlyLi4uIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX0RJQUxPR19WSUVXX1RZUEUgRElBTE9HIERJU0NBUkRBQkxFIDE1LCAxMywgMTYxLCA5NwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJQYXIgdHlwZSBkZSBmaWNoaWVyIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICImTmFtZToiLC0xLDcsOCwyMiwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19WSUVXX1BBVFRFUk4sMzEsNyw2MywxMixFU19BVVRPSFNDUk9MTAogICAgR1JPVVBCT1ggICAgICAgICJUeXBlIGRlIGZpY2hpZXIiLC0xLDcsMjMsODcsNTYKICAgIENPTlRST0wgICAgICAgICAiJlLpcGVydG9pcmVzIixJRENfVklFV19UWVBFX0RJUkVDVE9SSUVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsMzIsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJlByb2dyYW1tZXMiLElEQ19WSUVXX1RZUEVfUFJPR1JBTVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw0Myw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJEb2N1Jm1lbnRzIixJRENfVklFV19UWVBFX0RPQ1VNRU5UUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDU0LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZBdXRyZXMgZmljaGllcnMiLElEQ19WSUVXX1RZUEVfT1RIRVJTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNjUsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiTW9udHJlciBsZXMgZmljaGllcnMgY2FjaOlzLyZzeXN06G1lIixJRENfVklFV19UWVBFX0hJRERFTiwKICAgICAgICAgICAgICAgICAgICAiQm91dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDcsODEsMTA2LDkKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTA0LDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTA0LDI0LDUwLDE0CkVORAoKSUREX0RJQUxPR19QUk9QRVJUSUVTIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjQ4LCAyMTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUHJvcHJp6XTpcyBkZSAlcyIKRk9OVCA4LCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTkxLDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTkxLDI5LDUwLDE0CiAgICBMVEVYVCAgICAgICAgICAgIk5vbSBkdSAmZmljaGllcjoiLC0xLDcsNyw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0ZJTEVOQU1FLDcxLDcsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJDaGVtaW4gY29tJnBsZXQ6IiwtMSw3LDE4LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfUEFUSCw3MSwxOCwxMjAsOSwgRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJNb2RpZmljYXRpb246IiwtMSw3LDI5LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfTEFTVENIQU5HRSw3MSwyOSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnNpb246IiwtMSw3LDQwLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfVkVSU0lPTiw3MSw0MCwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkNvcCZ5cmlnaHQ6IiwtMSw3LDUxLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfQ09QWVJJR0hULDcxLDUxLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVGFpbGxlOiIsLTEsNyw2Miw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1NJWkUsNzEsNjIsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJBdHRyaWJ1dHMiLC0xLDcsNzksMTU4LDQ2CiAgICBDT05UUk9MICAgICAgICAgIkxlY3R1JnJlIHNldWxlIixJRENfQ0hFQ0tfUkVBRE9OTFksIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNyw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIkNhYyZo6SIsSURDX0NIRUNLX0hJRERFTiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJkFyY2hpdmUiLElEQ19DSEVDS19BUkNISVZFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTcsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJlN5c3TobWUiLElEQ19DSEVDS19TWVNURU0sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5MiwxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICImQ29tcHJlc3PpIixJRENfQ0hFQ0tfQ09NUFJFU1NFRCwiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNywxMTEsNjgsOQogICAgR1JPVVBCT1ggICAgICAgICImVmVyc2lvbiBJbmZvcm1hdGlvbiIsLTEsNywxMjksMjM0LDc5CiAgICBMSVNUQk9YICAgICAgICAgSURDX0xJU1RfUFJPUF9WRVJTSU9OX1RZUEVTLDEzLDEzOSwxMDcsNjMsTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBFRElUVEVYVCAgICAgICAgSURDX0xJU1RfUFJPUF9WRVJTSU9OX1ZBTFVFUywxMjMsMTM5LDExMSw2MyxFU19NVUxUSUxJTkUgfCBFU19SRUFET05MWSB8IFdTX1ZTQ1JPTEwKRU5ECgoKU1RSSU5HVEFCTEUKewogICAgSURTX0ZPTlRfU0VMX0RMR19OQU1FICAgIkFwcGxpcXVlciBsZXMgculnbGFnZXMgZGVzIGZvbnRlcyIKICAgIElEU19GT05UX1NFTF9FUlJPUiAgICAgICJFcnJldXIgZGFucyBsYSBz6WxlY3Rpb24gZGUgbGEgbm91dmVsbGUgZm9udGUuIgp9CgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfV0lORUZJTEUgICAgICAgICAgICAiV2luZWZpbGUiCiAgICBJRFNfRVJST1IgICAgICAgICAgICAgICAiRXJyZXVyIgogICAgSURTX1JPT1RfRlMgICAgICAgICAgICAgInJvb3QgZnMiCiAgICBJRFNfVU5JWEZTICAgICAgICAgICAgICAidW5peGZzIgogICAgSURTX0RFU0tUT1AgICAgICAgICAgICAgIkRlc2t0b3AiCiAgICBJRFNfU0hFTEwgICAgICAgICAgICAgICAiU2hlbGwiCiAgICBJRFNfVElUTEVGTVQgICAgICAgICAgICAiJXMgLSAlcyIKICAgIElEU19OT19JTVBMICAgICAgICAgICAgICJQYXMgZW5jb3JlIGltcGzpbWVudOkiCiAgICBJRFNfV0lORSAgICAgICAgICAgICAgICAiV0lORSIKICAgIElEU19XSU5FX0ZJTEUgICAgICAgICAgICJXaW5lIEZpbGUiCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19DT0xfTkFNRSAgICAgICAgICAgICJOb20iCiAgICBJRFNfQ09MX1NJWkUgICAgICAgICAgICAiVGFpbGxlIgogICAgSURTX0NPTF9DREFURSAgICAgICAgICAgIkNEYXRlIgogICAgSURTX0NPTF9BREFURSAgICAgICAgICAgIkFEYXRlIgogICAgSURTX0NPTF9NREFURSAgICAgICAgICAgIk1EYXRlIgogICAgSURTX0NPTF9JRFggICAgICAgICAgICAgIkluZGV4L0lub2RlIgogICAgSURTX0NPTF9MSU5LUyAgICAgICAgICAgIkxpZW5zIgogICAgSURTX0NPTF9BVFRSICAgICAgICAgICAgIkF0dHJpYnV0cyIKICAgIElEU19DT0xfU0VDICAgICAgICAgICAgICJT6WN1cml06SIKCiAgICBJRFNfRlJFRV9TUEFDRV9GTVQgICAgICAiJXMgc3VyICVzIGxpYnJlIgp9Cg==