ZG5sIApkbmwgICRJZCQKZG5sIApkbmwgIENvcHlyaWdodCCpIDIwMDMgS2VpdGggUGFja2FyZApkbmwgCmRubCAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCmRubCAgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKZG5sICB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKZG5sICBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCmRubCAgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgS2VpdGggUGFja2FyZCBub3QgYmUgdXNlZCBpbgpkbmwgIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dApkbmwgIHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBLZWl0aCBQYWNrYXJkIG1ha2VzIG5vCmRubCAgcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0CmRubCAgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KZG5sIApkbmwgIEtFSVRIIFBBQ0tBUkQgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCmRubCAgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwpkbmwgIEVWRU5UIFNIQUxMIEtFSVRIIFBBQ0tBUkQgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKZG5sICBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKZG5sICBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSCmRubCAgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgpkbmwgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCmRubApkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBjcmVhdGUgY29uZmlndXJlLgoKQUNfSU5JVChmb250cy5kdGQpCgpkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25pbmcgICAgICAgICAgICAgIApkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmRubCBUaGlzIGlzIHRoZSBwYWNrYWdlIHZlcnNpb24gbnVtYmVyLCBub3QgdGhlIHNoYXJlZCBsaWJyYXJ5CmRubCB2ZXJzaW9uLiAgVGhpcyBzYW1lIHZlcnNpb24gbnVtYmVyIG11c3QgYXBwZWFyIGluIGZvbnRjb25maWcvZm9udGNvbmZpZy5oCmRubCBZZXMsIGl0IGlzIGEgcGFpbiB0byBzeW5jaHJvbml6ZSB2ZXJzaW9uIG51bWJlcnMuICBVbmZvcnR1bmF0ZWx5LCBpdCdzCmRubCBub3QgcG9zc2libGUgdG8gZXh0cmFjdCB0aGUgdmVyc2lvbiBudW1iZXIgaGVyZSBmcm9tIGZvbnRjb25maWcuaApBTV9JTklUX0FVVE9NQUtFKGZvbnRjb25maWcsIDIuMi4zKQpBTV9NQUlOVEFJTkVSX01PREUKCmRubCBsaWJ0b29sIHZlcnNpb25pbmcKCkxUX0NVUlJFTlQ9MQpMVF9SRVZJU0lPTj00CkFDX1NVQlNUKExUX0NVUlJFTlQpCkFDX1NVQlNUKExUX1JFVklTSU9OKQpMVF9BR0U9MAoKTFRfVkVSU0lPTl9JTkZPPSIkTFRfQ1VSUkVOVDokTFRfUkVWSVNJT046JExUX0FHRSIKQUNfU1VCU1QoTFRfVkVSU0lPTl9JTkZPKQoKTFRfQ1VSUkVOVF9NSU5VU19BR0U9YGV4cHIgJExUX0NVUlJFTlQgLSAkTFRfQUdFYApBQ19TVUJTVChMVF9DVVJSRU5UX01JTlVTX0FHRSkKCmRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKCkFDX1BST0dfQ0MKQUNfUFJPR19JTlNUQUxMCkFDX1BST0dfTE5fUwpBQ19MSUJUT09MX1dJTjMyX0RMTApBTV9QUk9HX0xJQlRPT0wKQUNfUFJPR19NQUtFX1NFVAoKZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpjYXNlICIkaG9zdCIgaW4KICAqLSotbWluZ3cqKQogICAgb3Nfd2luMzI9eWVzCiAgICA7OwogICopCiAgICBvc193aW4zMj1ubwplc2FjCkFNX0NPTkRJVElPTkFMKE9TX1dJTjMyLCB0ZXN0ICIkb3Nfd2luMzIiID0gInllcyIpCgppZiB0ZXN0ICIkb3Nfd2luMzIiID0gInllcyI7IHRoZW4KICBBQ19DSEVDS19QUk9HKG1zX2xpYnJhcmlhbiwgbGliLmV4ZSwgeWVzLCBubykKZmkKQU1fQ09ORElUSU9OQUwoTVNfTElCX0FWQUlMQUJMRSwgdGVzdCB4JG1zX2xpYnJhcmlhbiA9IHh5ZXMpCgpkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCkFDX0hFQURFUl9ESVJFTlQKQUNfSEVBREVSX1NUREMKQUNfQ0hFQ0tfSEVBREVSUyhbZmNudGwuaCBzdGRsaWIuaCBzdHJpbmcuaCB1bmlzdGQuaF0pCgojIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCkFDX0NfQ09OU1QKQUNfVFlQRV9QSURfVAoKIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgpBQ19GVU5DX1ZQUklOVEYKQUNfQ0hFQ0tfRlVOQ1MoW2dldGV1aWQgZ2V0dWlkIGxpbmsgbWVtbW92ZSBtZW1zZXQgbWtzdGVtcCBzdHJjaHIgc3RycmNociBzdHJ0b2wgZ2V0b3B0IGdldG9wdF9sb25nXSkKCiMKIyBDaGVja3MgZm9yIEZyZWVUeXBlCiMKCkFDX0FSR19XSVRIKGZyZWV0eXBlLWNvbmZpZywgWyAgLS13aXRoLWZyZWV0eXBlLWNvbmZpZz1QUk9HICAgVXNlIEZyZWVUeXBlIGNvbmZpZ3VyYXRpb24gcHJvZ3JhbSBQUk9HXSwgZnJlZXR5cGVfY29uZmlnPSR3aXRodmFsLCBmcmVldHlwZV9jb25maWc9eWVzKQoKaWYgdGVzdCAiJGZyZWV0eXBlX2NvbmZpZyIgPSAieWVzIjsgdGhlbiAKCUFDX1BBVEhfUFJPRyhmdF9jb25maWcsZnJlZXR5cGUtY29uZmlnLG5vKQoJaWYgdGVzdCAiJGZ0X2NvbmZpZyIgPSAibm8iOyB0aGVuCgkJQUNfTVNHX0VSUk9SKFtZb3UgbXVzdCBoYXZlIGZyZWV0eXBlIGluc3RhbGxlZDsgc2VlIGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnL10pCglmaQplbHNlCglmdF9jb25maWc9IiRmcmVldHlwZV9jb25maWciCmZpCgpGUkVFVFlQRV9DRkxBR1M9ImAkZnRfY29uZmlnIC0tY2ZsYWdzYCIKRlJFRVRZUEVfTElCUz0iYCRmdF9jb25maWcgLS1saWJzYCIKCkFDX1NVQlNUKEZSRUVUWVBFX0xJQlMpCkFDX1NVQlNUKEZSRUVUWVBFX0NGTEFHUykKCiMKIyBDaGVjayB0byBzZWUgd2hldGhlciB3ZSBoYXZlIEZUX0dldF9GaXJzdF9DaGFyKCksIG5ldyBpbiAyLjAuOQojCgpmb250Y29uZmlnX3NhdmVfbGlicz0kTElCUwpmb250Y29uZmlnX3NhdmVfY2ZsYWdzPSIkQ0ZMQUdTIgpMSUJTPSIkTElCUyAkRlJFRVRZUEVfTElCUyIKQ0ZMQUdTPSIkQ0ZMQUdTICRGUkVFVFlQRV9DRkxBR1MiCkFDX0NIRUNLX0ZVTkNTKEZUX0dldF9GaXJzdF9DaGFyIEZUX0dldF9OZXh0X0NoYXIgRlRfR2V0X0JERl9Qcm9wZXJ0eSkKQUNfQ0hFQ0tfTUVNQkVSKEZUX0JpdG1hcF9TaXplLnlfcHBlbSwKCQlIQVZFX0ZUX0JJVE1BUF9TSVpFX1lfUFBFTT0xLAoJCUhBVkVfRlRfQklUTUFQX1NJWkVfWV9QUEVNPTAsClsjaW5jbHVkZSA8ZnQyYnVpbGQuaD4KI2luY2x1ZGUgRlRfRlJFRVRZUEVfSF0pCkFDX0RFRklORV9VTlFVT1RFRChIQVZFX0ZUX0JJVE1BUF9TSVpFX1lfUFBFTSwkSEFWRV9GVF9CSVRNQVBfU0laRV9ZX1BQRU0sCgkJICAgW0ZUX0JpdG1hcF9TaXplIHN0cnVjdHVyZSBpbmNsdWRlcyB5X3BwZW0gZmllbGRdKQpDRkxBR1M9IiRmb250Y29uZmlnX3NhdmVfY2ZsYWdzIgpMSUJTPSIkZm9udGNvbmZpZ19zYXZlX2xpYnMiCgojCiMgQ2hlY2sgZXhwYXQgY29uZmlndXJhdGlvbgojCgpBQ19BUkdfV0lUSChleHBhdCwgICAgICAgICAgICAgWyAgLS13aXRoLWV4cGF0PURJUiAgICAgICAgICAgICAgVXNlIEV4cGF0IGluIERJUl0sIGV4cGF0PSR3aXRodmFsLCBleHBhdD15ZXMpCkFDX0FSR19XSVRIKGV4cGF0LWluY2x1ZGVzLCAgICBbICAtLXdpdGgtZXhwYXQtaW5jbHVkZXM9RElSICAgICBVc2UgRXhwYXQgaW5jbHVkZXMgaW4gRElSXSwgZXhwYXRfaW5jbHVkZXM9JHdpdGh2YWwsIGV4cGF0X2luY2x1ZGVzPXllcykKQUNfQVJHX1dJVEgoZXhwYXQtbGliLCAgICAgICAgIFsgIC0td2l0aC1leHBhdC1saWI9RElSICAgICAgICAgIFVzZSBFeHBhdCBsaWJyYXJ5IGluIERJUl0sIGV4cGF0X2xpYj0kd2l0aHZhbCwgZXhwYXRfbGliPXllcykKCmNhc2UgIiRleHBhdCIgaW4Kbm8pCgk7OwoqKQoJY2FzZSAiJGV4cGF0X2luY2x1ZGVzIiBpbgoJeWVzfG5vKQoJCUVYUEFUX0NGTEFHUz0iIgoJCTs7CgkqKQoJCUVYUEFUX0NGTEFHUz0iLUkkZXhwYXRfaW5jbHVkZXMiCgkJOzsKCWVzYWMKCWNhc2UgIiRleHBhdF9saWIiIGluCgl5ZXMpCgkJY2FzZSAiJGV4cGF0IiBpbgoJCXllcykKCQkJRVhQQVRfTElCUz0iLWxleHBhdCIKCQkJOzsKCQkqKQoJCQlFWFBBVF9MSUJTPSItTCRleHBhdC9saWIgLWxleHBhdCIKCQkJOzsKCQllc2FjCgkJOzsKCW5vKQoJCTs7CgkqKQoJCUVYUEFUX0xJQlM9Ii1MJGV4cGF0X2xpYiAtbGV4cGF0IgoJCTs7Cgllc2FjCgoJZXhwYXRzYXZlZF9DUFBGTEFHUz0iJENQUEZMQUdTIgoJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkRVhQQVRfQ0ZMQUdTIgoJZXhwYXRzYXZlZF9MSUJTPSIkTElCUyIKCUxJQlM9IiRMSUJTICRFWFBBVF9MSUJTIgoKCUFDX0NIRUNLX0hFQURFUihleHBhdC5oKQoJY2FzZSAiJGFjX2N2X2hlYWRlcl9leHBhdF9oIiBpbgoJbm8pCgkJQUNfQ0hFQ0tfSEVBREVSKHhtbHBhcnNlLmgpCgkJY2FzZSAiJGFjX2N2X2hlYWRlcl94bWxwYXJzZV9oIiBpbgoJCW5vKQoJCQloYXZlX2V4cGF0X2hlYWRlcj1ubzsKCQkJOzsKCQl5ZXMpCgkJCUhBVkVfWE1MUEFSU0VfSD0xCgkJCUFDX1NVQlNUKEhBVkVfWE1MUEFSU0VfSCkKCQkJQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfWE1MUEFSU0VfSCwkSEFWRV9YTUxQQVJTRV9ILAoJCQlbVXNlIHhtbHBhcnNlLmggaW5zdGVhZCBvZiBleHBhdC5oXSkKCQkJaGF2ZV9leHBhdF9oZWFkZXI9eWVzCgkJCTs7CgkJZXNhYwoJCTs7Cgl5ZXMpCgkJaGF2ZV9leHBhdF9oZWFkZXI9eWVzCgkJOzsKCWVzYWMKCWNhc2UgIiRoYXZlX2V4cGF0X2hlYWRlciIgaW4KCW5vKQoJCWV4cGF0PW5vCgkJOzsKCXllcykKCQlBQ19DSEVDS19GVU5DUyhYTUxfUGFyc2VyQ3JlYXRlKQoJCWNhc2UgIiRhY19jdl9mdW5jX1hNTF9QYXJzZXJDcmVhdGUiIGluCgkJbm8pCgkJCWV4cGF0PW5vCgkJCTs7CgkJeWVzKQoJCQlIQVZFX0VYUEFUPTEKCQkJQUNfU1VCU1QoSEFWRV9FWFBBVCkKCQkJQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfRVhQQVQsJEhBVkVfRVhQQVQsCgkJCVtGb3VuZCBhIHVzZWFibGUgZXhwYXQgbGlicmFyeV0pCgkJCTs7CgkJZXNhYwoJCTs7Cgllc2FjCglDUFBGTEFHUz0iJGV4cGF0c2F2ZWRfQ1BQRkxBR1MiCglMSUJTPSIkZXhwYXRzYXZlZF9MSUJTIgoJOzsKZXNhYwpBQ19TVUJTVChFWFBBVF9MSUJTKQpBQ19TVUJTVChFWFBBVF9DRkxBR1MpCgkKY2FzZSAiJGV4cGF0IiBpbgpubykKCUFDX01TR19FUlJPUihbY2Fubm90IGZpbmQgZXhwYXQgbGlicmFyeV0pCgk7Owplc2FjCgojCiMgU2V0IGRlZmF1bHQgZm9udCBkaXJlY3RvcnkKIwoKQUNfQVJHX1dJVEgoZGVmYXVsdC1mb250cywgICAgIFsgIC0td2l0aC1kZWZhdWx0LWZvbnRzPURJUiAgICAgIFVzZSBmb250cyBmcm9tIERJUiB3aGVuIGNvbmZpZyBpcyBidXN0ZWRdLCBkZWZhdWx0X2ZvbnRzPSIkd2l0aHZhbCIsIGRlZmF1bHRfZm9udHM9eWVzKQoKY2FzZSAiJGRlZmF1bHRfZm9udHMiIGluCnllcykKCWlmIHRlc3QgIiRvc193aW4zMiIgPSAieWVzIjsgdGhlbgoJCUZDX0RFRkFVTFRfRk9OVFM9IldJTkRPV1NGT05URElSIgoJCUFDX0RFRklORV9VTlFVT1RFRChGQ19ERUZBVUxUX0ZPTlRTLCAiV0lORE9XU0ZPTlRESVIiLCAKCQkJCSAgIFtXaW5kb3dzIGZvbnQgZGlyZWN0b3J5XSkKCWVsc2UKCQlGQ19ERUZBVUxUX0ZPTlRTPSIvdXNyL3NoYXJlL2ZvbnRzIgoJCUFDX0RFRklORV9VTlFVT1RFRChGQ19ERUZBVUxUX0ZPTlRTLCAiL3Vzci9zaGFyZS9mb250cyIsIAoJCQkJICAgW1N5c3RlbSBmb250IGRpcmVjdG9yeV0pCglmaQoJOzsKKikKCUZDX0RFRkFVTFRfRk9OVFM9IiRkZWZhdWx0X2ZvbnRzIgoJQUNfREVGSU5FX1VOUVVPVEVEKEZDX0RFRkFVTFRfRk9OVFMsICIkZGVmYXVsdF9mb250cyIsCgkJCSAgIFtTeXN0ZW0gZm9udCBkaXJlY3RvcnldKQoJOzsKZXNhYwoKQUNfU1VCU1QoRkNfREVGQVVMVF9GT05UUykKCiMKIyBBZGQgbW9yZSBmb250cyBpZiBhdmFpbGFibGUuICBCeSBkZWZhdWx0LCBhZGQgb25seSB0aGUgZGlyZWN0b3JpZXMKIyB3aXRoIG91dGxpbmUgZm9udHM7IHRob3NlIHdpdGggYml0bWFwcyBjYW4gYmUgYWRkZWQgYXMgZGVzaXJlZCBpbgojIGxvY2FsLmNvbmYgb3Igfi8uZm9udHMuY29uZgojCkFDX0FSR19XSVRIKGFkZC1mb250cywgICAgICAgIFsgIC0td2l0aC1hZGQtZm9udHM9RElSMSxESVIyLC4uLkZpbmQgYWRkaXRpb25hbCBmb250cyBpbiBESVIxLERJUjIsLi4uIF0sIGFkZF9mb250cz0iJHdpdGh2YWwiLCBhZGRfZm9udHM9eWVzKQoKY2FzZSAiJGFkZF9mb250cyIgaW4KeWVzKQoJRkNfQUREX0ZPTlRTPSIiCglmb3IgZGlyIGluIC91c3IvWDExUjYvbGliL1gxMSAvdXNyL1gxMS9saWIvWDExIC91c3IvbGliL1gxMTsgZG8KCQljYXNlIHgiJEZDX0FERF9GT05UUyIgaW4KCQl4KQoJCQlpZiB0ZXN0IC1kICIkZGlyL2ZvbnRzIjsgdGhlbgoJCQkJZm9yIHN1YiBpbiAiJGRpciIvZm9udHMvKjsgZG8KCQkJCQlpZiBscyAiJHN1YiIgfCBncmVwIC1xIC1pICdcLnBmXHxcLnR0XHxcLm90JzsgdGhlbgoJCQkJCQljYXNlIHgkRkNfQUREX0ZPTlRTIGluCgkJCQkJCXgpCgkJCQkJCQlGQ19BRERfRk9OVFM9IiRzdWIiCgkJCQkJCQk7OwoJCQkJCQkqKQoJCQkJCQkJRkNfQUREX0ZPTlRTPSIkRkNfQUREX0ZPTlRTLCRzdWIiCgkJCQkJCQk7OwoJCQkJCQllc2FjCgkJCQkJZmkKCQkJCWRvbmUKCQkJZmkKCQkJOzsKCQllc2FjCglkb25lCglBQ19ERUZJTkVfVU5RVU9URUQoRkNfQUREX0ZPTlRTLCIkYWRkX2ZvbnRzIixbQWRkaXRpb25hbCBmb250IGRpcmVjdG9yaWVzXSkKCTs7Cm5vKQoJRkNfQUREX0ZPTlRTPSIiCgk7OwoqKQoJRkNfQUREX0ZPTlRTPSIkYWRkX2ZvbnRzIgoJQUNfREVGSU5FX1VOUVVPVEVEKEZDX0FERF9GT05UUywiJGFkZF9mb250cyIsW0FkZGl0aW9uYWwgZm9udCBkaXJlY3Rvcmllc10pCgk7Owplc2FjCgpBQ19TVUJTVChGQ19BRERfRk9OVFMpCgpGQ19GT05UUEFUSD0iIgoKY2FzZSAiJEZDX0FERF9GT05UUyIgaW4KIiIpCgk7OwoqKQoJRkNfRk9OVFBBVEg9YGVjaG8gJEZDX0FERF9GT05UUyB8IHNlZCAtZSAncy9eLzxkaXI+LycgLWUgJ3MvJC88XC9kaXI+LycgLWUgJ3MvLC88XC9kaXI+IDxkaXI+L2cnYAoJOzsKZXNhYwoKQUNfU1VCU1QoRkNfRk9OVFBBVEgpCgpGQ19GT05UREFURT1gZGF0ZWAKCkFDX1NVQlNUKEZDX0ZPTlREQVRFKQoKQUNfQVJHX1dJVEgoY29uZmRpciwgICAgICAgICAgIFsgIC0td2l0aC1jb25mZGlyPURJUiAgICAgICAgICAgIFVzZSBESVIgdG8gc3RvcmUgY29uZmlndXJhdGlvbiBmaWxlcyAoZGVmYXVsdCAvZXRjL2ZvbnRzKV0sIGNvbmZkaXI9IiR3aXRodmFsIiwgY29uZmRpcj15ZXMpCgojCiMgU2V0IENPTkZESVIgYW5kIEZPTlRDT05GSUdfUEFUSAojCgpjYXNlICIkY29uZmRpciIgaW4Kbm98eWVzKQoJY29uZmRpcj0nJHtzeXNjb25mZGlyfScvZm9udHMKCTs7CiopCgk7Owplc2FjCkFDX1NVQlNUKGNvbmZkaXIpCkNPTkZESVI9JHtjb25mZGlyfQpBQ19ERUZJTkVfVU5RVU9URUQoQ09ORkRJUiwgIiRDT05GRElSIixbRm9udCBjb25maWd1cmF0aW9uIGRpcmVjdG9yeV0pCkFDX1NVQlNUKENPTkZESVIpCgojCiMgRmluZCBvdXQgd2hhdCBsYW5ndWFnZSBvcnRob2dyYXBoaWVzIGFyZSBpbmNsdWRlZAojCgpPUlRIX0ZJTEVTPWBjZCAke3NyY2Rpcn0vZmMtbGFuZyAmJiBlY2hvICoub3J0aGAKQUNfU1VCU1QoT1JUSF9GSUxFUykKCiMKIyBMZXQgcGVvcGxlIG5vdCBidWlsZC9pbnN0YWxsIGRvY3MgaWYgdGhleSBkb24ndCBoYXZlIGRvY2Jvb2sKIwoKQUNfQ0hFQ0tfUFJPRyhIQVNET0NCT09LLCBkb2Nib29rMmh0bWwsIHllcywgbm8pCgpBQ19BUkdfRU5BQkxFKGRvY3MsICAgICAgICAgICBbICAtLWRpc2FibGUtZG9jcyAgICAgICAgICAgICAgICBEb24ndCBidWlsZCBhbmQgaW5zdGFsbCBkb2N1bWVudGF0aW9uXSwsZW5hYmxlX2RvY3M9eWVzKQoKaWYgdGVzdCAieCRlbmFibGVfZG9jcyIgPSB4eWVzOyB0aGVuCiAgaWYgdGVzdCAieCRIQVNET0NCT09LIiAhPSB4eWVzOyB0aGVuCiAgICBlbmFibGVfZG9jcz1ubwogIGZpCmZpCgpBTV9DT05ESVRJT05BTChFTkFCTEVfRE9DUywgdGVzdCAieCRlbmFibGVfZG9jcyIgPSB4eWVzKQoKIwojIEZpZ3VyZSBvdXQgd2hlcmUgdG8gaW5zdGFsbCBkb2N1bWVudGF0aW9uCiMKCkFDX0FSR19XSVRIKGRvY2RpciwgICAgICAgICAgIFsgIC0td2l0aC1kb2NkaXI9RElSICAgICAgICAgICAgIFVzZSBESVIgdG8gc3RvcmUgZG9jdW1lbnRhdGlvbiBmaWxlcyAoZGVmYXVsdCAke2RhdGFkaXJ9L2RvYy9mb250Y29uZmlnKV0sIGNvbmZkaXI9IiR3aXRodmFsIikKCmlmIHRlc3QgIngkd2l0aF9kb2NkaXIiID0gIngiIDsgdGhlbgogIERPQ0RJUj0nJHtkYXRhZGlyfS9kb2MvZm9udGNvbmZpZycKZWxzZQogIERPQ0RJUj0kd2l0aF9kb2NkaXIKZmkKCkFDX1NVQlNUKERPQ0RJUikKCkFDX09VVFBVVChbCk1ha2VmaWxlIApmb250Y29uZmlnL01ha2VmaWxlCmZjLWxhbmcvTWFrZWZpbGUKc3JjL01ha2VmaWxlCnNyYy9mb250Y29uZmlnLmRlZgpmYy1jYWNoZS9NYWtlZmlsZQpmYy1saXN0L01ha2VmaWxlCmRvYy9NYWtlZmlsZQpkb2MvdmVyc2lvbi5zZ21sCnRlc3QvTWFrZWZpbGUKZm9udGNvbmZpZy5zcGVjCmZvbnRjb25maWcucGMKZm9udHMuY29uZgpmb250Y29uZmlnLXppcApdKQo=